喜欢标题建议:如何打电话给睡觉()?
答案 0 :(得分:2)
你可以使用get_random_bytes(),类似的sleep()调用也存在,例如msleep(),usleep()等,具体取决于你想要做什么。请注意,* sleep()不能在原子上下文中使用,您需要使用* delay()。通常,在内核中使用sleep()/ delay()调用之前需要三思而后行。
如果您正在编写设备驱动程序,并且您想确保设备已完成任何操作(假设您无法使用中断,并且需要轮询某些寄存器等),则不要执行msleep(10考虑使用msleep(2)或类似的循环进行5次循环,轮询寄存器并尽早爆发。您等待的时间至少是您请求的时间,具体取决于系统负载。
答案 1 :(得分:0)
dmp是对的。 记住以上所有要点,您还可以尝试使用这个简单的宏来模拟sleep(3)内核调用:
#ifdef __KERNEL__
/*------------ DELAY_SEC -------------------------*
* Delays execution for n seconds.
* MUST be called from process context.
*------------------------------------------------*/
#define DELAY_SEC(val) \
{ \
if (!in_interrupt()) { \
set_current_state (TASK_INTERRUPTIBLE); \
schedule_timeout (val * HZ); \
} \
}
#endif