summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2024-11-15 20:33:41 -0700
committerLuke T. Shumaker <lukeshu@lukeshu.com>2024-11-19 20:15:27 -0700
commit1dd3b34b9117d4686a131047afc381ba15b8aac3 (patch)
treeb6d57da9c248a3f9c78a6d2573cafbc65b59ec04
parent936fd0145896acbf55de496f036af55a01b80e82 (diff)
libcr: Use SIG_SETMASK instead of SIG_(UN)BLOCK
-rw-r--r--libcr/coroutine.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libcr/coroutine.c b/libcr/coroutine.c
index 205d0bb..7f61e94 100644
--- a/libcr/coroutine.c
+++ b/libcr/coroutine.c
@@ -161,15 +161,17 @@
static inline void cr_plat_wait_for_interrupt(void) {
pause();
}
+ /* For a signal to be *in* the mask means that the signal is
+ * *blocked*. */
void _cr_plat_disable_interrupts(void) {
sigset_t all;
sigfillset(&all);
- sigprocmask(SIG_BLOCK, &all, NULL);
+ sigprocmask(SIG_SETMASK, &all, NULL);
}
void _cr_plat_enable_interrupts(void) {
- sigset_t all;
- sigfillset(&all);
- sigprocmask(SIG_UNBLOCK, &all, NULL);
+ sigset_t zero;
+ sigemptyset(&zero);
+ sigprocmask(SIG_SETMASK, &zero, NULL);
}
#elif __arm__
/* Assume bare-metal if !__unix__. */