static inline void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p)
是等待队列的基础适用函数之一,之前的博文已经给出过等待队列的用法了
这个函数的作用是用新进程来初始化队列
static inline void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p)
{
q->flags = 0;
q->private = p;
q->func = default_wake_function;
}
可见这里等待队列到期执行的函数default_wake_function主要用来wakeup当前thread。
static inline void
init_waitqueue_func_entry(wait_queue_t *q, wait_queue_func_t func)
{
q->flags = 0;
q->private = NULL;
q->func = func;
}
通过init_waitqueue_func_entry 可以指定等待队列到期执行的函数为用户指定的函数。即等待队列到期
不一定非得执行wakeup函数.可以检测一个条件,如果这个条件成立的话再调用default_wake_function来
唤醒进程。
进程调度API之init_waitqueue_entry
最新推荐文章于 2024-07-21 11:35:42 发布