弱弱的问个,在Linux内核中调用mdelay做毫秒级的延时是否存在问题?
     我有在内核中这么用,但是偶尔会出现延时很久(已经是超出给定的延时)。

解决方案 »

  1.   

    不会进入睡眠的 ,直接是忙等待 。
       正常情况下 ,不该出现LZ这种问题。#define mdelay(n) (/
        (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : /
        ({unsigned long __ms=(n); while (__ms--) udelay(1000);}))
    #endif
      

  2.   

    现在内核中的睡眠函数和延时函数都会牵扯到调度问题,如果需要高精度计时,不妨使用hrtimer 高精度计时器,这个可以在内核文档中找到
      

  3.   

        感谢大家的回答,我遇到的情况好像是3楼所说的,先去确认一下。
        有点像是在mdelay过程中出了什么异常一样。