相關函數:
kthread_create():創建內核線程
kthread_run():創建并啟動線程的函數。
({ /
struct task_struct *__k /
= kthread_create(threadfn, data, namefmt, ## __VA_ARGS__); /
if (!IS_ERR(__k)) /
wake_up_process(__k); /
__k; /
})
同時,在調用kthread_stop函數時,線程函數不能已經運行結束。否則,kthread_stop函數會一直進行等待。
內核線程的一般框架
int threadfunc(void *data){
…
while(1){
set_current_state(TASK_UNINTERRUPTIBLE);
if(kthread_should_stop()) break;
if(){//條件為真
//進行業務處理
}
else{//條件為假
//讓出CPU運行其他線程,并在指定的時間內重新被調度
schedule_timeout(HZ);
}
}
…
return 0;
}
線程相關測試命令
可以使用top命令來查看線程(包括內核線程)的CPU利用率。命令如下:
top 主站蜘蛛池模板: 临潭县| 平阳县| 敦煌市| 三江| 翼城县| 旌德县| 江油市| 汝南县| 峡江县| 保山市| 平舆县| 邹平县| 即墨市| 永仁县| 德庆县| 惠州市| 凤山市| 碌曲县| 社旗县| 沭阳县| 若尔盖县| 南川市| 安义县| 伊春市| 三江| 双江| 宜黄县| 舟山市| 湘阴县| 康马县| 泽库县| 邵阳县| 尉氏县| 聊城市| 杭锦旗| 望城县| 汝城县| 泾源县| 宁国市| 承德市| 平邑县|