1

我是一些 Linux 内核空间代码。我希望用户空间中的应用程序能够通过调用内核空间代码中的函数并传递该回调函数的地址来在内核空间代码中注册回调函数。然后,内核空间代码将在稍后运行时执行回调函数。我相信内核空间代码应该是这样的:

typedef void (*callback_func) (void);
callback_func callback;

static void registerCallBack(callback_func funct){callback = funct;}

//another kernel space method
funct();

但是,我对正确的 typedef 以及它是否能正常工作有点不确定。任何人都可以确认此功能或在这方面提供任何建议吗?我现在无法测试这个,因为我正在等待内核空间代码的其余部分完成。

4

3 回答 3

1

typedef看起来不错,虽然我建议重命名callback_func为类似的东西callback_func_t,否则它看起来像一个变量而不是一个类型。

于 2012-05-31T16:05:07.663 回答
1

您不能直接从内核调用用户空间函数。一种可能的解决方案是使用信号。您可以从内核代码向给定进程发送信号。信号处理程序将作为一种回调函数工作。

于 2012-05-31T17:04:07.327 回答
0

如果您只是想从内核运行用户空间应用程序,那么将详细描述如何执行此操作。

于 2012-06-01T18:02:13.287 回答