diff options
| author | luna <git@l4.pm> | 2020-07-22 18:26:27 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-22 17:26:27 -0400 |
| commit | a6626802f9ee080616064aff0bc3f0f2709488c3 (patch) | |
| tree | af9a73aa5d9468be58a204c75376e399bd9c3a3d /lib/std/os.zig | |
| parent | 9505bb74cd0f087f4672d878bf7174273db8c3ae (diff) | |
| download | zig-a6626802f9ee080616064aff0bc3f0f2709488c3.tar.gz zig-a6626802f9ee080616064aff0bc3f0f2709488c3.zip | |
Add signalfd support (#5322)
* add signalfd_siginfo to linux bits
* Cast sigaddset's shift value to u5
* linux: add signalfd4
* os: add signalfd
Diffstat (limited to 'lib/std/os.zig')
| -rw-r--r-- | lib/std/os.zig | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/std/os.zig b/lib/std/os.zig index 3e05ac41e5..1665a2efa6 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -5133,3 +5133,17 @@ pub fn ioctl_SIOCGIFINDEX(fd: fd_t, ifr: *ifreq) IoCtl_SIOCGIFINDEX_Error!void { } } } + +pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: i32) !fd_t { + const rc = system.signalfd4(fd, mask, flags); + switch (errno(rc)) { + 0 => return @intCast(fd_t, rc), + EBADF, EINVAL => unreachable, + ENFILE => return error.SystemFdQuotaExceeded, + ENOMEM => return error.SystemResources, + EMFILE => return error.ProcessResources, + ENODEV => return error.InodeMountFail, + ENOSYS => return error.SystemOutdated, + else => |err| return std.os.unexpectedErrno(err), + } +} |
