| author | |
| committer | |
| log | c31afc3736215ef68e7f838ede14c2a33828c9c7 |
| tree | 498427a5a901671da863e5cbc26d84d4f80c2a0c |
| parent | 9577ff1c904daf7384197b3ee84923bdc18afc28 |
| signature | Commit is signed but in an unrecognized format. |
2 files changed, 7 insertions(+), 14 deletions(-)
lib/std/os.zig+7-2| ... | ... | @@ -225,10 +225,15 @@ pub fn raise(sig: u8) RaiseError!void { |
| 225 | 225 | |
| 226 | 226 | if (builtin.os == .linux) { |
| 227 | 227 | var set: linux.sigset_t = undefined; |
| 228 | linux.blockAppSignals(&set); | |
| 228 | // block application signals | |
| 229 | _ = linux.sigprocmask(SIG_BLOCK, &linux.app_mask, &set); | |
| 230 | ||
| 229 | 231 | const tid = linux.syscall0(linux.SYS_gettid); |
| 230 | 232 | const rc = linux.syscall2(linux.SYS_tkill, tid, sig); |
| 231 | linux.restoreSignals(&set); | |
| 233 | ||
| 234 | // restore signal mask | |
| 235 | _ = linux.sigprocmask(SIG_SETMASK, &set, null); | |
| 236 | ||
| 232 | 237 | switch (errno(rc)) { |
| 233 | 238 | 0 => return, |
| 234 | 239 | else => |err| return unexpectedErrno(err), |
lib/std/os/linux.zig-12| ... | ... | @@ -697,18 +697,6 @@ pub fn sigaction(sig: u6, noalias act: *const Sigaction, noalias oact: ?*Sigacti |
| 697 | 697 | return 0; |
| 698 | 698 | } |
| 699 | 699 | |
| 700 | pub fn blockAllSignals(set: *sigset_t) void { | |
| 701 | _ = syscall4(SYS_rt_sigprocmask, SIG_BLOCK, @ptrToInt(&all_mask), @ptrToInt(set), NSIG / 8); | |
| 702 | } | |
| 703 | ||
| 704 | pub fn blockAppSignals(set: *sigset_t) void { | |
| 705 | _ = syscall4(SYS_rt_sigprocmask, SIG_BLOCK, @ptrToInt(&app_mask), @ptrToInt(set), NSIG / 8); | |
| 706 | } | |
| 707 | ||
| 708 | pub fn restoreSignals(set: *sigset_t) void { | |
| 709 | _ = syscall4(SYS_rt_sigprocmask, SIG_SETMASK, @ptrToInt(set), 0, NSIG / 8); | |
| 710 | } | |
| 711 | ||
| 712 | 700 | pub fn sigaddset(set: *sigset_t, sig: u6) void { |
| 713 | 701 | const s = sig - 1; |
| 714 | 702 | (set.*)[@intCast(usize, s) / usize.bit_count] |= @intCast(usize, 1) << (s & (usize.bit_count - 1)); |