Thread是執行的最小單位,在多核CPU上,產生的Thread可以同時的運作,這意謂著使用Thread技術可以用來改善效能,但是,每個Thread間的資料同步則是另一個課題
使用步驟:
1. kthread_create() 2. wake_up_process() 3. kthread_should_stop() 4. kthread_stop()
main.c
#include <linux/init.h>
#include <linux/device.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/kthread.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Steward Fu");
MODULE_DESCRIPTION("Linux Driver");
struct task_struct *mykthread = NULL;
static int kthread_handler(void *data)
{
printk("%s++\n", __func__);
while (!kthread_should_stop()) {
msleep(100);
}
printk("%s--\n", __func__);
return 0;
}
int ldd_init(void)
{
mykthread = kthread_create(kthread_handler, NULL, "mykthread");
wake_up_process(mykthread);
return 0;
}
void ldd_exit(void)
{
kthread_stop(mykthread);
}
module_init(ldd_init);
module_exit(ldd_exit);
ldd_init: 產生多個Thread並且執行
kthread_handler: 列印字串
ldd_exit: 停止Thread執行
測試
# insmod /boot/main.ko
kthread_handler++
# rmmod main
kthread_handler--