在我的linux 2.6内核模块中,我通过kernel_thread函数创建了一个内核线程,并将第三个参数指定为SIGCHLD。因此,当此子线程退出时,它将向父进程发送SIGCHLD信号。相应地,在父进程中如果存在未决信号SIGCHLD,我希望它等待任何子线程的终止。
我知道在用户空间linux中提供了waitpid系统调用。我们可以像使用它一样 waitpid(-1,0,WNOHANG)。我正在寻找的是waitpid的替代品,可以在内核模块中使用。
是否有这样的替代或其他可能的机制?
答案 0 :(得分:1)
首先,您不能调用名为“sys_”的内核函数,因为这些函数是从用户空间进程调用的。传递的任何地址必须是用户空间地址,而不是内核地址。另一方面,名为“do_”的函数旨在使用内核上下文进行访问。
你应该熟悉Bovet / Cesati:
在尝试之前。