我是 linux 内核编程的新手。我正在开发一个简单的可加载内核模块,只要调度程序运行队列发生变化(rq_rt仅说),它就需要信息。所以我需要从调度程序的函数( , 等....)向我的内核模块(比如 a or 在我的模块中)发送信号或interrupt中断。signal handlerenqueue_rtdequeue_rtcurrent_premept
谁能建议一种如何发送此类信号或中断的方法?
我是 linux 内核编程的新手。我正在开发一个简单的可加载内核模块,只要调度程序运行队列发生变化(rq_rt仅说),它就需要信息。所以我需要从调度程序的函数( , 等....)向我的内核模块(比如 a or 在我的模块中)发送信号或interrupt中断。signal handlerenqueue_rtdequeue_rtcurrent_premept
谁能建议一种如何发送此类信号或中断的方法?
是的。最后我得到了解决方案。我们可以利用内核跟踪机制,ftrace。这不需要任何内核修改,但我们可以挂钩到不受跟踪保护的内核函数。
更多详细信息可在此处获得
此外,为了获得有效的解决方案,您可以使用内核源代码中的函数指针。
但这里的问题是你必须修改 Linux 源代码。进行此类修改时要非常小心。
而已...!!!您将从内核例程中获得一个函数调用。还要确保在退出模块时,将符号恢复为 NULL,否则内核将崩溃。