linux内核提供了如下三种函数分别进行 纳米 微秒 毫秒 的延时
void ndelay(unsigned long nsecs);
void udelay(unsigned long usecs);
void mdelay(unsigned long msecs);
本质 是 忙等待 他根据cpu频率进行一定次数的循环 有时候 可以用如下的代码
void delay(unsigned int time)
{
while(time--);
}
在内核中 最好不要直接使用mdelay()函数,这样将无谓的耗费cpu资源,对于毫秒以上的延时,内核提供了如下函数
void msleep(unsigned int millisecs);
unsigned long msleep_interruptibe(unsigned ing millsecs);
void ssleep(unsigned int seconds);
长延时
time_before(jiffies,delay),
timer_after(jiffies,delay),
unsigned long delay=jiffies+2*HZ;
while(timer_before(jiffies,delay)); 当 jiffies的值小于delay的值时,一直是返回1 等待在这里。
********************************************************************
睡着延时 (因为当时没有用到的可能 所以没有仔细看。。。记着以后要看看)
*********************************************************************