zoukankan      html  css  js  c++  java
  • kthread_create与kernel_thread的区别【栈】

    转自:http://blog.chinaunix.net/uid-25513153-id-2888903.html

    kthread_create与kernel_thread的区别

    kernel thread可以用kernel_thread创建,但是在执行函数里面必须用daemonize释放资源并挂到init下,还需要用completion等待这一过程的完成。 
    kthread_create是比较正牌的创建函数,这个不必要调用daemonize,用这个创建的kernel thread都挂在了kthread线程下。
    从表面上来看,这两个函数非常的类似,但是实现却是相差甚远。
    kthread_create是通过work_queue来实现的,kernel_thread是通过do_fork来实现的。
    kthread_create:
    DECLARE_WORK(work, keventd_create_kthread, &create);
    调用keventd_create_kthread,keventd_create_kthread中调用kernel_thread:
        pid = kernel_thread(kthread, create, CLONE_FS | CLONE_FILES | SIGCHLD);
    参考:
    http://www.scs.ch/~frey/linux/kernelthreads.html
    http://kernelnewbies.org/Simple_UDP_Server
    http://mail.nl.linux.org/kernelnewbies/2006-07/msg00373.html
    http://linux.sheup.com/linux/linux7553.htm

    kernel_thread 的使用

    转载文章,版权归原作者所有。
    原文出处:http://hi.baidu.com/wild_boar/blog/item/92eb8b5432543b1c3b293546.html

    可以在非内核线程中调用kernel_thread, 但这样创建的线程必须在自己调用daemonize(...)来释放资源, 成为真正的内核线程。 

    #include 
    #include 

    static int noop(void *dummy) 

    int i = 0; 
    daemonize("mythread"); 
    while(i++ < 5) { 
    printk("current->mm = %p ", current->mm); 
    printk("current->active_mm = %p ", current->active_mm); 
    set_current_state(TASK_INTERRUPTIBLE); 
    schedule_timeout(10 * HZ); 

    return 0; 


    static int test_init(void) 

    kernel_thread(noop, NULL, CLONE_KERNEL | SIGCHLD); 
    return 0; 


    static void test_exit(void) {} 
    module_init(test_init); 
    module_exit(test_exit); 

    ”mythread“就是给这个内核线程取的名字, 可以用ps -A来查看。 
    schedule()用于进程调度, 可以理解为放弃CPU的使用权.

    kernel thread可以用kernel_thread创建,但是在执行函数里面必须用daemonize释放资源并挂到init下,还需要用completion等待这一过程的完成。 
    kthread_create是比较正牌的创建函数,这个不必要调用daemonize,用这个创建的kernel thread都挂在了kthread线程下。

  • 相关阅读:
    【二次开发】shopxo商城
    经典的PHPer为什么被认为是草根?
    PowerDesigner生成Access数据库
    NET开发学习项目资源
    ASP.NET程序开发范例宝典
    Web.Config文件配置小记
    NET开发学习项目资源(2)
    VS 2010一步步开发windows服务(windows service)
    jquery.mobile手机网页简要
    Android置底一个View后运行报错
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/5395864.html
Copyright © 2011-2022 走看看