我看到在sys_wait4
(通过调用wait()
或waitpid()
到达)中,我们将当前进程插入到一个特殊队列中,该队列保存在其结构体task中:
DECLARE_WAITQUEUE(wait, current);
add_wait_queue(¤t->wait_chldexit,&wait);
所以如果我想检查某个进程是否由于调用wait()
或waitpid()
而等待,我需要检查它是否在自己的(???)wait_chldexit队列?
所以只有进程本身可以插入到它自己的wait_chldexit队列中?
我写对了吗?
是的,waitqueue current->wait_chldexit
可以包含当前进程的单个元素,也可以包含所有的非元素。
没有人唤醒waitqueue,等待被子线程发出的信号打断。
通过检查某个线程的waitqueue,您可以检测该线程是否在wait()
或waitpid()
调用中被阻塞。