From 68441476e09b0b424b71f81eca8a8400d7a327d8 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Sat, 10 Nov 2018 08:32:42 +0100 Subject: [PATCH] mescc: Support GNU make with POSIX. * include/linux/x86/syscall.h (SYS_sigprocmask): New macro. * include/linux/x86_64/syscall.h (SYS_rt_sigprocmask): New macro. * include/signal.h (SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK): New macro. (sigprocmask): Declare. * lib/linux/gnu.c (sigprocmask): New function. --- include/linux/x86/syscall.h | 3 +++ include/linux/x86_64/syscall.h | 3 +++ include/signal.h | 6 ++++++ include/unistd.h | 2 ++ lib/linux/gnu.c | 11 +++++++++++ 5 files changed, 25 insertions(+) diff --git a/include/linux/x86/syscall.h b/include/linux/x86/syscall.h index dd063c82..4414d3c1 100644 --- a/include/linux/x86/syscall.h +++ b/include/linux/x86/syscall.h @@ -79,4 +79,7 @@ #define SYS_getegid 0x32 #define SYS_setgid 0x3e +// make+POSIX +#define SYS_sigprocmask 0x7e + #endif // __MES_LINUX_X86_SYSCALL_H diff --git a/include/linux/x86_64/syscall.h b/include/linux/x86_64/syscall.h index fddce5c4..0c73df78 100644 --- a/include/linux/x86_64/syscall.h +++ b/include/linux/x86_64/syscall.h @@ -75,4 +75,7 @@ #define SYS_geteuid 0x6b #define SYS_getegid 0x6c +// make+POSIX +#define SYS_rt_sigprocmask 0x0e + #endif // __MES_LINUX_X86_64_SYSCALL_H diff --git a/include/signal.h b/include/signal.h index 21079bac..bfb18b1c 100644 --- a/include/signal.h +++ b/include/signal.h @@ -228,6 +228,12 @@ void* signal (int signum, void * action); sighandler_t signal (int signum, sighandler_t action); #endif int sigemptyset (sigset_t *set); +#ifndef SIG_BLOCK +#define SIG_BLOCK 0 +#define SIG_UNBLOCK 1 +#define SIG_SETMASK 2 +#endif +int sigprocmask (int how, sigset_t const *set, sigset_t *oldset); #endif //! WITH_GLIBC diff --git a/include/unistd.h b/include/unistd.h index d6c218e4..8810cbf4 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -29,7 +29,9 @@ #else // ! WITH_GLIBC +#if defined (BOOTSTRAP_WITH_POSIX) #define _POSIX_VERSION 199009L +#endif #include #ifndef NULL diff --git a/lib/linux/gnu.c b/lib/linux/gnu.c index bd914d28..753713ff 100644 --- a/lib/linux/gnu.c +++ b/lib/linux/gnu.c @@ -198,3 +198,14 @@ setgid (gid_t newgid) { return _sys_call1 (SYS_setgid, (long)newgid); } + +// make+POSIX +int +sigprocmask (int how, sigset_t const *set, sigset_t *oldset) +{ +#if __i386__ + return _sys_call3 (SYS_sigprocmask, (long)how, (long)set, (long)oldset); +#else + return _sys_call3 (SYS_rt_sigprocmask, (long)how, (long)set, (long)oldset); +#endif +}