Linux Test Project
 help / color / mirror / Atom feed
* [LTP] [PATCH] lapi/signal.h: rm references to _SC_SIGRT_* and __SIGRT*
@ 2022-04-25 13:38 Richard Palethorpe via ltp
  2022-04-26 12:20 ` Cyril Hrubis
  0 siblings, 1 reply; 3+ messages in thread
From: Richard Palethorpe via ltp @ 2022-04-25 13:38 UTC (permalink / raw)
  To: ltp; +Cc: Richard Palethorpe

The old API's tst_sig.c uses_SC_SIGRT_MIN/MAX are not extant and a
quick internet search does not reveal much. It's assumed they meant
the same thing as tst_sigrt{min,max}_kern.

The fallback using __SIGRT{MIN,MAX} is also replaced with
tst_signal_is_reserved_rt. It says sigrtmin on HPPA is 37. However in
the kernel all arches have it set to 32.

In all cases __SIGRT{MIN,MAX} is replaces with constants we define as
we can not use __ variables. Two functions are introduced to make the
meaning clear when using these constants to check if a signal is
reserved and/or realtime.

Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com>
Suggested-by: Petr Vorel <pvorel@suse.cz>
Suggested-by: Cyril Hrubis <chrubis@suse.cz>
---
 include/lapi/signal.h                         | 36 ++++++-------
 lib/tst_sig.c                                 | 51 +------------------
 testcases/kernel/syscalls/ptrace/ptrace05.c   |  2 +-
 .../syscalls/rt_sigsuspend/rt_sigsuspend01.c  |  2 +-
 testcases/kernel/syscalls/sighold/sighold02.c |  4 +-
 5 files changed, 23 insertions(+), 72 deletions(-)

diff --git a/include/lapi/signal.h b/include/lapi/signal.h
index 6f4a76881..aa185a5a6 100644
--- a/include/lapi/signal.h
+++ b/include/lapi/signal.h
@@ -1,24 +1,24 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
- * Copyright (c) 2019 Linaro Limited. All rights reserved.
- * Author: Daniel Díaz <daniel.diaz@linaro.org>
+ * Copyright (c) 2022 SUSE LLC
  */
-
-#ifndef LAPI_SIGNAL_H__
-#define LAPI_SIGNAL_H__
-
 #include <signal.h>
 
-/*
- * Some libc implementations might differ in the definitions they include. This
- * covers those differences for all tests to successfully build.
- */
+const int tst_sigrtmin_kern = 32;
+const int tst_sigrtmax_kern = 64;
 
-#ifndef __SIGRTMIN
-# define __SIGRTMIN 32
-#endif
-#ifndef __SIGRTMAX
-# define __SIGRTMAX (_NSIG - 1)
-#endif
+/* Indicates that libc has reserved a RT signal for use by the system
+ * libraries. Usually threading, but could be anything. */
+__attribute__((warn_unused_result))
+static inline int tst_signal_is_reserved_rt(const int sig)
+{
+	return 	sig >= tst_sigrtmin_kern && sig < SIGRTMIN;
+}
 
-#endif /* LAPI_SIGNAL_H__ */
+/* Indicates that a signal is in the kernel's realtime set. This
+ * includes signals reserved by libc. */
+__attribute__((const, warn_unused_result))
+static inline int tst_signal_is_kern_rt(const int sig)
+{
+	return 	sig >= tst_sigrtmin_kern && sig < tst_sigrtmax_kern;
+}
diff --git a/lib/tst_sig.c b/lib/tst_sig.c
index 6d77aeafd..2db3561f5 100644
--- a/lib/tst_sig.c
+++ b/lib/tst_sig.c
@@ -69,7 +69,6 @@
 
 #include <errno.h>
 #include <string.h>
-#include <signal.h>
 #include <unistd.h>
 #include "test.h"
 #include "lapi/signal.h"
@@ -93,9 +92,6 @@ static void (*tst_setup_signal(int, void (*)(int))) (int);
 void tst_sig(int fork_flag, void (*handler) (), void (*cleanup) ())
 {
 	int sig;
-#ifdef _SC_SIGRT_MIN
-	long sigrtmin, sigrtmax;
-#endif
 
 	/*
 	 * save T_cleanup and handler function pointers
@@ -106,10 +102,6 @@ void tst_sig(int fork_flag, void (*handler) (), void (*cleanup) ())
 		/* use default handler */
 		handler = def_handler;
 	}
-#ifdef _SC_SIGRT_MIN
-	sigrtmin = sysconf(_SC_SIGRT_MIN);
-	sigrtmax = sysconf(_SC_SIGRT_MAX);
-#endif
 
 	/*
 	 * now loop through all signals and set the handlers
@@ -123,54 +115,13 @@ void tst_sig(int fork_flag, void (*handler) (), void (*cleanup) ())
 		 * SIGINFO is used for file quotas and should be expected
 		 */
 
-#ifdef _SC_SIGRT_MIN
-		if (sig >= sigrtmin && sig <= sigrtmax)
+		if (tst_signal_is_kern_rt(sig))
 			continue;
-#endif
 
 		switch (sig) {
 		case SIGKILL:
 		case SIGSTOP:
 		case SIGCONT:
-#if !defined(_SC_SIGRT_MIN) && defined(__SIGRTMIN) && defined(__SIGRTMAX)
-			/* Ignore all real-time signals */
-		case __SIGRTMIN:
-		case __SIGRTMIN + 1:
-		case __SIGRTMIN + 2:
-		case __SIGRTMIN + 3:
-		case __SIGRTMIN + 4:
-		case __SIGRTMIN + 5:
-		case __SIGRTMIN + 6:
-		case __SIGRTMIN + 7:
-		case __SIGRTMIN + 8:
-		case __SIGRTMIN + 9:
-		case __SIGRTMIN + 10:
-		case __SIGRTMIN + 11:
-		case __SIGRTMIN + 12:
-		case __SIGRTMIN + 13:
-		case __SIGRTMIN + 14:
-		case __SIGRTMIN + 15:
-/* __SIGRTMIN is 37 on HPPA rather than 32 *
- * as on i386, etc.                        */
-#if !defined(__hppa__)
-		case __SIGRTMAX - 15:
-		case __SIGRTMAX - 14:
-		case __SIGRTMAX - 13:
-		case __SIGRTMAX - 12:
-		case __SIGRTMAX - 11:
-#endif
-		case __SIGRTMAX - 10:
-		case __SIGRTMAX - 9:
-		case __SIGRTMAX - 8:
-		case __SIGRTMAX - 7:
-		case __SIGRTMAX - 6:
-		case __SIGRTMAX - 5:
-		case __SIGRTMAX - 4:
-		case __SIGRTMAX - 3:
-		case __SIGRTMAX - 2:
-		case __SIGRTMAX - 1:
-		case __SIGRTMAX:
-#endif
 #ifdef SIGSWAP
 		case SIGSWAP:
 #endif /* SIGSWAP */
diff --git a/testcases/kernel/syscalls/ptrace/ptrace05.c b/testcases/kernel/syscalls/ptrace/ptrace05.c
index 54cfa4d7b..1c1911877 100644
--- a/testcases/kernel/syscalls/ptrace/ptrace05.c
+++ b/testcases/kernel/syscalls/ptrace/ptrace05.c
@@ -72,7 +72,7 @@ int main(int argc, char **argv)
 
 	for (signum = start_signum; signum <= end_signum; signum++) {
 
-		if (signum >= __SIGRTMIN && signum < SIGRTMIN)
+		if (tst_signal_is_kern_rt(signum))
 			continue;
 
 		switch (child = fork()) {
diff --git a/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c b/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c
index 511d5fcb2..5fbfad04e 100644
--- a/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c
+++ b/testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c
@@ -50,7 +50,7 @@ static void verify_rt_sigsuspend(void)
 
 	SAFE_RT_SIGPROCMASK(0, NULL, &set2, SIGSETSIZE);
 	for (i = 1; i < SIGRTMAX; i++) {
-		if (i >= __SIGRTMIN && i < SIGRTMIN)
+		if (tst_signal_is_reserved_rt(i))
 			continue;
 		if (sigismember(&set1, i) != sigismember(&set2, i))
 			tst_brk(TFAIL, "signal mask not preserved");
diff --git a/testcases/kernel/syscalls/sighold/sighold02.c b/testcases/kernel/syscalls/sighold/sighold02.c
index 1cfb7688b..cfa4a4765 100644
--- a/testcases/kernel/syscalls/sighold/sighold02.c
+++ b/testcases/kernel/syscalls/sighold/sighold02.c
@@ -17,7 +17,7 @@
  */
 
 #define _XOPEN_SOURCE 600
-#include <signal.h>
+#include "lapi/signal.h"
 #include "tst_test.h"
 
 #ifndef NSIG
@@ -33,7 +33,7 @@ static int sigs_map[NUMSIGS];
 
 static int skip_sig(int sig)
 {
-	if (sig >= 32 && sig < SIGRTMIN)
+	if (tst_signal_is_reserved_rt(sig))
 		return 1;
 
 	switch (sig) {
-- 
2.35.1


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-04-26 15:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-25 13:38 [LTP] [PATCH] lapi/signal.h: rm references to _SC_SIGRT_* and __SIGRT* Richard Palethorpe via ltp
2022-04-26 12:20 ` Cyril Hrubis
2022-04-26 15:44   ` Richard Palethorpe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox