可以用等待队列来实现进程的阻塞;
操作方法:
1、定义等待队列
wait_queue_head_t my_queue;
2、初始化等待队列
int_waitqueue_head(&my_queue)
3、定义并初始化等待队列
DECLARE_WAIT_QUEUE_HEAD(my_queue)
4、有条件睡眠
(1)wait_event(queue, condition)
注:当condition(一个布尔表达式)为真时,立即返回;否则让进程进入TASK_UNINTERRUPTIBLE模式的
睡眠,并挂在queue参数所指定的等待队列上。
(2)wait_event_interruptible(queue, condition)
注:当condition(一个布尔表达式)为真时,立即返回;否则让进程进入TASK_INTERRUPTIBLE模式的睡
眠,并挂在queue参数所指定的等待队列上。
(3)wait_event_killable(queue, condition)
注:当condition(一个布尔表达式)为真时,立即返回;否则让进程进入TASK_KILLABLE模式的睡眠,并
挂在queue参数所指定的等待队列上。
5、无条件睡眠
(1)sleep_on(wait_queue_head_t *q)
注:让进程进入不可中断的睡眠,并把它放入等待队列
(2)interruptible_sleep_on(wait_queue_head_t *q)
注:让进程进入可中断的睡眠,并把它放入等待队列。
6、从等待队列中唤醒进程
(1)wake_up(wait_queue_t *q)
注:从等待队列q中唤醒状态为TASK_UNINTERRUPTIBLE、TASK_INTERRUPTIBLE、TASK_KILLABLE的所有进
程。
(2)wake_up_interruptible(wait_queue_t *q)
注:从等待队列q中唤醒状态为TASK_INTERRUPTIBLE的进程。
操作方法:
1、定义等待队列
wait_queue_head_t my_queue;
2、初始化等待队列
int_waitqueue_head(&my_queue)
3、定义并初始化等待队列
DECLARE_WAIT_QUEUE_HEAD(my_queue)
4、有条件睡眠
(1)wait_event(queue, condition)
注:当condition(一个布尔表达式)为真时,立即返回;否则让进程进入TASK_UNINTERRUPTIBLE模式的
睡眠,并挂在queue参数所指定的等待队列上。
(2)wait_event_interruptible(queue, condition)
注:当condition(一个布尔表达式)为真时,立即返回;否则让进程进入TASK_INTERRUPTIBLE模式的睡
眠,并挂在queue参数所指定的等待队列上。
(3)wait_event_killable(queue, condition)
注:当condition(一个布尔表达式)为真时,立即返回;否则让进程进入TASK_KILLABLE模式的睡眠,并
挂在queue参数所指定的等待队列上。
5、无条件睡眠
(1)sleep_on(wait_queue_head_t *q)
注:让进程进入不可中断的睡眠,并把它放入等待队列
(2)interruptible_sleep_on(wait_queue_head_t *q)
注:让进程进入可中断的睡眠,并把它放入等待队列。
6、从等待队列中唤醒进程
(1)wake_up(wait_queue_t *q)
注:从等待队列q中唤醒状态为TASK_UNINTERRUPTIBLE、TASK_INTERRUPTIBLE、TASK_KILLABLE的所有进
程。
(2)wake_up_interruptible(wait_queue_t *q)
注:从等待队列q中唤醒状态为TASK_INTERRUPTIBLE的进程。