From nobody Tue Dec 23 10:26:59 2025 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B734362152 for ; Mon, 4 Mar 2024 18:11:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709575914; cv=none; b=r+Xwe5OcdxoRbnO9KSDceHreUKBwbAuKY12umjn/ZUYA+juEL0ozvGQZizkrvdneF+8B/dwaT7sHu7T6mBOHRv8dDLeZO/1kcWRWCfWuS/SxMSscRKerjvojuRBJaD6TzJBoIXexmZL16cDMIpE2zszncHe6IvLtSSkm1a64Zg8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709575914; c=relaxed/simple; bh=CC+iy3zkI7zBVRFWIq21TO6LNko9XBBY5WLB//p8GHg=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=fo986BRF0RghVELnBcV+TS44QDETAqMW7r6hqOkOQoTDjWfCOboFY3GZ6aZPNiAcjt/O43HZ8V6/tx0RyfUXD4C68e5Mxd0D9X/owwUEv0JWK3Z4QF1rRVkQGRsYWY2Dcca5TkqgT1GKRwqnZB9ABv55+jVZagf4Y0TeYRD+TmU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--edliaw.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=OeBX8bue; arc=none smtp.client-ip=209.85.214.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--edliaw.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="OeBX8bue" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-1dc4f385c16so47421755ad.1 for ; Mon, 04 Mar 2024 10:11:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709575912; x=1710180712; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=LIR4tpXfm1Zf9xB2dvSMHOKf+DsIJbzUCheSmbqVnZ4=; b=OeBX8buewaY1kn0YxAr60HF8GT+bam5EAHRrzD1UD9WzYaAFTdHvLa6G05VdOIyPQ9 TWy6Eais3lPUwiPxFBeTmXROOqZBFFT175/urypfiVHcZIKKrmfPSFcNJBTADO6I9Hqa cT7ZzZvykcGOwL+GFvhGR+cD0H4aPtrNgeh6GlnnyIh2IqZ7ZL665v9/m4/P+wieY140 MbIetNTiWmm/9LpZ6AIJuI59a8HojXIVC6GsxeWRTLhI3qkESE3Lno9a/lskoSUqL7Fr btN/mlWjkWhc5dJs5vpWj2fZa+BxjCEeJDzgAbh7gZlgYgeyu6aRfM/FYnowm3DlxsJw 40fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709575912; x=1710180712; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=LIR4tpXfm1Zf9xB2dvSMHOKf+DsIJbzUCheSmbqVnZ4=; b=qm98D4VZjk2XoaXBEtHWiicGcio6Q0exQFwGCUOMK6gAx5oh2LD3soJZjoZntfmgM2 MMoZziElnEohnG8/MdRqsdLRWrBM3Hr2v9qDeq0wD4b3M0xgGuoDjLvD8qUWHF98mi4h N7fdgqsmn4KTvQiiYcE95AjhL+nNjIpzyzwquJrlwMyP+ifJWr+qBKMsyaEH6NuHWkrA bfFb0WgAvRbjPV0PDIzxvYawZJRLBzNw486ue92VRM1JseqnMiaSwOVl/Cu8CPbIjtjO wNAEHOgpyja9+xPzv5ai6Gb/XBObpNq6sNOVwpZVFEpRgPp+wWckqG7UChB1xpg4Zoqa sCGg== X-Gm-Message-State: AOJu0YzvIuiNXOTiAvxL4tpO4m0z7ZZK+iaqfj1Fe/k5A45d5cFYsqR9 MOSpcjUvkljr24ZuElezEcQHFHkR1FTNojjDzN1aXENzoE7wT8yOF+fdEGzRJkFBjilDAeNa55P /8uwSvun7+HQPGDOeM6oaRuZRonGK9w5nvOoJhqmnShTsBenPXPFASaOAwT2R56WFSWfgZRYSwS tKnvKIu5XMiO7TfMudwducctIU1fi/0hBZfwkkVQrr X-Google-Smtp-Source: AGHT+IGIW0ufgJvmiSiJkJzOrk9GFG7bJv+6od4sTBFNYKROiEAkCjdjVmtZBIbw5QLdFBP3IxMZvCRuZms= X-Received: from edliaw.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:305d]) (user=edliaw job=sendgmr) by 2002:a17:902:db02:b0:1dc:b7d2:453e with SMTP id m2-20020a170902db0200b001dcb7d2453emr168006plx.0.1709575911467; Mon, 04 Mar 2024 10:11:51 -0800 (PST) Date: Mon, 4 Mar 2024 18:11:32 +0000 In-Reply-To: <20240304181140.644212-1-edliaw@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240304181140.644212-1-edliaw@google.com> X-Mailer: git-send-email 2.44.0.rc1.240.g4c46232300-goog Message-ID: <20240304181140.644212-2-edliaw@google.com> Subject: [PATCH v1 1/3] selftests/timers/posix_timers: Make signal distribution test less fragile From: Edward Liaw To: linux-kernel@vger.kernel.org, John Stultz , Thomas Gleixner , Stephen Boyd , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: linux-kselftest@vger.kernel.org, kernel-team@android.com, Edward Liaw , llvm@lists.linux.dev Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The signal distribution test has a tendency to hang for a long time as the signal delivery is not really evenly distributed. Increasing the timer interval to 10ms makes this less likely. Add a timeout to catch the case where it hangs and terminate the test gracefully. While at it get rid of the pointless atomic operation on a the thread local variable in the signal handler. Signed-off-by: Thomas Gleixner [edliaw: Rebase and fix checkpatch recommendations] Signed-off-by: Edward Liaw --- tools/testing/selftests/timers/posix_timers.c | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/tools/testing/selftests/timers/posix_timers.c b/tools/testing/= selftests/timers/posix_timers.c index d49dd3ffd0d9..03779b6b3c20 100644 --- a/tools/testing/selftests/timers/posix_timers.c +++ b/tools/testing/selftests/timers/posix_timers.c @@ -24,7 +24,8 @@ static volatile int done; /* Busy loop in userspace to elapse ITIMER_VIRTUAL */ static void user_loop(void) { - while (!done); + while (!done) + continue; } =20 /* @@ -184,18 +185,19 @@ static int check_timer_create(int which) return 0; } =20 -int remain; -__thread int got_signal; +static int remain; +static __thread int got_signal; =20 static void *distribution_thread(void *arg) { - while (__atomic_load_n(&remain, __ATOMIC_RELAXED)); + while (__atomic_load_n(&remain, __ATOMIC_RELAXED) && !done) + continue; return NULL; } =20 static void distribution_handler(int nr) { - if (!__atomic_exchange_n(&got_signal, 1, __ATOMIC_RELAXED)) + if (++got_signal =3D=3D 1) __atomic_fetch_sub(&remain, 1, __ATOMIC_RELAXED); } =20 @@ -205,17 +207,19 @@ static void distribution_handler(int nr) */ static int check_timer_distribution(void) { - int err, i; - timer_t id; const int nthreads =3D 10; pthread_t threads[nthreads]; struct itimerspec val =3D { .it_value.tv_sec =3D 0, - .it_value.tv_nsec =3D 1000 * 1000, + .it_value.tv_nsec =3D 20 * 1000 * 1000, .it_interval.tv_sec =3D 0, - .it_interval.tv_nsec =3D 1000 * 1000, + .it_interval.tv_nsec =3D 20 * 1000 * 1000, }; + time_t start, now; + int err, i; + timer_t id; =20 + done =3D 0; remain =3D nthreads + 1; /* worker threads + this thread */ signal(SIGALRM, distribution_handler); err =3D timer_create(CLOCK_PROCESS_CPUTIME_ID, NULL, &id); @@ -240,7 +244,18 @@ static int check_timer_distribution(void) } =20 /* Wait for all threads to receive the signal. */ - while (__atomic_load_n(&remain, __ATOMIC_RELAXED)); + now =3D start =3D time(NULL); + while (__atomic_load_n(&remain, __ATOMIC_RELAXED)) { + now =3D time(NULL); + if (now - start > 5) + break; + } + done =3D 1; + + if (timer_delete(id)) { + ksft_perror("Can't delete timer\n"); + return -1; + } =20 for (i =3D 0; i < nthreads; i++) { err =3D pthread_join(threads[i], NULL); @@ -251,12 +266,8 @@ static int check_timer_distribution(void) } } =20 - if (timer_delete(id)) { - ksft_perror("Can't delete timer"); - return -1; - } + ksft_test_result((now - start <=3D 5), "%s\n", __func__); =20 - ksft_test_result_pass("check_timer_distribution\n"); return 0; } =20 @@ -265,7 +276,7 @@ int main(int argc, char **argv) ksft_print_header(); ksft_set_plan(6); =20 - ksft_print_msg("Testing posix timers. False negative may happen on CPU ex= ecution \n"); + ksft_print_msg("Testing posix timers. False negative may happen on CPU ex= ecution\n"); ksft_print_msg("based timers if other threads run on the CPU...\n"); =20 if (check_itimer(ITIMER_VIRTUAL) < 0) --=20 2.44.0.rc1.240.g4c46232300-goog From nobody Tue Dec 23 10:26:59 2025 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3404D626AE for ; Mon, 4 Mar 2024 18:11:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709575917; cv=none; b=C6RDmaD4yLTz2ZZfeX/YJs5ydyeTwYAGog/pmcItN5nGIafKRpe3GY6PLjmjO78o7uHj4jjR7+IUfyIOICr5Vmgi13k4qhFyMx05zbuFOqD4zesvyaR827CTtmIFUKd3ZUcc+w2zfLnUAkzfzrk8Zjelsf2J9zKV+7gHXduFqls= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709575917; c=relaxed/simple; bh=MScqXbgh2ejjfIy/Sp3FOyl/aojS0G+mf0C488clcqM=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=gs3C89aH8Hu4Kgx0aAY8e3Ga6e7noDwzFWLy+m6Ja+I90dyICY9beJEZ8JhVngPaewlTug1Vhm1XQDqI5bL+o5R5211UtcW3YGmEvE2cMBu+bCGOQs6xACVxSPIxcsMXosMthCJ63OLBsDDsFqdwbeCbXcVS86b80HRKquon3U8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--edliaw.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=JUw/L3NB; arc=none smtp.client-ip=209.85.210.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--edliaw.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="JUw/L3NB" Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-6e634f550c4so301579b3a.2 for ; Mon, 04 Mar 2024 10:11:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709575915; x=1710180715; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Fs5vwdtP3lE2gaF2HIymTQhqiVBDxVfpiBYTXFLcGDM=; b=JUw/L3NB0Dee2aoGsJHgkI6pdaKAYqQ7kYe6uYcFEsfnbmbUO1qZSTcaT/6ceXIQbX Wj2G39IvAAZTCXjHeP9jTimdSrjExtSPy1UQRL236DqzvxsNRKn7JIRoP5rxYv9LU4Ws Rn0GhA5ZeljYKuKHrI8wKEU70rHH+GOklsETM2TZtp+BvJIfblmclfFFmqv/42P+OKOA aS8M5GEjNqdPFs61pFShgFbwOSdkxRJREY2CUOhcJzxHFAAotwkUy4w3AQkotPogrYDg oH0ltFqhDyl06LA8RE6qATr6XaRclhGzc3M0A6dlp/YtHdVdQ2JPFTCXD0YgPdAFHghq mqew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709575915; x=1710180715; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Fs5vwdtP3lE2gaF2HIymTQhqiVBDxVfpiBYTXFLcGDM=; b=llskuEsk+fO4N1hF8G8aox2FdhEl8usUTB1ZSYMjGwcISwt2Svys+JysyT/68CzMYq xScU7yehyZM3L5/MAtDEj0Oogad2AeFxqa1EC6YdQH/F1MmxkcArxXfHWEL1O3rbDlpH +XgSPXsjNpRWKAUCtt4fTh7vnQzTy5tZEtF7llfgMS65gLJKJLZ5XKqRdRMLVXlPpKiJ kdLt5yWow9YmyhRyLuvgSqueF1GUFm5A79hQ2e01q/7j2Z+lZ0K7i+786oblyR05LyTv lB/20/eKZWgcjyBUWgXep6ajmCKTPjJR3AIz2qeXhzYcUnNfAMAdZtiTx6XSTRwTsKpu mNiw== X-Gm-Message-State: AOJu0YznYjNfq7Uh8ThJiZUUx8GDMNKVxlLJaFuI4+Wv9S8dgXsgqk1D o3gUmIMiMqzaN4Motysa6BTJtv5wZUdkDqAY4wBdL/zUNblUuF7GulmmcJBXWRQpiXO5mGULuSm eGAstvlgi1TN/JbMWgJAVMWE6ky9c1frpwQIKSb3qIYzoo1i2SfyZJ6FJB2XsRAeTjuRC4fI8Xq TZis9ZGHhpm3pC2Y3HN/8EM4vhILrbMnfikAEz6VG1 X-Google-Smtp-Source: AGHT+IF7KqVnyc41EkIolVtSQO6rbDjjbbUw9e2d1bsUL0JqfeSVikRN4mrRaBo+n6JY/DRESTPhKhoP27U= X-Received: from edliaw.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:305d]) (user=edliaw job=sendgmr) by 2002:aa7:888a:0:b0:6e6:2541:8b4a with SMTP id z10-20020aa7888a000000b006e625418b4amr24416pfe.5.1709575914639; Mon, 04 Mar 2024 10:11:54 -0800 (PST) Date: Mon, 4 Mar 2024 18:11:33 +0000 In-Reply-To: <20240304181140.644212-1-edliaw@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240304181140.644212-1-edliaw@google.com> X-Mailer: git-send-email 2.44.0.rc1.240.g4c46232300-goog Message-ID: <20240304181140.644212-3-edliaw@google.com> Subject: [PATCH v1 2/3] selftests/timers/posix_timers: Use TAP reporting format From: Edward Liaw To: linux-kernel@vger.kernel.org, John Stultz , Thomas Gleixner , Stephen Boyd , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: linux-kselftest@vger.kernel.org, kernel-team@android.com, Edward Liaw , llvm@lists.linux.dev Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" No functional change. Signed-off-by: Thomas Gleixner [edliaw: Fix checkpatch recommendations] Signed-off-by: Edward Liaw --- tools/testing/selftests/timers/posix_timers.c | 161 +++++++----------- 1 file changed, 66 insertions(+), 95 deletions(-) diff --git a/tools/testing/selftests/timers/posix_timers.c b/tools/testing/= selftests/timers/posix_timers.c index 03779b6b3c20..0f550fc9e879 100644 --- a/tools/testing/selftests/timers/posix_timers.c +++ b/tools/testing/selftests/timers/posix_timers.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -19,6 +20,20 @@ #define DELAY 2 #define USECS_PER_SEC 1000000 =20 +static void __fatal_error(const char *test, const char *name, const char *= what) +{ + char buf[64]; + + strerror_r(errno, buf, sizeof(buf)); + + if (name && strlen(name)) + ksft_exit_fail_msg("%s %s %s %s\n", test, name, what, buf); + else + ksft_exit_fail_msg("%s %s %s\n", test, what, buf); +} + +#define fatal_error(name, what) __fatal_error(__func__, name, what) + static volatile int done; =20 /* Busy loop in userspace to elapse ITIMER_VIRTUAL */ @@ -67,15 +82,13 @@ static int check_diff(struct timeval start, struct time= val end) diff =3D end.tv_usec - start.tv_usec; diff +=3D (end.tv_sec - start.tv_sec) * USECS_PER_SEC; =20 - if (abs(diff - DELAY * USECS_PER_SEC) > USECS_PER_SEC / 2) { - printf("Diff too high: %lld..", diff); + if (abs(diff - DELAY * USECS_PER_SEC) > USECS_PER_SEC / 2) return -1; - } =20 return 0; } =20 -static int check_itimer(int which) +static void check_itimer(int which) { const char *name; int err; @@ -91,7 +104,7 @@ static int check_itimer(int which) else if (which =3D=3D ITIMER_REAL) name =3D "ITIMER_REAL"; else - return -1; + ksft_exit_fail_msg("Unknown setitimer() type %d\n", which); =20 done =3D 0; =20 @@ -103,16 +116,12 @@ static int check_itimer(int which) signal(SIGALRM, sig_handler); =20 err =3D gettimeofday(&start, NULL); - if (err < 0) { - ksft_perror("Can't call gettimeofday()"); - return -1; - } + if (err < 0) + fatal_error(name, "gettimeofday()"); =20 err =3D setitimer(which, &val, NULL); - if (err < 0) { - ksft_perror("Can't set timer"); - return -1; - } + if (err < 0) + fatal_error(name, "setitimer()"); =20 if (which =3D=3D ITIMER_VIRTUAL) user_loop(); @@ -122,19 +131,15 @@ static int check_itimer(int which) idle_loop(); =20 err =3D gettimeofday(&end, NULL); - if (err < 0) { - ksft_perror("Can't call gettimeofday()"); - return -1; - } + if (err < 0) + fatal_error(name, "gettimeofday()"); =20 - ksft_test_result(check_diff(start, end) =3D=3D 0, "%s\n", name); - - return 0; + ksft_test_result(!check_diff(start, end), "%s %s\n", __func__, name); } =20 -static int check_timer_create(int which) +static void check_timer_create(int which) { - const char *type; + const char *name; int err; timer_t id; struct timeval start, end; @@ -142,47 +147,37 @@ static int check_timer_create(int which) .it_value.tv_sec =3D DELAY, }; =20 - if (which =3D=3D CLOCK_THREAD_CPUTIME_ID) { - type =3D "thread"; - } else if (which =3D=3D CLOCK_PROCESS_CPUTIME_ID) { - type =3D "process"; - } else { - ksft_print_msg("Unknown timer_create() type %d\n", which); - return -1; - } + if (which =3D=3D CLOCK_THREAD_CPUTIME_ID) + name =3D "thread"; + else if (which =3D=3D CLOCK_PROCESS_CPUTIME_ID) + name =3D "process"; + else + ksft_exit_fail_msg("Unknown timer_create() type %d\n", which); =20 done =3D 0; err =3D timer_create(which, NULL, &id); - if (err < 0) { - ksft_perror("Can't create timer"); - return -1; - } - signal(SIGALRM, sig_handler); + if (err < 0) + fatal_error(name, "timer_create()"); + + if (signal(SIGALRM, sig_handler) =3D=3D SIG_ERR) + fatal_error(name, "signal()"); =20 err =3D gettimeofday(&start, NULL); - if (err < 0) { - ksft_perror("Can't call gettimeofday()"); - return -1; - } + if (err < 0) + fatal_error(name, "gettimeofday()"); =20 err =3D timer_settime(id, 0, &val, NULL); - if (err < 0) { - ksft_perror("Can't set timer"); - return -1; - } + if (err < 0) + fatal_error(name, "timer_settime()"); =20 user_loop(); =20 err =3D gettimeofday(&end, NULL); - if (err < 0) { - ksft_perror("Can't call gettimeofday()"); - return -1; - } + if (err < 0) + fatal_error(name, "gettimeofday()"); =20 ksft_test_result(check_diff(start, end) =3D=3D 0, - "timer_create() per %s\n", type); - - return 0; + "%s %s\n", __func__, name); } =20 static int remain; @@ -205,7 +200,7 @@ static void distribution_handler(int nr) * Test that all running threads _eventually_ receive CLOCK_PROCESS_CPUTIM= E_ID * timer signals. This primarily tests that the kernel does not favour any= one. */ -static int check_timer_distribution(void) +static void check_timer_distribution(void) { const int nthreads =3D 10; pthread_t threads[nthreads]; @@ -221,26 +216,20 @@ static int check_timer_distribution(void) =20 done =3D 0; remain =3D nthreads + 1; /* worker threads + this thread */ - signal(SIGALRM, distribution_handler); + if (signal(SIGALRM, distribution_handler) =3D=3D SIG_ERR) + fatal_error(NULL, "signal()"); + err =3D timer_create(CLOCK_PROCESS_CPUTIME_ID, NULL, &id); - if (err < 0) { - ksft_perror("Can't create timer"); - return -1; - } + if (err < 0) + fatal_error(NULL, "timer_create()"); + err =3D timer_settime(id, 0, &val, NULL); - if (err < 0) { - ksft_perror("Can't set timer"); - return -1; - } + if (err < 0) + fatal_error(NULL, "timer_settime()"); =20 for (i =3D 0; i < nthreads; i++) { - err =3D pthread_create(&threads[i], NULL, distribution_thread, - NULL); - if (err) { - ksft_print_msg("Can't create thread: %s (%d)\n", - strerror(errno), errno); - return -1; - } + if (pthread_create(&threads[i], NULL, distribution_thread, NULL)) + fatal_error(NULL, "pthread_create()"); } =20 /* Wait for all threads to receive the signal. */ @@ -252,23 +241,15 @@ static int check_timer_distribution(void) } done =3D 1; =20 - if (timer_delete(id)) { - ksft_perror("Can't delete timer\n"); - return -1; - } + if (timer_delete(id)) + fatal_error(NULL, "timer_delete()"); =20 for (i =3D 0; i < nthreads; i++) { - err =3D pthread_join(threads[i], NULL); - if (err) { - ksft_print_msg("Can't join thread: %s (%d)\n", - strerror(errno), errno); - return -1; - } + if (pthread_join(threads[i], NULL)) + fatal_error(NULL, "pthread_join()"); } =20 ksft_test_result((now - start <=3D 5), "%s\n", __func__); - - return 0; } =20 int main(int argc, char **argv) @@ -279,17 +260,10 @@ int main(int argc, char **argv) ksft_print_msg("Testing posix timers. False negative may happen on CPU ex= ecution\n"); ksft_print_msg("based timers if other threads run on the CPU...\n"); =20 - if (check_itimer(ITIMER_VIRTUAL) < 0) - return ksft_exit_fail(); - - if (check_itimer(ITIMER_PROF) < 0) - return ksft_exit_fail(); - - if (check_itimer(ITIMER_REAL) < 0) - return ksft_exit_fail(); - - if (check_timer_create(CLOCK_THREAD_CPUTIME_ID) < 0) - return ksft_exit_fail(); + check_itimer(ITIMER_VIRTUAL); + check_itimer(ITIMER_PROF); + check_itimer(ITIMER_REAL); + check_timer_create(CLOCK_THREAD_CPUTIME_ID); =20 /* * It's unfortunately hard to reliably test a timer expiration @@ -300,11 +274,8 @@ int main(int argc, char **argv) * to ensure true parallelism. So test only one thread until we * find a better solution. */ - if (check_timer_create(CLOCK_PROCESS_CPUTIME_ID) < 0) - return ksft_exit_fail(); - - if (check_timer_distribution() < 0) - return ksft_exit_fail(); + check_timer_create(CLOCK_PROCESS_CPUTIME_ID); + check_timer_distribution(); =20 ksft_finished(); } --=20 2.44.0.rc1.240.g4c46232300-goog From nobody Tue Dec 23 10:26:59 2025 Received: from mail-pf1-f201.google.com (mail-pf1-f201.google.com [209.85.210.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E79D626CB for ; Mon, 4 Mar 2024 18:11:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709575919; cv=none; b=qIddNg9k9D8B7xJQ7tBD3HKYMpfdLf2fkybozgTlI69YDNrqad2/LCQhz1X1YSf9EDx8bXxo4bUqy/zlLUS7m0VhU5NfGRruGoMjKgYkaK7Ahq9Xckt/svDiGALMl3IYKmL60UTYO2XqzBczc5GCy9rWLwQsy5E1tCO5PbO5cKw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709575919; c=relaxed/simple; bh=FqLV9lNiSU7gSVzmh0RUNwWYr0jxygkZHnJe2yCKIHk=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=EnY+e2Np1EepXK2W+IAcl4DnQENcd/gVFBe0l9DNvXQj8xUmF2P9ysvFCoQk0oxRSYe8lfd8eQ0Dpzdl+0WDeDQj7pEfmGVI18QRPWkgEN3EGgthLRJ00NMpHSXsoWVyggeUbWB2Ot2k+cNn1oomFB0Mt35hlKmLx1ItiQB0Msg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--edliaw.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=RgdEiJpv; arc=none smtp.client-ip=209.85.210.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--edliaw.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="RgdEiJpv" Received: by mail-pf1-f201.google.com with SMTP id d2e1a72fcca58-6e4867c8ea5so4741845b3a.1 for ; Mon, 04 Mar 2024 10:11:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709575918; x=1710180718; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=+K8qGGJZU0dVFlAnq42rJW59Laz5svfdA3lu6VKJprE=; b=RgdEiJpvj3Bmgib+raIdYN4WBa77xy6L6FhaoQOrogFyHQj5JCmOM1w8oNTLfqiRtB uyUTtm2hVM4A16ZbrViQGNo8Jz/I+HVoMwFWYQ4OSS4TUa9qfDpKK4c9ZH34W9LuvZRV NL8bQDrfUl/1HB1yN3CZCMx8hXFE31j1+B768iEeKPNc6t5sSoRPOtPkm7jG1ovfYYDU wioFoQeuaU1xdqIbCiySvUE05cuWEznqW4uM6+7It+Rh04WDgXedYf4xMp0P97nlXXcj w3T4/L1yDfYCJlLYus+bs+NlCysjmR3XLUGIZ52KPqT7IFCDfCllSMoKbWXzN+D0OuVc 8aBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709575918; x=1710180718; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+K8qGGJZU0dVFlAnq42rJW59Laz5svfdA3lu6VKJprE=; b=Jp09IITzLlD6ouoeuuNVSo1d4cR4VfoI/62OYEZ/GDAmnruOJ8BSq5ye5EzkU9ozOA 5UWnd08JXL1ewYMyR7lfARfEXrhg0VQcowLI8nTEkL7OFSlpMMeEP8hsVLFm9EjCy3kB CazVm0tv0nt2HlveHrpmf2D/CG+6hau8bsD5lFnSSBmygvxyrS1+KsyUgMTNCVCxx3dx 4o13RU1Em9y6zdef4tgZhpaV06Qrmtscg1QBn1ibup+noAJj8pauDf4ZxciBbVBrc+9K iCkv/Le3NvhYvvemgnP7vst/yYFGq0ySncFBZZr9cNcphKXdjkWDuUr+ZrHzrsVjkW8R NrJQ== X-Gm-Message-State: AOJu0Yx/FV/tY3D+l0OgDni8QB8eVmowY9ErYZtRg1zhDkT8tvArdyRs CXJY8GjPNNR72PZQTljKmtHaXb7FVqIGQvracTuHfomUVEK9/qX46DCmgNGq/P6X+LFTgso6BiT aYjjuCllKSIEx+MEShpBka8B2szw42NcYhoT3JoZ7CON5ew5X6NIdnkkUiJmyC6+0KvWPfvKC2q vL+cvNzgc6jeno4lRBF+WP7i6FTD3T8Ak7Gr+V0HND X-Google-Smtp-Source: AGHT+IEBwRfcpn5x9AGNzJLGA/hp7XJkS1FIgFGPUMaa1opevJ7wVveO9HifQjBfzJMQbCakv4yNwPEcBGY= X-Received: from edliaw.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:305d]) (user=edliaw job=sendgmr) by 2002:a05:6a00:27a0:b0:6e5:8053:af92 with SMTP id bd32-20020a056a0027a000b006e58053af92mr788006pfb.4.1709575917445; Mon, 04 Mar 2024 10:11:57 -0800 (PST) Date: Mon, 4 Mar 2024 18:11:34 +0000 In-Reply-To: <20240304181140.644212-1-edliaw@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240304181140.644212-1-edliaw@google.com> X-Mailer: git-send-email 2.44.0.rc1.240.g4c46232300-goog Message-ID: <20240304181140.644212-4-edliaw@google.com> Subject: [PATCH v1 3/3] selftests/timers/posix_timers: Use llabs for long long From: Edward Liaw To: linux-kernel@vger.kernel.org, John Stultz , Thomas Gleixner , Stephen Boyd , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: linux-kselftest@vger.kernel.org, kernel-team@android.com, Edward Liaw , llvm@lists.linux.dev Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Fixes clang warning: absolute value function 'abs' given an argument of type 'long long' but has parameter of type 'int' which may cause truncation of value. Signed-off-by: Edward Liaw --- tools/testing/selftests/timers/posix_timers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/timers/posix_timers.c b/tools/testing/= selftests/timers/posix_timers.c index 0f550fc9e879..78b4b2d3dc44 100644 --- a/tools/testing/selftests/timers/posix_timers.c +++ b/tools/testing/selftests/timers/posix_timers.c @@ -82,7 +82,7 @@ static int check_diff(struct timeval start, struct timeva= l end) diff =3D end.tv_usec - start.tv_usec; diff +=3D (end.tv_sec - start.tv_sec) * USECS_PER_SEC; =20 - if (abs(diff - DELAY * USECS_PER_SEC) > USECS_PER_SEC / 2) + if (llabs(diff - DELAY * USECS_PER_SEC) > USECS_PER_SEC / 2) return -1; =20 return 0; --=20 2.44.0.rc1.240.g4c46232300-goog