Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxシステムドライバの同期と相互排除を解決する

Linuxシステムドライバの同期と相互排除を解決する

  

イベント待ち行列は一般にLinuxドライバの非同期通信に使用され、アプリケーションデバイス使用権待ち行列とも呼ばれます。複数のプロセスがデバイスを操作しようとしている場合、イベントキューは通常この時点で使用されます。

1、割り込み不可のスリープ:

wait_event(キュー、状態)

wait_event_interruptible(キュー、状態)

2つの関数のみが状態になる真は起きることができます、そうでなければそれは常に眠るでしょう、すなわち、wake_up()を呼び出しても起きないでしょう。 Zzzzzzzzzzzzz

2、割り込み可能なスリープ

wait_event_timeout(キュー、状態、タイムアウト)

wait_event_interruptible_timeout(キュー、状態、タイムアウト)

条件が真になるかwake_up_interruptible()が呼ばれるかどうかは目覚めさせることができます。

3、ウェイクアップ関数:

void wake_up(wait_queue_head_t * queue); //すべてウェイクアップする

void wake_up_interruptible(wait_queue_head_t * queue); //ウェイクアップ割り込み可能

Copyright © Windowsの知識 All Rights Reserved