本帖最后由 lonerzf 于 2014-7-21 15:21 编辑
参考文章:blog.csdn.net/lwj103862095/article/details/17511867 hi.baidu.com/513773348/item/9952025f34e8f611db1635ef
花了一天时间,对字符驱动里入门时较常出现的一些函数做了整理。 一、内核的中断体系
ARM架构linux内核中,有5种常见的异常,其中中断异常是其一,Linux内核将所有中断统一编号,使用一个irq_desc结构体来描述这些中断,里面记录了中断名称、中断状态、中断标记、并提供了中断的底层硬件访问函数(如:清除、屏蔽、使能中断),提供了这个中断的处理函数入口,通过它还可以调用用户注册的的中断处理函数。
二、irq_desc结构体
Linux内核将中断统一编号,并使用irq_desc结构数组来描述中断。
三、使用request_irq向内核注册中断
四、中断释放函数free_irq
五、linux进程的休眠
使用wait_event函数,其扩展型常用的函数为 wait_event_interruptible(wq, condition); 表明它是一个可被中断打断的休眠。 wq是一个等待队列,condition是条件,如果condition = 0,则将会进行休眠,直到condition = 1,并且有唤醒函数唤醒它。
六、linux进程的唤醒
使用wait_up函数,其扩展型常用的函数为wake_up_interruptible(wq),wq与wait_event_interruptible的wq是一致的。 不能直接使用wait_event_interruptible和wake_up_interruptible函数。必须事先使用static DECLARE_WAIT_QUEUE_HEAD(wq)定义并初始化一个等待队列头,并设置condition条件变量。
七、copy_to_user
八、file_operations结构体
这里,红色的函数是入门常见的几个字段,特别标明。
九、register_chrdev
十、class_create
十一、device_create
可以对照附件内驱动查看以上内容。
|