| author | |
| committer | |
| log | 24965af2950941969681a1eb5e1be27390083ba8 |
| tree | 003301b89048946463b466e702769288270d4850 |
| parent | df9fdb1861fa4598c6fea48080522a5d44469024 |
| signature |
2 files changed, 18 insertions(+), 0 deletions(-)
lib/std/os/linux.zig+8| ... | @@ -1759,6 +1759,14 @@ pub fn sigaddset(set: *sigset_t, sig: u6) void { | ... | @@ -1759,6 +1759,14 @@ pub fn sigaddset(set: *sigset_t, sig: u6) void { |
| 1759 | (set.*)[@as(usize, @intCast(s)) / usize_bits] |= val; | 1759 | (set.*)[@as(usize, @intCast(s)) / usize_bits] |= val; |
| 1760 | } | 1760 | } |
| 1761 | 1761 | ||
| 1762 | pub fn sigdelset(set: *sigset_t, sig: u6) void { | ||
| 1763 | const s = sig - 1; | ||
| 1764 | // shift in musl: s&8*sizeof *set->__bits-1 | ||
| 1765 | const shift = @as(u5, @intCast(s & (usize_bits - 1))); | ||
| 1766 | const val = @as(u32, @intCast(1)) << shift; | ||
| 1767 | (set.*)[@as(usize, @intCast(s)) / usize_bits] ^= val; | ||
| 1768 | } | ||
| 1769 | |||
| 1762 | pub fn sigismember(set: *const sigset_t, sig: u6) bool { | 1770 | pub fn sigismember(set: *const sigset_t, sig: u6) bool { |
| 1763 | const s = sig - 1; | 1771 | const s = sig - 1; |
| 1764 | return ((set.*)[@as(usize, @intCast(s)) / usize_bits] & (@as(usize, @intCast(1)) << @intCast(s & (usize_bits - 1)))) != 0; | 1772 | return ((set.*)[@as(usize, @intCast(s)) / usize_bits] & (@as(usize, @intCast(1)) << @intCast(s & (usize_bits - 1)))) != 0; |
lib/std/os/linux/test.zig+10| ... | @@ -140,6 +140,16 @@ test "sigset_t" { | ... | @@ -140,6 +140,16 @@ test "sigset_t" { |
| 140 | 140 | ||
| 141 | try expectEqual(linux.sigismember(&sigset, linux.SIG.USR1), true); | 141 | try expectEqual(linux.sigismember(&sigset, linux.SIG.USR1), true); |
| 142 | try expectEqual(linux.sigismember(&sigset, linux.SIG.USR2), true); | 142 | try expectEqual(linux.sigismember(&sigset, linux.SIG.USR2), true); |
| 143 | |||
| 144 | linux.sigdelset(&sigset, linux.SIG.USR1); | ||
| 145 | |||
| 146 | try expectEqual(linux.sigismember(&sigset, linux.SIG.USR1), false); | ||
| 147 | try expectEqual(linux.sigismember(&sigset, linux.SIG.USR2), true); | ||
| 148 | |||
| 149 | linux.sigdelset(&sigset, linux.SIG.USR2); | ||
| 150 | |||
| 151 | try expectEqual(linux.sigismember(&sigset, linux.SIG.USR1), false); | ||
| 152 | try expectEqual(linux.sigismember(&sigset, linux.SIG.USR2), false); | ||
| 143 | } | 153 | } |
| 144 | 154 | ||
| 145 | test { | 155 | test { |