摘要: 在学习Linux驱动的过程中,遇到一个宏叫做container_of。 该宏定义在include/linux/kernel.h中,首先来贴出它的代码: /** * container_of - cast a member of a structure out to the containing st 阅读全文
posted @ 2015-04-07 14:17 跑马灯的忧伤 阅读(279) 评论(0) 推荐(0) 编辑
摘要: tasklet Tasklet的使用比较简单,只需要定义tasklet及其处理函数并将两者关联 例子: Void my_tasklet_func(unsigned long) DECLARE_TASKLET(my_tasklet.my_tasklet_func,data) 代码DECLARE_TAS 阅读全文
posted @ 2015-04-07 11:24 跑马灯的忧伤 阅读(1230) 评论(0) 推荐(0) 编辑
摘要: 自旋锁 自旋锁(spinlock)是用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁。自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡眠阻塞。自旋锁的忙等待 阅读全文
posted @ 2015-04-07 11:10 跑马灯的忧伤 阅读(931) 评论(0) 推荐(0) 编辑
摘要: [驱动注册]platform_driver_register()与platform_device_register() 设备与驱动的两种绑定方式:在设备注册时进行绑定及在驱动注册时进行绑定。 以一个USB设备为例,有两种情形: (1)先插上USB设备并挂到总线中,然后在安装USB驱动程序过程中从总线 阅读全文
posted @ 2015-04-07 11:01 跑马灯的忧伤 阅读(781) 评论(0) 推荐(0) 编辑