linux 中mdelay() 与msleep()的区别

在Linux Driver开发中,经常要用到延迟函数:msleep,mdelay/udelay.

虽然msleep和mdelay都有延迟的作用,但他们是有区别的.

1.)对于模块本身

mdelay是忙等待函数,在延迟过程中无法运行其他任务.这个延迟的时间是准确的.是需要等待多少时间就会真正等待多少时间.

msleep是休眠函数,它不涉及忙等待.你如果是msleep(10),那实际上延迟的时间,大部分时候是要多于10ms的,是个不定的时间值.

2.)对于系统:

mdelay() 会占用cpu资源,导致其他功能此时也无法使用cpu资源。

msleep() 则不会占住cpu资源,其他模块此时也可以使用cpu资源。

delay函数是忙则等待,占用CPU时间;而sleep函数使调用的进程进行休眠。

3.)udelay() mdelay() ndelay() 区别:

udelay(); mdelay(); ndelay();实现的原理本质上都是忙等待,ndelay和mdelay都是通过udelay衍生出来的。

我们使用这些函数的实现往往会碰到编译器的警告implicit declaration of function ‘udelay‘,这往往是由于头文件的使用不当造成的。

在include/asm-***/delay.h中定义了udelay(),而在include/linux/delay.h中定义了mdelay和ndelay.

udelay一般适用于一个比较小的delay,如果你填的数大于2000,系统会认为你这个是一个错误的delay函数,因此如果需要2ms以上的delay需要使用mdelay函数。

4.)msleep,ssleep区别:

休眠单位不同

5.)秒的单位

ms是毫秒=0.001秒

us是微秒=0.000001秒

ns是纳秒=0.000000001秒

时间: 2025-02-01 10:12:26

linux 中mdelay() 与msleep()的区别的相关文章

linux中ctime,mtime,atime的区别

st_atime Time when file data was last accessed. Changed by  the            following   functions:   creat(),   mknod(),   pipe(),            utime(2), and read(2). st_mtime Time when data was last modified. Changed by the  fol-            lowing  fun

Linux中chown和chmod的区别和用法

Linux中chown和chmod的区别和用法(转) chmod修改第一列内容,chown修改第3.4列内容: chown用法: 用来更改某个目录或文件的用户名和用户组. chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径) 例1:chown root:root /tmp/tmp1 就是把tmp下的tmp1的用户名和用户组改成root和root(只修改了tmp1的属组). 例2:chown -R root:root /tmp/tmp1 就是把tmp下的tmp1下的所有文件的属组都

图解Linux中EXT4与EXT3的区别

图解Linux中EXT4与EXT3文件系统的详细区别, 包括: 与EXT3文件系统兼容 更大的文件系统和更大的文件 无限数量的子目录 扩展存储范围 多块分配 快速fsck 日志校验 无日志模式 在线碎片整理 inode相关特性 持久预分配 默认启动障碍点

Linux中Buffer和Cache的区别

1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而  Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能. Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元):Cache一般会用在I/O请求上,如果多个进程要访问某个文件,可以把此文件读入Cache中,这样下一个进程获取CPU控制

Linux中exit与_exit的区别

在exit,_exit的区别 - exit()与_exit()函数的区别(Linux系统中)2012-03-20 15:19:53 分类: LINUX 注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可读性比较好一点. 作为系统调用而言,_exit和exit是一对孪生兄弟,它们究竟相似到什么程度,我们可以从Linux的源码中

linux中du与df的区别和联系

1,两者区别 du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在 的,没有被删除的.他计算的大小就是当前他认为存在的所有文件大小的累加和. df,disk free,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不 是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已 经删除的文件, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除 的文件,而且

Linux中chown和chmod的区别和用法(转)

chmod修改第一列内容,chown修改第3.4列内容: chown用法: 用来更改某个目录或文件的用户名和用户组. chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径) 例1:chown root:root /tmp/tmp1 就是把tmp下的tmp1的用户名和用户组改成root和root(只修改了tmp1的属组). 例2:chown -R root:root /tmp/tmp1 就是把tmp下的tmp1下的所有文件的属组都改成root和root. chmod用法: 用来修改某

在 linux 中 find 和 grep 的区别??

Linux 系统中 grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep 全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. linux 下的 find: 功能:在目录结构中搜索文件,并执行指定的操作.此命令提供了相当多的查找条件,功能很强大.语法:find 起始目录寻找条件操作说明:find 命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的

Linux中mkdir和touch命令区别

一.目的 本文将介绍linux下新建文件或文件夹.删除文件或文件夹命令.         touch能够新建文件,mkdir用来新建文件夹.rm用来删除文件或文件夹.         本文将选取ubuntu14.04发行版做为描写叙述基础. 二.touch命令 linux下新建文件的方式有非常多,比如:使用vi新建文件.使用cp命令拷贝一个文件.可是最经常使用的还是使用touch命令新建一个文件. 语法:touch [options] filename         -a:改变訪问时间