概述
1、二者区别
(1)delay
不主动放手,直接时间片到或者系统调用/中断发生,CPU的控制权被操作系统剥夺。
(2)sleep
主动放手,调用schedule()函数主动让出CPU控制权
2、sleep的两种类型
(1)sleep————不能被信号唤醒
进程状态为:TASK_UNINTERRUPTIBLE
(2)sleep_interrupt————能被信号唤醒
进程状态为:TASK_INTERRUPTIBLE
3、sleep的实现
(1)主要在Linux内核timer.c中实现
/**
* msleep - sleep safely even with waitqueue interruptions(安全的休眠,线程在等待队列中不会被打扰)
* @msecs: Time in milliseconds to sleep for
*/
void msleep(unsigned int msecs)
{
unsigned long timeout = msecs_to_jiffies(msecs) + 1;
while (timeout)
timeout = schedule_timeout_uninterruptible(timeout);
}
EXPORT_SYMBOL(msleep);
/**
* mslee
最后
以上就是认真饼干为你收集整理的Linux驱动中使用的delay和sleep的全部内容,希望文章能够帮你解决Linux驱动中使用的delay和sleep所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复