1.系統分配工作者執行緒:
宣告結構體:
struct work_struct detect_i2c_work;
初始化任務
//延遲指定滴答 工作佇列的初始化
init_delayed_work
(&detect_i2c_work, detect_i2c_work_func)
;//不延遲
init_work
(delayed_work, delayed_work_handler, data)
;
排程
//延遲指定滴答 排程
schedule_delayed_work
(&detect_i2c_work,
msecs_to_jiffies
(detect_i2c_time));
//不延遲 排程
schedule_work
(delayed_work)
;
2、手動建立工作者執行緒:
建立工作者執行緒:
struct workqueue_struct *
create_singlethread_workqueue
(const
char
*name)
;
宣告結構體:
struct work_struct ***xx_work;
初始化任務
//延遲指定滴答 工作佇列的初始化
init_delayed_work
(&******_work, detect_i2c_work_func)
;//不延遲
init_work
(&******_work, delayed_work_handler, data)
;
排程
//延遲指定滴答 排程
queue_delayed_work
(struct workqueue_struct *wq,
struct work_struct
*work,
unsigned
long delay)
;//不延遲 排程
queue_work
(struct workqueue_struct *wq,
struct work_struct
*work)
;
小任務機制
struct tasklet_struct ***;
//初始化
void
tasklet_init
(struct tasklet_struct *t,
void
(*func)
(unsigned
long data)
,unsigned
long data)
;//排程
void
__tasklet_hi_schedule
(struct tasklet_struct *t)
//強制禁用tasklet 不等待執行完成
void
tasklet_disable_nosync
(struct tasklet_struct *t)
;//阻塞等待tasklet 執行結束後,禁用指定的tasklet
void
tasklet_disable
(struct tasklet_struct *t)
;//啟用之前禁用的tasklet 必須存在禁用,
static
inline
void
tasklet_enable
(struct tasklet_struct *t)
工作佇列實現機制 一
walle project android 2.2 and linux 2.6.32 一 工作項 工作佇列和工作者執行緒 把推後執行的任務叫做工作 work 描述它的資料結構為work struct,這些工作以佇列結構組織成工作佇列 workqueue 其資料結構為workqueue struct,...
下半部機制之工作佇列
工作佇列是一種不同於軟中斷和微執行緒的一種下半部延遲機制。工作佇列將工作延遲到乙個核心執行緒中執行,它執行在程序上下文中,它是可排程的,並且可以休眠。通常,如果延遲的工作中需要休眠,就使用工作佇列,否則使用軟中斷或微執行緒。由於核心開發者反對建立乙個新的核心執行緒,因此,應當盡量使用工作佇列,它其實...
工作佇列分析
一 用法 struct cpu workqueue struct cacheline aligned the externally visible workqueue abstraction is an array of per cpu workqueues struct workqueue str...