linuk kthread
来源:互联网 发布:ubuntu怎么运行exe 编辑:程序博客网 时间:2024/06/05 06:01
有问题的线程函数:( BUD: scheduling while atomic: )
//static int fsp_kthread(void * ptr){ int ret = 0; char* buff = (char*)kmalloc(F_LEN, GFP_KERNEL); if(IS_ERR(buff)) { printk("<2>""fsp_kthread kmalloc failed\n"); return -1; } memset(buff, '\0', F_LEN); while(1) { set_current_state(TASK_UNINTERRUPTIBLE); //msleep(10); if(kthread_should_stop()) { break; } if(kfifo_get(fsp_kfifo, buff, F_LEN) > 0) { send_msg_(buff); // 此函数内使用了read_lock_bh导致Bug }else{ //schedule_timeout(HZ); schedule(); } } kfree(buff); return ret;}
kthread
kernel/kthread.c
int kthreadd(void *unused){ struct task_struct *tsk = current; /* Setup a clean context for our children to inherit. */ set_task_comm(tsk, "kthreadd"); ignore_signals(tsk); set_cpus_allowed_ptr(tsk, cpu_all_mask); set_mems_allowed(node_possible_map); current->flags |= PF_NOFREEZE | PF_FREEZER_NOSIG; for (;;) { set_current_state(TASK_INTERRUPTIBLE); if (list_empty(&kthread_create_list)) schedule(); __set_current_state(TASK_RUNNING); spin_lock(&kthread_create_lock); while (!list_empty(&kthread_create_list)) { struct kthread_create_info *create; create = list_entry(kthread_create_list.next, struct kthread_create_info, list); list_del_init(&create->list); spin_unlock(&kthread_create_lock); create_kthread(create); spin_lock(&kthread_create_lock); } spin_unlock(&kthread_create_lock); } return 0;}
参考:
http://www.cnblogs.com/zhuyp1015/archive/2012/06/11/2545624.html
- linuk kthread
- Kthread
- kthread
- KThread
- kthread usage
- kthread usage
- kthread usage
- kthread例子
- kthread schedule
- linux kthread
- linuk下安装jdk与tocmat步骤
- kthread内核线程
- 内核线程结构--KTHREAD
- Linux内核线程kthread
- 通过KTHREAD获得SSSDT表
- 【Linux API】kthread的使用
- 想成立手机软件(J2ME,SYMBIAN.WM,LINUK,BREW)工作室。。。
- Linux 中的IPC(二)-----内核线程(Kthread)
- fork函数
- BW知识点总结及面试要点
- web.config文件简介
- Android学习笔记(十九):建立自己的ListView
- myeclipse修改乱码(编码格式修改)
- linuk kthread
- Android学习笔记(二十):回归简单的ListView
- SQL数据操作
- 【面向对象】php新手之学习类与对象-访问控制
- Android学习笔记(二一):有趣的widget-日期和时间
- “安装程序检测到计算机重新启动操作可能处于挂起状态”的解决方法
- Android学习笔记(二二): 多页显示-Tag的使用
- Android中ContentProvider和Uri用法
- SSH和Tomcate中连接池的配置方式