有前面介绍了创建内核线程的方法 kthread_run,现在介绍一种新的形式:
//线程执行函数
static int kthread_loop(void* param)
{
int loopVal = 0;
printk(KERN_INFO "start loop\n");
while (1)
{
//加入退出判断
}
printk(KERN_INFO "stop loop\n");
return 0;
}
//创建线程
struct task_struct *loop_task = kthread_create(kthread_loop, NULL, "loop");
if (IS_ERR(loop_task))
{
printk(KERN_ERR "print loop: unable to create kernel thread: %ld\n",
PTR_ERR(loop_task));
}
//可以按自己的需要设置线程的属性(当然下面这个设置比较bt)
struct sched_param param = { .sched_priority = 0 };
sched_setscheduler(loop_task, SCHED_FIFO, ¶m);
//如果有兴趣还可以将其绑定到指定的CPU上
set_cpus_allowed(loop_task, cpumask_of_cpu(15));
//重要的一步唤新线程
wake_up_process(loop_task);
阅读(998) | 评论(0) | 转发(0) |