[klibc] [klibc:time64] i386, m68k, s390: signal: Switch to RT signal API

klibc-bot for Ben Hutchings ben at decadent.org.uk
Sat Jan 14 14:03:07 PST 2023


Commit-ID:  213ca3d1a7de314dc61a02bb7619295f5b14f8a5
Gitweb:     http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=213ca3d1a7de314dc61a02bb7619295f5b14f8a5
Author:     Ben Hutchings <ben at decadent.org.uk>
AuthorDate: Sat, 14 Jan 2023 04:09:21 +0100
Committer:  Ben Hutchings <ben at decadent.org.uk>
CommitDate: Sat, 14 Jan 2023 18:09:10 +0100

[klibc] i386,m68k,s390: signal: Switch to RT signal API

These are the last 3 architectures not using the RT signal system
calls and structures.  Change them over so that we won't need to
keep support the old API.

Signed-off-by: Ben Hutchings <ben at decadent.org.uk>

---
 usr/include/arch/i386/klibc/archconfig.h |  3 +-
 usr/include/arch/i386/klibc/archsignal.h | 15 +++++---
 usr/include/arch/m68k/klibc/archconfig.h |  1 +
 usr/include/arch/m68k/klibc/archsignal.h | 64 +++++++++++++++++++++++++++++++-
 usr/include/arch/s390/klibc/archconfig.h |  1 +
 usr/include/arch/s390/klibc/archsignal.h |  9 ++++-
 6 files changed, 82 insertions(+), 11 deletions(-)

diff --git a/usr/include/arch/i386/klibc/archconfig.h b/usr/include/arch/i386/klibc/archconfig.h
index f070f5bb..3e52a6b6 100644
--- a/usr/include/arch/i386/klibc/archconfig.h
+++ b/usr/include/arch/i386/klibc/archconfig.h
@@ -9,8 +9,7 @@
 #ifndef _KLIBC_ARCHCONFIG_H
 #define _KLIBC_ARCHCONFIG_H
 
-/* The i386 <asm/signal.h> is still not clean enough for this... */
-#define _KLIBC_USE_RT_SIG 0
+#define _KLIBC_USE_RT_SIG 1
 
 /* We have klibc/archinit.h and __libc_archinit() */
 #define _KLIBC_HAS_ARCHINIT 1
diff --git a/usr/include/arch/i386/klibc/archsignal.h b/usr/include/arch/i386/klibc/archsignal.h
index 661131bc..a80eca80 100644
--- a/usr/include/arch/i386/klibc/archsignal.h
+++ b/usr/include/arch/i386/klibc/archsignal.h
@@ -7,8 +7,13 @@
 #ifndef _KLIBC_ARCHSIGNAL_H
 #define _KLIBC_ARCHSIGNAL_H
 
-#define NSIG		32
-typedef unsigned long sigset_t;
+#define _NSIG		64
+#define _NSIG_BPW	32
+#define _NSIG_WORDS	(_NSIG / _NSIG_BPW)
+
+typedef struct {
+	unsigned long sig[_NSIG_WORDS];
+} sigset_t;
 
 #define SIGHUP		 1
 #define SIGINT		 2
@@ -59,9 +64,9 @@ struct sigaction {
 		__sighandler_t _sa_handler;
 		void (*_sa_sigaction)(int, struct siginfo *, void *);
 	} _u;
-	sigset_t sa_mask;
-	unsigned long sa_flags;
-	void (*sa_restorer)(void);
+	unsigned int	sa_flags;
+	__sigrestore_t	sa_restorer;
+	sigset_t	sa_mask;        /* mask last for extensibility */
 };
 
 #define sa_handler	_u._sa_handler
diff --git a/usr/include/arch/m68k/klibc/archconfig.h b/usr/include/arch/m68k/klibc/archconfig.h
index 10ef62e6..6213277b 100644
--- a/usr/include/arch/m68k/klibc/archconfig.h
+++ b/usr/include/arch/m68k/klibc/archconfig.h
@@ -11,5 +11,6 @@
 
 /* On m68k, sys_mmap2 uses the current page size as the shift factor */
 #define _KLIBC_MMAP2_SHIFT	__getpageshift()
+#define _KLIBC_USE_RT_SIG 1
 
 #endif				/* _KLIBC_ARCHCONFIG_H */
diff --git a/usr/include/arch/m68k/klibc/archsignal.h b/usr/include/arch/m68k/klibc/archsignal.h
index bf7912ae..64613466 100644
--- a/usr/include/arch/m68k/klibc/archsignal.h
+++ b/usr/include/arch/m68k/klibc/archsignal.h
@@ -8,7 +8,67 @@
 #ifndef _KLIBC_ARCHSIGNAL_H
 #define _KLIBC_ARCHSIGNAL_H
 
-#include <asm/signal.h>
-/* No special stuff for this architecture */
+#define _NSIG		64
+#define _NSIG_BPW	32
+#define _NSIG_WORDS	(_NSIG / _NSIG_BPW)
+
+typedef struct {
+	unsigned long sig[_NSIG_WORDS];
+} sigset_t;
+
+#define SIGHUP		1
+#define SIGINT		2
+#define SIGQUIT		3
+#define SIGILL		4
+#define SIGTRAP		5
+#define SIGABRT		6
+#define SIGIOT		6
+#define SIGBUS		7
+#define SIGFPE		8
+#define SIGKILL		9
+#define SIGUSR1		10
+#define SIGSEGV		11
+#define SIGUSR2		12
+#define SIGPIPE		13
+#define SIGALRM		14
+#define SIGTERM		15
+#define SIGSTKFLT	16
+#define SIGCHLD		17
+#define SIGCONT		18
+#define SIGSTOP		19
+#define SIGTSTP		20
+#define SIGTTIN		21
+#define SIGTTOU		22
+#define SIGURG		23
+#define SIGXCPU		24
+#define SIGXFSZ		25
+#define SIGVTALRM	26
+#define SIGPROF		27
+#define SIGWINCH	28
+#define SIGIO		29
+#define SIGPOLL		SIGIO
+#define SIGPWR		30
+#define SIGSYS		31
+#define SIGUNUSED	31
+
+#define SIGRTMIN	32
+#define SIGRTMAX	_NSIG
+
+#include <asm-generic/signal-defs.h>
+
+struct siginfo;
+
+struct sigaction {
+	union {
+		__sighandler_t _sa_handler;
+		void (*_sa_sigaction)(int, struct siginfo *, void *);
+	} _u;
+	unsigned int	sa_flags;
+	__sigrestore_t	sa_restorer;
+	sigset_t	sa_mask;        /* mask last for extensibility */
+};
+
+#define sa_handler	_u._sa_handler
+#define sa_sigaction	_u._sa_sigaction
 
 #endif
diff --git a/usr/include/arch/s390/klibc/archconfig.h b/usr/include/arch/s390/klibc/archconfig.h
index b08bbb3f..52d324c9 100644
--- a/usr/include/arch/s390/klibc/archconfig.h
+++ b/usr/include/arch/s390/klibc/archconfig.h
@@ -16,5 +16,6 @@
 #define _KLIBC_NEEDS_SA_RESTORER 1
 /* Our restorer will call rt_sigreturn() */
 #define _KLIBC_NEEDS_SA_SIGINFO 1
+#define _KLIBC_USE_RT_SIG 1
 
 #endif				/* _KLIBC_ARCHCONFIG_H */
diff --git a/usr/include/arch/s390/klibc/archsignal.h b/usr/include/arch/s390/klibc/archsignal.h
index a79b166b..06c23960 100644
--- a/usr/include/arch/s390/klibc/archsignal.h
+++ b/usr/include/arch/s390/klibc/archsignal.h
@@ -8,8 +8,13 @@
 #ifndef _KLIBC_ARCHSIGNAL_H
 #define _KLIBC_ARCHSIGNAL_H
 
-#define NSIG		32
-typedef unsigned long sigset_t;
+#define _NSIG		64
+#define _NSIG_BPW	64
+#define _NSIG_WORDS	(_NSIG / _NSIG_BPW)
+
+typedef struct {
+	unsigned long sig[_NSIG_WORDS];
+} sigset_t;
 
 #define SIGHUP		1
 #define SIGINT		2


More information about the klibc mailing list