免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2491 | 回复: 6
打印 上一主题 下一主题

linux中断上半部能开内核线程吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-09 13:54 |只看该作者 |倒序浏览
中断中没有进程上下文,按理说应该不行。我想听听大家的看法。

论坛徽章:
0
2 [报告]
发表于 2008-07-09 14:02 |只看该作者
原帖由 hui03090402 于 2008-7-9 13:54 发表
中断中没有进程上下文,按理说应该不行。我想听听大家的看法。

当然可以,重新设计一下就会可以了。
看你对上半部如何定义,如果连中断开始时保存上下文的几行汇编也算进去,那只能用x86的task gate替代interrupt gate,一进来就是进程上下文。
如果允许少量几行汇编,可以后面的部分全部设计用内核线程做,就像其它操作系统做的那样。

论坛徽章:
0
3 [报告]
发表于 2008-07-09 14:07 |只看该作者
谢谢啦。我用的是powerpc系统,是硬件中断中想开线程。我试试。

论坛徽章:
0
4 [报告]
发表于 2008-07-09 14:34 |只看该作者

回复 #2 zx_wing 的帖子

估计lz说的是普通的driver中的isr例程, 不是从中断一发生就开始算的。  

这个是不行的,因为会睡眠,建议直接用schedule_work把工作交给work queue来做。

论坛徽章:
0
5 [报告]
发表于 2008-07-09 15:55 |只看该作者
楼上的说的对。我现在就是用work_queue。但是我发现work_queue的相应时间很不及时。他的进程优先级很低。所以我想用内核线程来提高相应及时性。

论坛徽章:
0
6 [报告]
发表于 2008-07-12 20:20 |只看该作者
上半部开内核线程?肯定不行
上半部明明是在中断上下文怎么能和进程扯上关系?
work_queue性能不好的话,你可以使用softirq啊
而且我猜你应该是用的系统默认的工作者线程来处理你的work,这样的话你可以自己创建自己的workqueue和工作者线程,让你的work独享一个工作者线程

论坛徽章:
0
7 [报告]
发表于 2008-07-12 21:34 |只看该作者
说实话除了kernel_thread这个函数可能引起睡眠外,我还真想不出有什么原因不能在上半部开内核线程
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP