驱动开发基础 -- linux中msleep精度比较差

转自超哥原话:

启江那边反馈msleep精度比较差的问题。我分析了下:
因为msleep依赖于jiffies,也就是依赖于CONFIG_HZ值,如果CONFIG_HZ=100,那精度就是10ms,即使msleep(1)希望休眠1ms,实际上休眠时间 >=10ms.

内核中有接口usleep_range,可以实现us微秒级的休眠:
#include
void usleep_range(unsigned long min, unsigned long max);
单位是us微秒级,如需要休眠1ms, usleep_range(1000,1000)即可

另外内核也提供了ns纳秒级的的休眠,hrtimer_nanosleep,也可以使用。
如果us微秒
够用,用usleep_range就好,接口最简单。

你可能感兴趣的:(驱动,操作系统,驱动开发基础,开发环境)