LINUX设备驱动程序(第3版) 第一章介绍了驱动开发和设计的基本概念与原则。主要内容为:
1.驱动程序旨在提供机制而非策略。策略是上层应用软件提供的。驱动程序提供机制意味着提供硬件可以实现的功能。所以,编写访问硬件的内核代码时不要给用户强加任何特定的策略。
2.驱动程序开发的特征在于:异步操作和同步操作都支持,允许被多次打开,充分利用硬件特性,不具备用来简化任务或提供共与策略相关的软件层。
3.内核功能包括:进程管理,内存管理,文件系统,设备控制,网络功能。(注:文件系统不是驱动程序,不与任何硬件设备关联。只是表示一种数据组织的方式)
4.可装载模块的概念:模块是指在运行时添加到内核中的代码。添加是需要特定权限用户才能执行的操作。链接的操作原语是insmod,移除链接的操作原语是rmmod。
在设计上,原则上针对每个新功能通过新增模块的方式实现,以提升伸缩性和扩展性。
5.安全:原则上安全策略由高层控制,但是对应影响整个系统的设备访问需要进行一定的控制。
6.GPL:允许重新发行甚至销售由gpl 条款保护的产品,前提是产品接收者能获得源码并拥有相同的权利。如果二进制文件中仅适用公开的内核接口那么允许只发行二进制文件。
7.版本兼容性:原则上不同内核版本之间不保证二进制文件的兼容性。如果需要给内核打补丁,必须执行GPL。