提供几句代码给你参考,主要是红色字那几句
========================
__set_current_state(TASK_INTERRUPTIBLE); //改变进程状态
schedule(); //调度其他进程运行
if(signal_pending(current))
{
ret = - ERESTARTSYS;
goto out;
}
else
{
goto retry;
}
//--------v002 end-------
}
out:
remove_wait_queue(&g_pkey_dev->wq, &wait);
set_current_state(TASK_RUNNING);
return ret;