declare_wait_queue_head(name);
或者用動態的方法:
wait_queue_head_t my_queue; init_waitqueue_head(&my_queue);
linux核心中的休眠方式是使用wait_event巨集,如下:
wait_event(queue,condition); wait_event_interruptible(queue,condition); wait_event_timeout(queue,condition,timeout); wait_event_interruptible_timeout(queue,condition,timeout);
queue是等待佇列頭,condition是等待條件。如果condition為0,則進行阻塞;否則,不阻塞。wait_event_interruptible巨集與wait_event巨集的區別是wait_event_interruptible是可以被訊號中斷的。當程序休眠時,它將期待某個條件在未來成為真;當乙個程序被喚醒時,它必須再次檢測它所等待的條件的確為真。
用來喚醒等待佇列的函式:
void wake_up(wait_queue_head_t *queue); void wake_up_interruptible(wait_queue_head_t *queue);
wake_up會喚醒等待在給定queue上的所有程序。wake_up_interruptible只會喚醒那些執行可中斷休眠的程序。
Linux驅動修煉之道
一些學習linux驅動的筆記整理在這裡與大家分享,如果那裡有錯誤也請高手指出。若干年後能進入intel開源中心或ibm搞linux kernel是我目前的目標。君子藏器於身,待時而動。文章 不斷更新中。linux驅動修煉之道 流水燈 linux驅動修煉之道 按鍵 linux驅動修煉之道 lcd背光與...
Linux驅動修煉之道
linux驅動修煉之道 流水燈 linux驅動修煉之道 按鍵 linux驅動修煉之道 lcd背光與gpio控制 linux核心訪問外設i o資源的方式 linux裝置管理檔案系統,mdev,熱插拔 linux驅動修煉之道 混雜裝置 linux驅動修煉之道 clock框架 linux裝置模型 上 之底...
Linux驅動修煉之道
linux驅動修煉之道 流水燈 linux驅動修煉之道 按鍵 linux驅動修煉之道 lcd背光與gpio控制 linux核心訪問外設i o資源的方式 linux裝置管理檔案系統,mdev,熱插拔 linux驅動修煉之道 混雜裝置 linux驅動修煉之道 clock框架 linux裝置模型 上 之底...