我希望能够用Linux内核模块“捕获”一个hrtimer中断,并在稍后的时间段重放该中断。关于如何做到这一点的任何想法?
用例:一个调用sleep(1)的程序。我的模块将在1秒后触发时捕获hrtimer中断,等待'x'时间,然后重新触发中断,唤醒进程。
注意:我不想挂接睡眠系统调用。
谢谢!
答案 0 :(得分:0)
老实说,编写Linux内核模块只是为了修改单个应用程序sleep()
的行为听起来有点过分。
对于大多数情况,您应该能够使用自己的实现use a preloadable shared object to intercept/override sleep()
函数系列。应用程序将调用您的实现,然后您的代码可以使用修改的参数列表调用 real 函数。
这种方法比涉及内核编程的任何方法都简单得多且侵入性小,但如果你的应用程序是静态链接的,或者它使用直接系统调用而不是库函数,它将无效。