《Linux设备驱动开发详解》读书笔记(4)

第一章,   中断与时钟

申请irq,request_irq(irq, handler, flags, name, dev)。Flags一般有触发方式,SHARED等。用devm_request_irq()不需要free。

使能,enable_irq(irq)。使能某个中断。

开关本CPU上的所有中断, local_irq_save(flags),local_irq_restore(flags)。

下半部,tasklet。创建,DECLARE_TASKLET()。触发,tasklet_schedule()。运行在软中断的上下文中,不可睡眠。

下半部,工作队列,WORK。创建,INIT_WORK()。触发,schedule_work()。 运行在内核线程上下文,可以睡眠。

软中断,softirq。注册,open_softirq()。触发,raise_softirq()。用得很少,只有HI_SOFTIRQ,TIMER_SOFTIRQ,NET_TX_SOFTIRQ,NET_RX_SOFTIRQ, SCSI_SOFTIRQ,TASKLET_SOFTIRQ。

优先级是中断高于软中断,软中断高于线程。

下半部可以关闭,local_bh_enable()/disable()。

申请中断还可以通过request_threaded_irq(),则thread_fn运行于线程上下文。中断处理程序中返回IRQ_WAKE_THREAD,则触发该线程。

中断共享。申请时设置IRA_SHARED。在handler中检查,如果非自己的中断,则返回IRQ_NONE,否则返回IRQ_HANDLED。

定时器,struct

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值