On Tue, May 17, 2022 at 08:57:55AM +0800, Chengming Zhou wrote: > #define time_after64(a,b) \ > (typecheck(__u64, a) && \ > typecheck(__u64, b) && \ > ((__s64)((b) - (a)) < 0)) > #define time_before64(a,b) time_after64(b,a) > > I still don't get why my changes are wrong. :-) It's a wrapping timestamp where a lower value doesn't necessarily mean earlier. The before/after relationship is defined only in relation to each other. Imagine a cirle representing the whole value range and picking two spots in the circle, if one is in the clockwise half from the other, the former is said to be earlier than the latter and vice-versa. vtime runs way faster than nanosecs and wraps regularly, so we can't use absolute values to compare before/after. Thanks. -- tejun