我是一些 Linux 内核空间代码。我希望用户空间中的应用程序能够通过调用内核空间代码中的函数并传递该回调函数的地址来在内核空间代码中注册回调函数。内核空间代码将在稍后运行时执行回调函数。我相信内核空间代码应该是这样的:
typedef void (*callback_func) (void);
callback_func callback;
static void registerCallBack(callback_func funct){callback = funct;}
//another kernel space method
funct();
但是,我有点不确定正确的 typedef 以及它是否能正常工作。任何人都可以确认此功能或在这方面提供任何建议吗?我现在无法对此进行测试,因为我正在等待其余的内核空间代码完成。
最佳答案
您不能直接从内核调用用户空间函数。一种可能的解决方案是使用 signals .您可以从内核代码向给定进程发送信号。然后信号处理程序将作为一种回调函数工作。
关于c - 在 C 中注册回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10836702/