authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2019-09-01 16:10:36+02:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2019-09-01 16:10:36+02:00
loge7912dee9bd63b03415f441b4de9b3babc79c859
tree097997a079a2ec36f0ec1a48edfeaa7a7f8b22f2
parente9d795b025e55dcd9d8c4378141b996358634863

Fix up preadv, preadv2, pwritev and pwritev2


1 files changed, 36 insertions(+), 6 deletions(-)

std/os/linux.zig+36-6
...@@ -210,11 +210,26 @@ pub fn read(fd: i32, buf: [*]u8, count: usize) usize {...@@ -210,11 +210,26 @@ pub fn read(fd: i32, buf: [*]u8, count: usize) usize {
210}210}
211211
212pub fn preadv(fd: i32, iov: [*]const iovec, count: usize, offset: u64) usize {212pub fn preadv(fd: i32, iov: [*]const iovec, count: usize, offset: u64) usize {
213 return syscall4(SYS_preadv, @bitCast(usize, isize(fd)), @ptrToInt(iov), count, offset);213 return syscall5(
214 SYS_preadv,
215 @bitCast(usize, isize(fd)),
216 @ptrToInt(iov),
217 count,
218 @truncate(usize, offset),
219 @truncate(usize, offset >> 32),
220 );
214}221}
215222
216pub fn preadv2(fd: i32, iov: [*]const iovec, count: usize, offset: u64, flags: kernel_rwf) usize {223pub fn preadv2(fd: i32, iov: [*]const iovec, count: usize, offset: u64, flags: kernel_rwf) usize {
217 return syscall5(SYS_preadv2, @bitCast(usize, isize(fd)), @ptrToInt(iov), count, offset, flags);224 return syscall6(
225 SYS_preadv2,
226 @bitCast(usize, isize(fd)),
227 @ptrToInt(iov),
228 count,
229 @truncate(usize, offset),
230 @truncate(usize, offset >> 32),
231 flags
232 );
218}233}
219234
220pub fn readv(fd: i32, iov: [*]const iovec, count: usize) usize {235pub fn readv(fd: i32, iov: [*]const iovec, count: usize) usize {
...@@ -226,11 +241,26 @@ pub fn writev(fd: i32, iov: [*]const iovec_const, count: usize) usize {...@@ -226,11 +241,26 @@ pub fn writev(fd: i32, iov: [*]const iovec_const, count: usize) usize {
226}241}
227242
228pub fn pwritev(fd: i32, iov: [*]const iovec_const, count: usize, offset: u64) usize {243pub fn pwritev(fd: i32, iov: [*]const iovec_const, count: usize, offset: u64) usize {
229 return syscall4(SYS_pwritev, @bitCast(usize, isize(fd)), @ptrToInt(iov), count, offset);244 return syscall5(
245 SYS_pwritev,
246 @bitCast(usize, isize(fd)),
247 @ptrToInt(iov),
248 count,
249 @truncate(usize, offset),
250 @truncate(usize, offset >> 32),
251 );
230}252}
231253
232pub fn pwritev2(fd: i32, iov: [*]const iovec_const, count: usize, offset: u64, flags: kernel_rwf) usize {254pub fn pwritev2(fd: i32, iov: [*]const iovec_const, count: usize, offset: u64, flags: kernel_rwf) usize {
233 return syscall5(SYS_pwritev2, @bitCast(usize, isize(fd)), @ptrToInt(iov), count, offset, flags);255 return syscall6(
256 SYS_pwritev2,
257 @bitCast(usize, isize(fd)),
258 @ptrToInt(iov),
259 count,
260 @truncate(usize, offset),
261 @truncate(usize, offset >> 32),
262 flags
263 );
234}264}
235265
236// TODO https://github.com/ziglang/zig/issues/265266// TODO https://github.com/ziglang/zig/issues/265
...@@ -503,9 +533,9 @@ pub fn setgid(gid: u32) usize {...@@ -503,9 +533,9 @@ pub fn setgid(gid: u32) usize {
503533
504pub fn setreuid(ruid: u32, euid: u32) usize {534pub fn setreuid(ruid: u32, euid: u32) usize {
505 if (@hasDecl(@This(), "SYS_setreuid32")) {535 if (@hasDecl(@This(), "SYS_setreuid32")) {
506 return syscall2(SYS_setreuid32, ruid, euid));536 return syscall2(SYS_setreuid32, ruid, euid);
507 } else {537 } else {
508 return syscall2(SYS_setreuid, ruid, euid));538 return syscall2(SYS_setreuid, ruid, euid);
509 }539 }
510}540}
511541