中断上下文笔记

一、中断是一个很霸道的角色,可以打断进程的运行,如果中断长时间处理会导致正常运行的进程无法正常运行,因此中断要尽量快速运行,时间尽量短

二、linux内核将中断分成两个部分,中断上半部就是驱动代码中的中断处理函数运行处理速度快的程序,中断下半部运行处理时间慢,负责的程序。当然如果中断处理时间快,可以只实现中断上半部。

三、中断下半部的三种实现方式:

                 ①softirq   软中断:处理比较快,是内核级别的机制,需要修改整个内核源码,不推荐也不常用

                 ②tasklet :内部实现实际调用了softirq,运行在中断上下文,不可执行阻塞性质的函数,例如kmalloc,sleep

                 ③workqueue:工作队列,运行在进程上下文,可以执行阻塞性质的函数。

四、如何调用tasklet

                 ①module_init中初始化tasklet调用  task_init

                 ②在中断上半部中调用tasklet_schudule()放入内核线程中,启动中断下半部

                 ③内核线程等待中断上半部唤醒中断下半部的回调函数,通知给应用程序

                 ④调用tasklet_kill卸载tasklet

五、如何调用workqueue

                 ①module_init中初始化workqueue调用  INIT_WORK

                 ②在中断上半部中调用schudule_work()放入内核线程中,启动中断下半部

                 ③内核线程等待中断上半部唤醒中断下半部的回调函数,通知给应用程序

                 ④调用 卸载workqueue

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值