是否有可能在linux内核中以微秒级的粒度睡眠?

时间:2015-01-23 08:09:13

标签: c linux-kernel linux-device-driver sleep

是否可以在linux内核中以微秒级的粒度睡眠? 据我所知,有msleep()可以在几毫秒内睡觉 并且有udelay()忙于等待微秒的时间 粒度。 但我需要睡眠(不忙等待)微粒的粒度......

有没有办法在linux内核中编写新的API来实现这个?

2 个答案:

答案 0 :(得分:1)

如果您需要的精度低于jiffy,那么hrtimers是您最好的选择。在你的内核中启用高分辨率计时器配置,你可以使用hrtimer API,如hrtimer_nanosleep(用户空间posix nanosleep的基础)睡眠在nanosecs res

更多参考资料http://elinux.org/High_Resolution_Timershttps://www.kernel.org/doc/Documentation/timers/hrtimers.txt

答案 1 :(得分:0)

是。最高分辨率等待可以通过使用没有FD的ppoll并传递一个纳秒的timespec来实现。请注意,ppoll将等待至少这段时间 - 基础时钟的粒度可能会更差。