Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b171672 authored by Dmitriy Zavin's avatar Dmitriy Zavin Committed by Andi Kleen
Browse files

[PATCH] Add 64bit jiffies compares (for use with get_jiffies_64)



The current time_before/time_after macros will fail typechecks
when passed u64 values (as returned by get_jiffies_64()). On 64bit
systems, this will just result in a warning about mismatching types
without explicit casts, but since unsigned long and u64
(unsigned long long) are of same size, it will still work.
On 32bit systems, a long is 32bits, so the value from get_jiffies_64()
will be truncated by the cast and thus lose all the precision gained by
64bit jiffies.

Signed-off-by: default avatarDmitriy Zavin <dmitriyz@google.com>
Signed-off-by: default avatarAndi Kleen <ak@suse.de>
parent b89ebd0b
Loading
Loading
Loading
Loading
+15 −0
Original line number Original line Diff line number Diff line
@@ -115,6 +115,21 @@ static inline u64 get_jiffies_64(void)
	 ((long)(a) - (long)(b) >= 0))
	 ((long)(a) - (long)(b) >= 0))
#define time_before_eq(a,b)	time_after_eq(b,a)
#define time_before_eq(a,b)	time_after_eq(b,a)


/* Same as above, but does so with platform independent 64bit types.
 * These must be used when utilizing jiffies_64 (i.e. return value of
 * get_jiffies_64() */
#define time_after64(a,b)	\
	(typecheck(__u64, a) &&	\
	 typecheck(__u64, b) && \
	 ((__s64)(b) - (__s64)(a) < 0))
#define time_before64(a,b)	time_after64(b,a)

#define time_after_eq64(a,b)	\
	(typecheck(__u64, a) && \
	 typecheck(__u64, b) && \
	 ((__s64)(a) - (__s64)(b) >= 0))
#define time_before_eq64(a,b)	time_after_eq64(b,a)

/*
/*
 * Have the 32 bit jiffies value wrap 5 minutes after boot
 * Have the 32 bit jiffies value wrap 5 minutes after boot
 * so jiffies wrap bugs show up earlier.
 * so jiffies wrap bugs show up earlier.