相關函數:
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 主站蜘蛛池模板: 台前县| 巴林左旗| 渝北区| 个旧市| 邢台市| 收藏| 稷山县| 平安县| 阜新市| 东兰县| 彭水| 刚察县| 宜宾县| 宿松县| 苏州市| 依安县| 乌兰察布市| 秀山| 徐州市| 大理市| 含山县| 光山县| 冀州市| 舞钢市| 拉萨市| 芦山县| 铜梁县| 年辖:市辖区| 祁阳县| 富民县| 灵武市| 鄂伦春自治旗| 山阴县| 论坛| 新泰市| 兰溪市| 汝州市| 章丘市| 措美县| 沅陵县| 兰溪市|