我是靠谱客的博主 认真饼干,这篇文章主要介绍Linux驱动中使用的delay和sleep,现在分享给大家,希望可以做个参考。

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驱动中使用内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部