我有一个 linux 内核模块,我必须实现一个 TCP 服务器和多个客户端来发送一些流量。我有一个问题,
现在在服务器端,我有一个 main-kthread,一旦它看到等待接受的 TCP 连接就会产生另一个 kthread。现在在主 kthread 产生后说几个 kthreads 我如何将 main-kthread 置于等待状态以确保其他 kthreads 在 main-kthread 可以退出之前退出。
我正在寻找类似于 phtread-join 语义的东西,但我在 Linux 内核空间中需要它。
我找不到这样的 kthread_join,我正在寻找替代方案。我确实读过关于等待队列的内容。因此正在查看interruptible_sleep_on() 和wake_up()。但我无法弄清楚如何使用这些 API。
例如,
在主线程中,我做了一个interruptible_sleep_on,那么谁来唤醒他呢?所有其他线程,还是最后一个线程?我如何确定谁是最后一个退出的线程?还有如何确保当这个 main-kthread 被唤醒时,其他线程已经退出。