Linux 内核中的时间管理、任务队列与内存管理详解
1. 可移植性与 jiffies 超时问题
在使用 jiffies 处理可移植性和超时时,绝不能假定 HZ 等于 100。在 Alpha 架构中,HZ 被定义为 1024;在 rtLinux(实时 Linux)中,HZ 为 10000。用户可以自由选择 HZ 的值,修改 HZ 只需修改 asm/param.h 并重新编译。因此,在定义 PROBE_TIMEOUT 时,应基于 HZ 而非单纯的滴答值。
2. 小延迟处理
有时需要比 HZ 更精细的时间控制。大多数平台上 HZ 为 100,分辨率约为 0.01 秒,这对大多数硬件来说可能过长。若需要更高分辨率, udelay 可提供高达微秒级的精度。
/* delay for 0.5 milliseconds */
udelay(500);
udelay 使用启动时计算的 BogoMIPS 评级,虽不能保证精确到微秒,但已相当接近。BogoMIPS 是启动时运行的校准循环,用于测量每秒循环速度,它与硬件速度无直接关系,但可为 udelay 等函数提供相对准确的延迟操作。
不过,不要使用 udelay 进行超过一两毫秒的延迟,因为在高 BogoMIPS 评级的机器上可能会导致溢出。若需要更长的延迟,可按以下方式操作:
超级会员免费看
订阅专栏 解锁全文
1223

被折叠的 条评论
为什么被折叠?



