是否可以在linux内核中以微秒级的粒度睡眠?
据我所知,有msleep()
可以在几毫秒内睡觉
并且有udelay()
忙于等待微秒的时间
粒度。
但我需要睡眠(不忙等待)微粒的粒度......
有没有办法在linux内核中编写新的API来实现这个?
答案 0 :(得分:1)
如果您需要的精度低于jiffy,那么hrtimers是您最好的选择。在你的内核中启用高分辨率计时器配置,你可以使用hrtimer API,如hrtimer_nanosleep(用户空间posix nanosleep的基础)睡眠在nanosecs res
更多参考资料http://elinux.org/High_Resolution_Timers和https://www.kernel.org/doc/Documentation/timers/hrtimers.txt
答案 1 :(得分:0)
是。最高分辨率等待可以通过使用没有FD的ppoll
并传递一个纳秒的timespec
来实现。请注意,ppoll
将等待至少这段时间 - 基础时钟的粒度可能会更差。