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 {
210210}
211211
212212pub 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 );
214221}
215222
216223pub 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 );
218233}
219234
220235pub 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 {
226241}
227242
228243pub 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 );
230252}
231253
232254pub 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 );
234264}
235265
236266// TODO https://github.com/ziglang/zig/issues/265
......@@ -503,9 +533,9 @@ pub fn setgid(gid: u32) usize {
503533
504534pub fn setreuid(ruid: u32, euid: u32) usize {
505535 if (@hasDecl(@This(), "SYS_setreuid32")) {
506 return syscall2(SYS_setreuid32, ruid, euid));
536 return syscall2(SYS_setreuid32, ruid, euid);
507537 } else {
508 return syscall2(SYS_setreuid, ruid, euid));
538 return syscall2(SYS_setreuid, ruid, euid);
509539 }
510540}
511541