Chinaunix首页 | 论坛 | 博客
  • 博客访问: 363615
  • 博文数量: 77
  • 博客积分: 1447
  • 博客等级: 中尉
  • 技术积分: 885
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-21 21:48
文章分类

全部博文(77)

文章存档

2021年(2)

2020年(2)

2016年(3)

2015年(1)

2014年(4)

2013年(1)

2012年(23)

2011年(15)

2010年(26)

分类:

2010-04-27 10:30:15

有前面介绍了创建内核线程的方法 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) |
给主人留下些什么吧!~~