Commit ae2c88754d

Andrew Kelley <andrew@ziglang.org>
2020-08-18 01:19:57
std: signalfd: fix the types of things; add test
1 parent 293b07d
Changed files (4)
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,
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 {
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;
+}
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),