From c31afc3736215ef68e7f838ede14c2a33828c9c7 Mon Sep 17 00:00:00 2001 From: daurnimator Date: Sun, 22 Dec 2019 12:09:21 +1100 Subject: [PATCH] std: remove high level linux sigprocmask wrappers --- lib/std/os.zig | 9 +++++++-- lib/std/os/linux.zig | 12 ------------ 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/lib/std/os.zig b/lib/std/os.zig index 3cc43357b..1c4ef0133 100644 --- a/lib/std/os.zig +++ b/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), diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index 1adfa1bab..89f3ef756 100644 --- a/lib/std/os/linux.zig +++ b/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));