diff --git a/doc/langref.html.in b/doc/langref.html.in index 2020d248c1..53ccac4803 100644 --- a/doc/langref.html.in +++ b/doc/langref.html.in @@ -525,7 +525,7 @@ {#syntax#}isize{#endsyntax#} - intptr_t + intptr_t, ssize_t signed pointer sized integer diff --git a/lib/c/fcntl.zig b/lib/c/fcntl.zig index 29788fa922..e9a0630552 100644 --- a/lib/c/fcntl.zig +++ b/lib/c/fcntl.zig @@ -12,6 +12,7 @@ comptime { symbol(&fallocateLinux, "fallocate"); symbol(&posix_fadviseLinux, "posix_fadvise"); symbol(&posix_fallocateLinux, "posix_fallocate"); + symbol(&teeLinux, "tee"); } } @@ -26,3 +27,7 @@ fn posix_fadviseLinux(fd: c_int, offset: off_t, len: off_t, advice: c_int) callc fn posix_fallocateLinux(fd: c_int, offset: off_t, len: off_t) callconv(.c) c_int { return errno(linux.fallocate(fd, 0, offset, len)); } + +fn teeLinux(src: c_int, dest: c_int, len: usize, flags: c_uint) callconv(.c) isize { + return errno(linux.tee(src, dest, len, flags)); +} diff --git a/lib/libc/musl/src/linux/tee.c b/lib/libc/musl/src/linux/tee.c deleted file mode 100644 index a24748cfb0..0000000000 --- a/lib/libc/musl/src/linux/tee.c +++ /dev/null @@ -1,8 +0,0 @@ -#define _GNU_SOURCE -#include -#include "syscall.h" - -ssize_t tee(int src, int dest, size_t len, unsigned flags) -{ - return syscall(SYS_tee, src, dest, len, flags); -} diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index ffe9ef15f3..8a3d1a3b76 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -2981,6 +2981,16 @@ pub fn map_shadow_stack(addr: usize, size: usize, flags: u32) usize { return syscall3(.map_shadow_stack, addr, size, flags); } +pub fn tee(src: fd_t, dest: fd_t, len: usize, flags: u32) usize { + return syscall4( + .tee, + @as(u32, @bitCast(src)), + @as(u32, @bitCast(dest)), + len, + flags, + ); +} + pub const Sysinfo = switch (native_abi) { .gnux32, .muslx32 => extern struct { /// Seconds since boot diff --git a/src/libs/musl.zig b/src/libs/musl.zig index f53b406568..beb1c2ceb8 100644 --- a/src/libs/musl.zig +++ b/src/libs/musl.zig @@ -745,7 +745,6 @@ const src_files = [_][]const u8{ "musl/src/linux/sync_file_range.c", "musl/src/linux/syncfs.c", "musl/src/linux/sysinfo.c", - "musl/src/linux/tee.c", "musl/src/linux/timerfd.c", "musl/src/linux/unshare.c", "musl/src/linux/utimes.c",