linux 比较 time_after

Linux 的 jiffies 是一个unsigned类型, time_after 宏是通过把两个时间转成signed来比较。

这里有一个前提,两个时间相差不超过jiffies最大值的一半,即使在32位系统上HZ=1000,这个时间也有25天.

#include <stdio.h>

int main (void)
{
	unsigned char a = 254;
	unsigned char b = 254;
	int i;

	for (i = 0; i <= 256; i++, a++)
	{
		printf ("Unsigned: %u - %d = %d   Signed: %d - %d = %d\n", (unsigned int)a, (unsigned int)b, (int) (a - b), (int) (char)a, (int)(char)b, (int) ((char)a - (char)b));
	}

	return 0;
}
updatedupdated2022-02-222022-02-22