第一讲 引言 本文将仍然秉承《Linux Device Drivers》一书以实例为主的风格,但是实例的背景将非常简单,以求使读者能将集中精力于Linux设备驱动本身,理解Linux内核模块、Linux设备驱动的结构、Linux设备驱动中的并发控制等内容。 [
全文阅读]
第二讲 Linux内核模块 Linux设备驱动属于内核的一部分,Linux内核的一个模块可以以两种方式被编译和加载。 [
全文阅读]
第三讲 字符设备驱动程序 Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过这些函数使得Windows的设备操作犹如文件一般。 [
全文阅读]
第四讲 设备驱动中的并发控制 在驱动程序中,当多个线程同时访问相同的资源时(驱动程序中的全局变量是一种典型的共享资源),可能会引发"竞态",因此我们必须对共享资源进行并发控制。 [
全文阅读]
第五讲 设备的阻塞与非阻塞操作 阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。 [
全文阅读]
第六讲 设备驱动中的异步通知 结合阻塞与非阻塞访问、poll函数可以较好地解决设备的读写,但是如果有了异步通知就更方便了。异步通知的意思是:一旦设备就绪,则主动通知应用程序。
[全文阅读]
第七讲 设备驱动中的中断处理 与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq()。 [
全文阅读]
第八讲 定时器 Linux内核中定义了一个timer_list结构,我们在驱动程序中可以利用。 [
全文阅读]
第九讲 内存与I/O操作 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统。 [
全文阅读]
第十讲 结构化设备驱动程序 在1~9节关于设备驱动的例子中,我们没有考虑设备驱动程序的结构组织问题。实际上,Linux设备驱动的开发者习惯于一套约定俗成的数据结构组织方法和程序框架。 [
全文阅读]
第十一讲 复杂设备驱动 这里所说的复杂设备驱动涉及到PCI、USB、网络设备、块设备等,这些设备的驱动中又涉及到一些与特定设备类型相关的较为复杂的数据结构和程序结构。 [
全文阅读]
阅读(3041) | 评论(0) | 转发(1) |