6

void を返す場合、wake_up_interruptible をどのように使用できるのだろうか: http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/include/linux/wait.h#L161 (_wake_up function void を返します)。たとえば、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

通常の使用シナリオは、1 つのスレッドで次のようになると思います。

為に (;;) {
   wait_event_interruptible(wait_queue, condition);
   /* 一部処理 */
}

そして他のスレッドから:

もし (何かが起こった)
   wake_up_interruptible(wait_queue);

これにより、1 つのプロセスが起動され、評価さwait_queueれるTASK_INTERRUPTIBLE状態になります。condition

ここでいくつかの例を参照してください。少し古いビットがアイデアを与えます

于 2012-12-09T15:53:44.307 に答える