authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-17 16:20:23-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-17 16:20:23-07:00
log044e3ca59222f26ae0a63be24510007c3e2cda82
tree78be61006e5cf3e02ef8d00a366a51b6bd21ce95
parent96a27557e2ef53b8d1d3132f02c83b716c966277
parentae2c88754df436d4b1d748405e6ddd4b8ee61774

Merge branch 'lun-4-signalfd-libc'

closes #6071

4 files changed, 12 insertions(+), 10 deletions(-)

lib/std/c/linux.zig+2
...@@ -93,6 +93,8 @@ pub extern "c" fn sendfile(...@@ -93,6 +93,8 @@ pub extern "c" fn sendfile(
9393
94pub 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;94pub 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;
9595
96pub extern "c" fn signalfd(fd: fd_t, mask: *const sigset_t, flags: c_uint) c_int;
97
96pub const pthread_attr_t = extern struct {98pub const pthread_attr_t = extern struct {
97 __size: [56]u8,99 __size: [56]u8,
98 __align: c_long,100 __align: c_long,
lib/std/os.zig+2-2
...@@ -5308,8 +5308,8 @@ pub fn ioctl_SIOCGIFINDEX(fd: fd_t, ifr: *ifreq) IoCtl_SIOCGIFINDEX_Error!void {...@@ -5308,8 +5308,8 @@ pub fn ioctl_SIOCGIFINDEX(fd: fd_t, ifr: *ifreq) IoCtl_SIOCGIFINDEX_Error!void {
5308 }5308 }
5309}5309}
53105310
5311pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: i32) !fd_t {5311pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) !fd_t {
5312 const rc = system.signalfd4(fd, mask, flags);5312 const rc = system.signalfd(fd, mask, flags);
5313 switch (errno(rc)) {5313 switch (errno(rc)) {
5314 0 => return @intCast(fd_t, rc),5314 0 => return @intCast(fd_t, rc),
5315 EBADF, EINVAL => unreachable,5315 EBADF, EINVAL => unreachable,
lib/std/os/linux.zig+2-8
...@@ -1200,14 +1200,8 @@ pub fn ioctl(fd: fd_t, request: u32, arg: usize) usize {...@@ -1200,14 +1200,8 @@ pub fn ioctl(fd: fd_t, request: u32, arg: usize) usize {
1200 return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), request, arg);1200 return syscall3(.ioctl, @bitCast(usize, @as(isize, fd)), request, arg);
1201}1201}
12021202
1203pub fn signalfd4(fd: fd_t, mask: *const sigset_t, flags: i32) usize {1203pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) usize {
1204 return syscall4(1204 return syscall4(.signalfd4, @bitCast(usize, @as(isize, fd)), @ptrToInt(mask), NSIG / 8, flags);
1205 .signalfd4,
1206 @bitCast(usize, @as(isize, fd)),
1207 @ptrToInt(mask),
1208 @bitCast(usize, @as(usize, NSIG / 8)),
1209 @intCast(usize, flags),
1210 );
1211}1205}
12121206
1213pub fn copy_file_range(fd_in: fd_t, off_in: ?*i64, fd_out: fd_t, off_out: ?*i64, len: usize, flags: u32) usize {1207pub 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+6
...@@ -522,3 +522,9 @@ test "fcntl" {...@@ -522,3 +522,9 @@ test "fcntl" {
522 expect((flags & os.FD_CLOEXEC) != 0);522 expect((flags & os.FD_CLOEXEC) != 0);
523 }523 }
524}524}
525
526test "signalfd" {
527 if (builtin.os.tag != .linux)
528 return error.SkipZigTest;
529 _ = std.os.signalfd;
530}