我是靠谱客的博主 认真饼干,最近开发中收集的这篇文章主要介绍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驱动中使用的delay和sleep所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部