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 定義並初...