開啓linux 內核線程

函數說明:

 

kthread_create:創建線程。

struct task_struct *kthread_create(int (*threadfn)(void *data),void *data,const char *namefmt, ...);

線程創建後,不會馬上運行,而是需要將kthread_create() 返回的task_struct指針傳給wake_up_process(),然後通過此函數運行線程。

 

kthread_run :創建並啓動線程的函數:

struct task_struct *kthread_run(int (*threadfn)(void *data),void *data,const char *namefmt, ...);

kthread_stop:通過發送信號給線程,使之退出。

int kthread_stop(struct task_struct *thread);
線程一旦啓動起來後,會一直運行,除非該線程主動調用do_exit函數,或者其他的進程調用kthread_stop函數,結束線程的運行。

但如果線程函數正在處理一個非常重要的任務,它不會被中斷的。當然如果線程函數永遠不返回並且不檢查信號,它將永遠都不會停止。

 

 

 

代碼:

 

這個內核線程的作用就是每隔一秒打印一個“hello world”。

值得一提的是kthread_should_stop函數,我們需要在開啓的線程中嵌入該函數,否則kthread_stop是不起作用的。

發佈了39 篇原創文章 · 獲贊 23 · 訪問量 77萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章