0

我想以内核作为客户端在内核模块和用户应用程序之间建立连接。换句话说,内核将向用户应用程序发送消息,等待回复,接收回复,然后继续执行。

例如,在内核内部我将发送消息然后等待回复。

// inside kernel
nlmsg_unicast();

wait_until_user_reply();

/* process reply */
/* continue execution.. */

在用户内部时,

while (1) {
   // inside user
   recvmsg();

   /* assembly reply.. */

   sendmsg();
}

然而,netlink 协议所做的是每次用户发送消息时调用一个回调函数。我想要的是让内核等待用户的回复,然后继续执行。在回调函数内部更新的全局变量的繁忙循环中等待是否可行?我试过了,但我认为这不是一个很好的解决方案。

我可以做类似“睡觉直到回复来”之类的事情吗?我可以让内核休眠吗?

4

1 回答 1

1

我已经使用 wait_for_completion 解决了这个问题。事实证明,这并不难。

于 2013-12-04T07:11:57.073 回答