OrionLibC
Barry Adding more signal functions fd1ac46 (3 years, 2 months ago)
diff --git a/signal/sigsetops.c b/signal/sigsetops.c
new file mode 100644
index 0000000..08cf870
--- /dev/null
+++ b/signal/sigsetops.c
@@ -0,0 +1,53 @@
+#include <signal.h>
+#include <errno.h>
+
+/* Empty a signal set */
+int
+sigemptyset(sigset_t *set)
+{
+ *set = 0;
+ return 0;
+}
+
+/* Fill a signal set */
+int
+sigfillset(sigset_t *set)
+{
+ *set = 0xFFFFFFFF;
+ return 0;
+}
+
+/* Add a signal to a signal set */
+int
+sigaddset(sigset_t *set, int signum)
+{
+ if (signum < 0 || signum >= 32) {
+ errno = EINVAL;
+ return -1;
+ }
+ *set |= (1 << (signum - 1));
+ return 0;
+}
+
+/* Remove a signal from a signal set */
+int
+sigdelset(sigset_t *set, int signum)
+{
+ if (signum < 0 || signum >= 32) {
+ errno = EINVAL;
+ return -1;
+ }
+ *set &= ~(1 << (signum - 1));
+ return 0;
+}
+
+/* Check if a signal is in a signal set */
+int
+sigismember(const sigset_t *set, int signum)
+{
+ if (signum < 0 || signum >= 32) {
+ errno = EINVAL;
+ return -1;
+ }
+ return (*set & (1 << (signum - 1)));
+}