📄 _sigset.c
字号:
#include <lib.h>/* XXX - these have to be hidden because signal() uses them and signal() is * ANSI and not POSIX. It would be surely be better to use macros for the * library and system uses, and perhaps macros as well as functions for the * POSIX user interface. The macros would not need underlines. It may be * inconvenient to match the exact semantics of the current functions * because the interface is bloated by reporting errors. For library and * system uses, the signal number is mostly already known to be valid * before the sigset-changing routines are called. */#define sigaddset _sigaddset#define sigdelset _sigdelset#define sigemptyset _sigemptyset#define sigfillset _sigfillset#define sigismember _sigismember#include <signal.h>/* Low bit of signal masks. */#define SIGBIT_0 ((sigset_t) 1)/* Mask of valid signals (0 - _NSIG). Assume the shift doesn't overflow. */#define SIGMASK ((SIGBIT_0 << (_NSIG + 1)) - 1)#define sigisvalid(signo) ((unsigned) (signo) <= _NSIG)PUBLIC int sigaddset(set, signo)sigset_t *set;int signo;{ if (!sigisvalid(signo)) { errno = EINVAL; return -1; } *set |= SIGBIT_0 << signo; return 0;}PUBLIC int sigdelset(set, signo)sigset_t *set;int signo;{ if (!sigisvalid(signo)) { errno = EINVAL; return -1; } *set &= ~(SIGBIT_0 << signo); return 0;}PUBLIC int sigemptyset(set)sigset_t *set;{ *set = 0; return 0;}PUBLIC int sigfillset(set)sigset_t *set;{ *set = SIGMASK; return 0;}PUBLIC int sigismember(set, signo)sigset_t *set;int signo;{ if (!sigisvalid(signo)) { errno = EINVAL; return -1; } if (*set & (SIGBIT_0 << signo)) return 1; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -