mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-27 22:13:55 -04:00
selftests: timers: nsleep-lat: Check all calls to clock_nanosleep() and clock_gettime()
Both these functions can fail. The first calls to those functions are already checked and result in KSFT_SKIP. If they start failing afterwards unexpectedly, report a hard error. Signed-off-by: Thomas Weißschuh (Schneider Electric) <thomas.weissschuh@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@kernel.org> Acked-by: John Stultz <jstultz@google.com> Link: https://patch.msgid.link/20260803-auxclock-nanosleep-prep-v2-17-910cbd485390@linutronix.de
This commit is contained in:
committed by
Thomas Gleixner
parent
0f474ee80c
commit
4fa377c19e
@@ -65,10 +65,16 @@ int nanosleep_lat_test(int clockid, long long ns)
|
||||
count = 10;
|
||||
|
||||
/* First check relative latency */
|
||||
clock_gettime(clockid, &start);
|
||||
for (i = 0; i < count; i++)
|
||||
clock_nanosleep(clockid, 0, &target, NULL);
|
||||
clock_gettime(clockid, &end);
|
||||
if (clock_gettime(clockid, &start))
|
||||
return KSFT_FAIL;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
if (clock_nanosleep(clockid, 0, &target, NULL))
|
||||
return KSFT_FAIL;
|
||||
}
|
||||
|
||||
if (clock_gettime(clockid, &end))
|
||||
return KSFT_FAIL;
|
||||
|
||||
if (((timespec_sub(start, end)/count)-ns) > UNRESONABLE_LATENCY) {
|
||||
ksft_print_msg("Large rel latency: %lld ns :", (timespec_sub(start, end)/count)-ns);
|
||||
@@ -77,10 +83,13 @@ int nanosleep_lat_test(int clockid, long long ns)
|
||||
|
||||
/* Next check absolute latency */
|
||||
for (i = 0; i < count; i++) {
|
||||
clock_gettime(clockid, &start);
|
||||
if (clock_gettime(clockid, &start))
|
||||
return KSFT_FAIL;
|
||||
target = timespec_add(start, ns);
|
||||
clock_nanosleep(clockid, TIMER_ABSTIME, &target, NULL);
|
||||
clock_gettime(clockid, &end);
|
||||
if (clock_nanosleep(clockid, TIMER_ABSTIME, &target, NULL))
|
||||
return KSFT_FAIL;
|
||||
if (clock_gettime(clockid, &end))
|
||||
return KSFT_FAIL;
|
||||
latency += timespec_sub(target, end);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user