【发布时间】:2020-08-31 19:21:57
【问题描述】:
我在内核中遇到了以下代码:
/*
* Have the 32 bit jiffies value wrap 5 minutes after boot
* so jiffies wrap bugs show up earlier.
*/
#define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ))
static inline u32 cstamp_delta(unsigned long cstamp)
{
return (cstamp - INITIAL_JIFFIES) * 100UL / HZ;
}
cstamp 的值在 jiffies 中。
这是来自net/ipv4/devinet.c 的代码,其中实现了每个接口的 IP 地址(除其他外)。
我看到 INITIAL_JIFFIES 宏取 5 分钟 (300) 的值并将其转换为 jiffies (-300*HZ),并且类型转换确保正确的值包装。
但是为什么它显式设置为负值(-300*HZ)?
我不确定,cstamp_delta() 以什么单位返回?
【问题讨论】:
标签: linux time linux-kernel