高階字元裝置驅動 核心等待佇列筆記

2021-05-28 12:25:32 字數 1330 閱讀 2855

等待佇列

在linux驅動程式設計中,可以使用等待佇列來實現程序的阻塞,等待佇列可以看作

程序的容器,在程序時,將程序放入等待佇列,當喚醒程序時,從等待佇列中取出程序。

第一種方法

1)

定義等待佇列

wait_queue_head_t my_queue

2)初始化等待佇列

init_waitqueue_head(&my_queue)

第二種方法

定義並初始化等待佇列

巨集:declare_wait_queue_head(my_queue)

3)有條件睡眠

wait_event(queue,condition)

當condition

(乙個布林表示式)為真時,立即返回;

否則為假時讓程序進入task_uninterruptible模式的睡眠(

不可中斷),

並掛在queue

引數所制定的等待佇列上。

wait_event_interruptible(queue,condition)

當condition

(乙個布林表示式)為真時,立即返回;

否則為假時讓程序進入task_interruptible模式的睡眠,

並掛在queue

引數所制定的等待佇列上。

int wait_event_killable(wait_queue_t queue,condition)

當condition

(乙個布林表示式)為真時,立即返回;

否則為假時讓程序進入task_killable模式的睡眠,

並掛在queue

引數所制定的等待佇列上。

4)無條件睡眠(老版本,建議不再使用)

sleep_on(wait_queue_head_t *q)  不可中斷睡眠

interruptible_sleep_on(wait_queue_head_t *q) 可終端睡眠

5)從等待佇列中喚醒程序

wake_up(wait_queue_t *q)  喚醒所有程序

wake_up_interruptible(wait_queue_t *q) 喚醒

task_interruptible

的程序

Linux 裝置驅動 核心等待佇列

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

linux高階字元裝置驅動之 二 核心等待佇列

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

Linux裝置驅動,等待佇列

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