全部博文(5)
发布时间:2015-12-21 10:43:50
题记:以开启CONFIG_RAETH_NAPI宏为例分析,只对网卡驱动的工作流程进行分析,不分析具体的处理过程。主要文件linux-2.6.36.x/drivers/net/raeth/raether.c和linux-2.6.36.x/net/core/dev.c。设备启动时,设备注册流程分析:1、开机启动,操作系统起来时,网卡驱动的初始化函数ra2882eth_init会被执行,ra2882e.........【阅读全文】
发布时间:2015-12-21 10:37:19
tasklet是基于软中断实现的一种下半部机制。tasklet和软中断在本质上很相似,行为表现也很相近。tasklet的实现:tasklet有两类软中断代表:HI_SOFTIRQ和TASKLET_SOFTIRQ,这两者之间唯一的实际区别在于,HI_SOFTIRQ类型的软中断先于TASKLET_SOFTIRQ类型的软中断执行。 tasklet结构体,.........【阅读全文】
发布时间:2015-12-21 10:35:49
软中断的实现:软中断由结构体softirq_action表示,定义在<linux/interrupt.h>中:struct softirq_action { void (*action)(struct softirq_action *);//这里技巧性很强,方便在日后需要时往softirq_action结构体中添加成员,而又不改变原有的函数接口};软中断是在编译期间静态分配的,在k.........【阅读全文】
发布时间:2015-12-21 10:29:29
自旋锁: 1、中断处理程序与下半部之间共享数据时,应该如何加锁? 答:由于中断处理程序会异步于其他任何程序执行,所以在下半部中对共享数据进行操作前,必须要禁止本地中断,然后获取锁。 可用的锁接口推荐使用spin_lock_irqsave(保存中断状态->禁止本地中断->获取锁)和spin_un.........【阅读全文】