From 8d82a8fdf1806772de2787e308605b1f31c8f3b3 Mon Sep 17 00:00:00 2001 From: Matheus Date: Sat, 19 Sep 2026 12:50:23 -0300 Subject: [PATCH] time: fix diffus --- kernel-src/include/time.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/kernel-src/include/time.h b/kernel-src/include/time.h index 13f363d5..0fded6b8 100644 --- a/kernel-src/include/time.h +++ b/kernel-src/include/time.h @@ -32,9 +32,20 @@ static inline time_t timespec_diffms(timespec_t a, timespec_t b) { } static inline time_t timespec_diffus(timespec_t a, timespec_t b) { - time_t nsecdiff = abs(a.ns - b.ns); - time_t secdiff = abs(a.s - b.s); - return nsecdiff / 1000 + secdiff * 1000000; + if (a.s > b.s || (a.s == b.s && a.ns > b.ns)) { + timespec_t tmp = a; + a = b; + b = tmp; + } + + time_t secdiff = b.s - a.s; + time_t nsecdiff = b.ns - a.ns; + if (nsecdiff < 0) { + secdiff--; + nsecdiff += 1000000000; + } + + return secdiff * 1000000 + nsecdiff / 1000; } static inline time_t timespec_ns(timespec_t a) {