首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调度中断处理程序

调度中断处理程序
EN

Stack Overflow用户
提问于 2013-04-24 16:40:54
回答 1查看 779关注 0票数 1

我有一个Linux设备驱动程序,它使用中断处理程序来完成它的工作。

如何安排每一个X毫秒(中断行被中断)调用的中断处理程序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-24 17:14:42

假设您只是为了调试的目的,直到您修复中断行,您可以尝试在timer_interrupt中的arch/*/kernel/time.c中调用您的ISR (减去其上下文保存代码),然后再重新启用中断。如果你需要一个比滴答源慢的速度,你就必须添加一些代码来使它只触发Y中的一个。

如果在中断上下文中运行ISR不是您的目标,并且您只想让底层的驱动程序代码定期运行,您可以使用timer API而不是黑客timer_interrupt。在这种情况下,您的ISR代码将不会在中断上下文中执行。

如果您需要一个比滴答源更快的速度,您可能需要使用高精度计时器。在这里,您实际上不会在中断上下文中执行。

有一个很好的介绍高精度定时器和计时器API的这里。在手册页中有一个示例用户空间定时器。对于内核空间定时器,您需要hrtimer_init()hrtimer_start()。有一个例子: hrtimer 这里。为了使它定期工作,我想每次计时器启动或在这个hrtimer_forward( )中使用硒柱解决方案时,您都会重新设置计时器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16197574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档