diff --git a/lib/std/c/linux.zig b/lib/std/c/linux.zig index f37fce7a3..b9f29b211 100644 --- a/lib/std/c/linux.zig +++ b/lib/std/c/linux.zig @@ -93,7 +93,7 @@ pub extern "c" fn sendfile( pub extern "c" fn copy_file_range(fd_in: fd_t, off_in: ?*i64, fd_out: fd_t, off_out: ?*i64, len: usize, flags: c_uint) isize; -pub extern "c" fn signalfd(fd: fd_t, mask: *const sigset_t, flags: i32) usize; +pub extern "c" fn signalfd(fd: fd_t, mask: *const sigset_t, flags: c_uint) c_int; pub const pthread_attr_t = extern struct { __size: [56]u8, diff --git a/lib/std/os.zig b/lib/std/os.zig index 082a09b24..828f05614 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -5308,7 +5308,7 @@ 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 { +pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) !fd_t { const rc = system.signalfd(fd, mask, flags); switch (errno(rc)) { 0 => return @intCast(fd_t, rc), diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index 4bb1da958..7fe0ba00a 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -1200,14 +1200,8 @@ pub fn ioctl(fd: fd_t, request: u32, arg: usize) usize { return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), request, arg); } -pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: i32) usize { - return syscall4( - .signalfd4, - @bitCast(usize, @as(isize, fd)), - @ptrToInt(mask), - @bitCast(usize, @as(usize, NSIG / 8)), - @intCast(usize, flags), - ); +pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) usize { + return syscall4(.signalfd4, @bitCast(usize, @as(isize, fd)), @ptrToInt(mask), NSIG / 8, flags); } pub fn copy_file_range(fd_in: fd_t, off_in: ?*i64, fd_out: fd_t, off_out: ?*i64, len: usize, flags: u32) usize { diff --git a/lib/std/os/test.zig b/lib/std/os/test.zig index b17ddfaf7..dc8a89c68 100644 --- a/lib/std/os/test.zig +++ b/lib/std/os/test.zig @@ -522,3 +522,9 @@ test "fcntl" { expect((flags & os.FD_CLOEXEC) != 0); } } + +test "signalfd" { + if (builtin.os.tag != .linux) + return error.SkipZigTest; + _ = std.os.signalfd; +}