2014-09-28 40 views
1

請大家幫助我理解「傳遞數據(共享還是私有)」到workQueue?在linux內核中使用workQueue傳遞/共享數據

1:聲明回呼/工作處理機

static void sample_work_fn(struct work_struct *Wq) 
{ 
........... 
........... 
} 

2:填寫work_struct結構(靜態地)

static DECLARE_WORK(sample_work, sample_work_fn); 

3:安排一個工作隊列

static void samp_sysrq(int arg) 
{ 
     schedule_work(sample_work); 
} 

這裏如果我需要通過我的工作隊列傳遞/共享數據,那怎麼可能?

BR,

&斯里達爾

+1

可能重複[如何使用Linux的工作隊列(http://stackoverflow.com/questions/7937245/how-to-use-linux-work-queue ) – 2014-09-28 16:41:36

+1

Sanumala,歡迎來到Stack Overflow。正如我以前的評論所暗示的,這個問題已經在另一篇文章中得到了回答。請參閱上述評論中的鏈接。這個網站更喜歡儘可能少的重複問題,所以很可能這個線程將被關閉。請不要冒犯這個,把它當作學習經驗。再次歡迎! – 2014-09-28 16:42:32

+0

謝謝本傑明, – sanumala 2014-09-29 16:52:24

回答

1

感謝本傑明, 我查到的資料中「Linux transfer parameter for function in DECLARE_WORK」真的是直線前進,它真的幫助我瞭解。此鏈接說

DECLARE_WORK主要用於靜態工作項目,其中不需要實例數據。你想要INIT_WORK。使用它來初始化一個work_struct,它是另一個結構(您選擇的)的成員,然後在回調中使用container_of來獲取指向包含結構的指針。這個container_of模式在Linux內核中非常常見,所以熟悉這個模式是個好主意!

BR,

&斯里達爾