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 +}