feature. See also
. The project being documented here (as the example) is the Zig library itself.
linux.mmap
pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: fd_t, offset: off_t) usize
File
Code
pub fn mmap(address: ?[*]u8, length: usize, prot: PROT, flags: MAP, fd: fd_t, offset: off_t) usize {
if (@hasField(SYS, "mmap2")) {
return syscall6(
.mmap2,
@intFromPtr(address),
length,
@as(u32, @bitCast(prot)),
@as(u32, @bitCast(flags)),
@as(u32, @bitCast(fd)),
@truncate(@as(u64, @bitCast(offset)) / mmap2Unit()),
);
} else {
// it takes a single pointer to an array of arguments instead.
return if (native_arch == .s390x) syscall1(
.mmap,
@intFromPtr(&[_]usize{
@intFromPtr(address),
length,
@as(u32, @bitCast(prot)),
@as(u32, @bitCast(flags)),
@as(u32, @bitCast(fd)),
@as(u64, @bitCast(offset)),
}),
) else syscall6(
.mmap,
@intFromPtr(address),
length,
@as(u32, @bitCast(prot)),
@as(u32, @bitCast(flags)),
@as(u32, @bitCast(fd)),
@as(u64, @bitCast(offset)),
);
}
}