linux驅動之等待佇列

2021-07-02 21:58:46 字數 583 閱讀 8445

linux驅動中,等待某種的事件發生的工作最好不要使用不斷迴圈來完成,而是採用另外一種方法,休眠與喚醒。

等待佇列工作過程就是睡眠和喚醒的過程

睡眠和喚醒的過程的基本原理,當驅動程式等待事件發生時候進入休眠狀態,當該事件發生後,就會喚醒休眠狀態的驅動**。

使用:static declare_wait_queue_head(button_waitq);     //定義初始化等待佇列頭

wake_up_interruptible(&button_waitq);              //喚醒  發出

wait_event_interruptible(button_waitq, ev_press);  // 等待事件 從阻塞中脫離ev_press是條件  若為真就不阻塞

例子:如果讀寫裝置檔案的動作函式是dev_read()和dev_write(),在讀之前一定要寫入資料。

**如下:

static declare_wait_queue_head(button_waitq);//定義初始化

static sszie_t dev_read()

static  ssize_t dev_write()

Linux裝置驅動,等待佇列

裝置驅動程式 include include include include include include include module license gpl define buf size 256 define device const char kgrunt struct kgrunt de...

Linux 裝置驅動 核心等待佇列

在 linux 驅動程式設計中,可以使用等待佇列來實現程序的阻塞.等待佇列可以看作儲存程序的容器,在阻塞程序時,將程序放入等待佇列 當喚醒程序時,從等待佇列中取出程序.linux 2.6 核心提供了如下關於等待佇列的操作 wait queue head t my queue init waitque...

4412驅動 等待佇列

定義等待佇列 wait queue head t button waitq 初始化等待佇列頭 init waitqueue head button waitq 定義並初始化等待佇列頭 相當於上面兩句合併 static declare wait queue head button waitq 定義並初...