6

我想知道如何使用wake_up_interruptible,如果它返回无效:http ://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/include/linux/wait.h#L161 (_wake_up 函数返回无效)。例如,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,我怎么知道?

4

1 回答 1

8

我想正常的使用场景是,在一个线程中:

为了 (;;) {
   wait_event_interruptible(等待队列,条件);
   /* 一些处理 */
}

并从其他一些线程:

如果(某事发生)
   唤醒中断(等待队列);

这将导致一个wait_queue处于TASK_INTERRUPTIBLE状态的进程被唤醒和评估condition

在这里查看更多示例,有点过时的位给出了一个想法

于 2012-12-09T15:53:44.307 回答