Linux核心工作佇列如何傳引數

2021-10-07 21:07:43 字數 1063 閱讀 3814

**:

linux自從2.6.20之後,工作佇列發生了一些變化,目前從網路上搜尋的資料一般都是介紹老版本的工作佇列,很少見到對新版本的介紹。本文對新老版本都做了簡要概述,並分別提供了簡單的實作案例。

工作佇列(work queue)是linux kernel中將工作推後執行的一種機制。這種機制和bh或tasklets不同之處在於工作佇列是把推後的工作交由乙個核心執行緒去執行,因此工作佇列的優勢就在於它允許重新排程甚至睡眠。

工作佇列是2.6核心開始引入的機制,在2.6.20之後,工作佇列的資料結構發生了一些變化,因此本文分成兩個部分對2.6.20之前和之後的版本分別做介紹。

1、2.6.0~2.6.19

資料結構:

struct work_struct

struct workqueue_struct *my_wq = create_workqueue(「my wq」);

struct work_struct my_work;

init_work(&my_work, my_func, 「jack」);

queue_work(my_wq, &my_work);

destroy_workqueue(my_wq);

2、2.6.20~2.6.??

自2.6.20起,工作佇列的資料結構發生了一些變化,使用時不能沿用舊的方法。

資料結構:

typedef void (*work_func_t)(struct work_struct *work);

struct work_struct ;

void my_func(struct work_struct *work)

struct workqueue_struct *my_wq = create_workqueue(「my wq」);

struct my_struct_t my_name;

my_name.name = 「jack」;

init_work(&(my_name.my_work), my_func);

queue_work(my_wq, &my_work);

destroy_workqueue(my_wq);

Linux 工作佇列

工作佇列 work queue 是另外一種將工作推後執行的形式,它和tasklet有所不同。工作佇列可以把工作推後,交由乙個核心執行緒去執行,也就是說,這個下半部分可以 在程序上下文中執行。這樣,通過工作佇列執行的 能佔盡程序上下文的所有優勢。最重要的就是工作佇列允許被重新排程甚至是睡眠。那麼,什麼...

linux工作佇列

在linux核心中,對下半部 或者說推後執行的工作 的處理方式有好幾種,包括bh bottom half 軟中斷,tasklets和工作佇列等等。在2.6核心中,大名鼎鼎的bh處理被廢除,新增了更方便的工作佇列。工作佇列的方便之處在於它把工作推後,交由乙個核心執行緒去執行,這個核心執行緒總會在程序上...

linux工作佇列

linux工作佇列 1.功能描述 工作佇列 work queue 是linux kernel中將工作推後執行的一種機制。這種機制和bh或tasklets不同之處在於工作佇列是把推後的工作交由乙個核心執行緒去執行,因此工作佇列的優勢就在於它允許重新排程甚至睡眠。2.工作佇列結構體 typedef vo...