内核线程中的 set_current_state() 宏是什么?

S.I*_*I.J 1 c linux linux-device-driver linux-kernel

在学习内核线程时,我遇到了这段代码

while(!kthread_should_stop()){ 
  set_current_state(TASK_RUNNING);

  /* Doing some stuff here */

  set_current_state(TASK_INTERRUPTIBLE);
  msleep(1000);   
Run Code Online (Sandbox Code Playgroud)

set_current_state用于什么以及正在传递的参数是什么。

Nat*_*tta 5

根据这篇LinuxJournal文章

set_current_state()将当前正在执行的进程的状态从TASK_RUNNING更改为TASK_INTERRUPTIBLE

这里,TASK_RUNNINGTASK_INTERRUPTIBLE是进程的两种状态

  • TASK_RUNNING -- 准备运行的进程的状态为 TASK_RUNNING。
  • TASK_INTERRUPTIBLE -- 进程的状态,通过它被schedule()调用,进程被移出运行队列