在kernel中如何sleep

1. udelay (mdelay调用udelay实现)

udelay应该是没有出让CPU的强制等待(忙等,占用CPU),和应用层的sleep还是有区别的。

udelay适合于编写硬件I/O时的短时间延迟,一般是微秒级才用。

如果延迟需要较长(ms以上),最好还是发出schedule(), 出让CPU比较好。也可以先设置一下任务的休眠时间再出让。

 

2.sleep_on(), interruptible_sleep_on(); sleep_on_timeout(), interruptible_sleep_on_timeout();
这些函数相当于我们平时的阻塞读、写之类的语义,主要用于等外设完成某些操作。

你可能感兴趣的:(任务)