我想知道如果它返回void:http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/include/linux/wait.h#L161(_wake_up函数返回void),我怎么能使用wake_up_interruptible。例如,down_interruptible函数返回int:http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/kernel/semaphore.c#L75这允许编写这样的代码,例如:
if ( down_interruptible(&dev->sem) )
return -ERESTARTSYS;
// continue: down_interruptible succeeded
当我调用wake_up_interruptible并且它被中断时,如果它返回void,我怎么知道呢?
答案 0 :(得分:6)
我认为正常的使用场景是,在一个线程中:
for (;;) { wait_event_interruptible(wait_queue, condition); /* Some processing */ }
以及其他一些帖子:
if (something_happened) wake_up_interruptible(wait_queue);
这将导致wait_queue
处于TASK_INTERRUPTIBLE
状态的一个进程被唤醒并评估condition
再看一些例子here,有点过时的想法