关于linux内核中进程的等待;
1.要把一个进程从运行状态到等待\睡眠状态,要做以下工作:
(1)定义一个wait_queue_t数据结构,关联当前进程;
(2)把这个进程加入等待队列;
(3)把进程状态设为非TASK_RUNNING;
(4)调用schedule();schedule把state为非TASK_RUNNING的进程从运行队列移除,以后就不能调度到了。
wait_event_interrupt()、wait_event()、wait_event_timeout()等接口可以让进程进行等待;
2.要把一个进程加入运行队列,能调度,一下工作:
(1)把进程从等待队列移除;
(2)把进程状态设为TASK_RUNNING,等待调度;
wake_up_interruptable()、wake_up()、wake_up_all()等可以唤醒进程。