内核线程的创建并运行

kthread_run()负责内核线程的创建,参数包括入口函数 threadfn,参数data,线程名称namefmt。 进入kthread.h文件,会发现kthread_run实际是一个宏定义,由kthread_create()和wake_up_process() 两部分组成,这样的好处是用kthread_run()创建的线程可以直接运行。

kthread_stop()负责结束创建的线程,参数是创建时返回的task_struct指针。kthread设置标志should_stop,并等待线程主动结束,返回线程的返回值。线程可能在kthread_stop()调用前就结束。(经过实际验证,如果线程在kthread_stop()调用 之前就结束,之后kthread_stop()再调用会发生可怕地事情—调用kthread_stop()的进程crash!!

kthread_should_stop()返回should_stop标志。它用于创建的线程检查结束标志,并决定是否退出。线程完全可以在完成自己的工作后主动结束,不需等待should_stop标志。

你可能感兴趣的:(工作,struct,UP,Crash)