Commit c31afc3736
lib/std/os/linux.zig
@@ -697,18 +697,6 @@ pub fn sigaction(sig: u6, noalias act: *const Sigaction, noalias oact: ?*Sigacti
return 0;
}
-pub fn blockAllSignals(set: *sigset_t) void {
- _ = syscall4(SYS_rt_sigprocmask, SIG_BLOCK, @ptrToInt(&all_mask), @ptrToInt(set), NSIG / 8);
-}
-
-pub fn blockAppSignals(set: *sigset_t) void {
- _ = syscall4(SYS_rt_sigprocmask, SIG_BLOCK, @ptrToInt(&app_mask), @ptrToInt(set), NSIG / 8);
-}
-
-pub fn restoreSignals(set: *sigset_t) void {
- _ = syscall4(SYS_rt_sigprocmask, SIG_SETMASK, @ptrToInt(set), 0, NSIG / 8);
-}
-
pub fn sigaddset(set: *sigset_t, sig: u6) void {
const s = sig - 1;
(set.*)[@intCast(usize, s) / usize.bit_count] |= @intCast(usize, 1) << (s & (usize.bit_count - 1));
lib/std/os.zig
@@ -225,10 +225,15 @@ pub fn raise(sig: u8) RaiseError!void {
if (builtin.os == .linux) {
var set: linux.sigset_t = undefined;
- linux.blockAppSignals(&set);
+ // block application signals
+ _ = linux.sigprocmask(SIG_BLOCK, &linux.app_mask, &set);
+
const tid = linux.syscall0(linux.SYS_gettid);
const rc = linux.syscall2(linux.SYS_tkill, tid, sig);
- linux.restoreSignals(&set);
+
+ // restore signal mask
+ _ = linux.sigprocmask(SIG_SETMASK, &set, null);
+
switch (errno(rc)) {
0 => return,
else => |err| return unexpectedErrno(err),