diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-11-05 17:23:00 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-05 17:23:00 -0500 |
| commit | f85d7199521290121ade4506ea53acdaf6284982 (patch) | |
| tree | c4d4c4f312b8950a2004ed105f1a5c9479ab78a4 /lib/std/os/linux.zig | |
| parent | e7b60b219be3885718425d8ddf25d38d3808e90e (diff) | |
| parent | 8193f558200da27531304b77c1e80c16bb728420 (diff) | |
| download | zig-f85d7199521290121ade4506ea53acdaf6284982.tar.gz zig-f85d7199521290121ade4506ea53acdaf6284982.zip | |
Merge pull request #6895 from jorangreef/fallocate
linux: add fallocate()
Diffstat (limited to 'lib/std/os/linux.zig')
| -rw-r--r-- | lib/std/os/linux.zig | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index c5fbd0bcfe..c422826f13 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -136,6 +136,30 @@ pub fn utimensat(dirfd: i32, path: ?[*:0]const u8, times: *const [2]timespec, fl return syscall4(.utimensat, @bitCast(usize, @as(isize, dirfd)), @ptrToInt(path), @ptrToInt(times), flags); } +pub fn fallocate(fd: i32, mode: i32, offset: u64, length: u64) usize { + if (@sizeOf(usize) == 4) { + const offset_halves = splitValue64(offset); + const length_halves = splitValue64(length); + return syscall6( + .fallocate, + @bitCast(usize, @as(isize, fd)), + @bitCast(usize, @as(isize, mode)), + offset_halves[0], + offset_halves[1], + length_halves[0], + length_halves[1], + ); + } else { + return syscall4( + .fallocate, + @bitCast(usize, @as(isize, fd)), + @bitCast(usize, @as(isize, mode)), + offset, + length, + ); + } +} + pub fn futex_wait(uaddr: *const i32, futex_op: u32, val: i32, timeout: ?*timespec) usize { return syscall4(.futex, @ptrToInt(uaddr), futex_op, @bitCast(u32, val), @ptrToInt(timeout)); } |
