c - 在 C 中注册回调函数

标签 c callback kernel space

我是一些 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/

相关文章:

c - 通过递归在c中制作命令

想不通C中pow()函数的计算

"if"语句的代码生成 - 编译器

javascript - 为什么我的 Google 身份验证在 Firebase 中不起作用?

linux - 使用结构来设置功能

c - 使用未命名管道编写我自己的 Linux shell

javascript - 带有附加参数的django dajaxice javascript回调

sockets - Lisp : Is there a callback that informs that a connection from open-socket has just dropped?

linux - 在 i386 的 linux 内核 2.6.11 中,此内联汇编 (:"0"(THREAD_SIZE - 1)) 的含义是什么

linux - Linux 3.2 内核与 2.6 内核的不平衡套接字接受