Skip to content

Commit 86cb7da

Browse files
committed
#24471: mlock syscalls in std.os.linux
1 parent 9a69aed commit 86cb7da

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

lib/std/os/linux.zig

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,47 @@ pub fn munmap(address: [*]const u8, length: usize) usize {
10151015
return syscall2(.munmap, @intFromPtr(address), length);
10161016
}
10171017

1018+
pub fn mlock(address: [*]const u8, length: usize) usize {
1019+
return syscall2(.mlock, @intFromPtr(address), length);
1020+
}
1021+
1022+
pub fn munlock(address: [*]const u8, length: usize) usize {
1023+
return syscall2(.munlock, @intFromPtr(address), length);
1024+
}
1025+
1026+
pub const MLOCK = packed struct(u32) {
1027+
ONFAULT: bool = false,
1028+
_1: u31 = 0,
1029+
};
1030+
1031+
pub fn mlock2(address: [*]const u8, length: usize, flags: i32) usize {
1032+
return syscall3(.mlock, @intFromPtr(address), length, @as(u32, @bitCast(flags)));
1033+
}
1034+
1035+
pub const MCL = switch (native_arch) {
1036+
.sparc, .powerpc => packed struct(u32) {
1037+
_0: u13 = 0,
1038+
CURRENT: bool = false,
1039+
FUTURE: bool = false,
1040+
ONFAULT: bool = false,
1041+
_1: u16 = 0,
1042+
},
1043+
else => packed struct(u32) {
1044+
CURRENT: bool = false,
1045+
FUTURE: bool = false,
1046+
ONFAULT: bool = false,
1047+
_0: u29 = 0,
1048+
},
1049+
};
1050+
1051+
pub fn mlockall(flags: i32) usize {
1052+
return syscall1(.mlockall, @as(u32, @bitCast(flags)));
1053+
}
1054+
1055+
pub fn munlockall() usize {
1056+
return syscall0(.munlockall);
1057+
}
1058+
10181059
pub fn poll(fds: [*]pollfd, n: nfds_t, timeout: i32) usize {
10191060
if (@hasField(SYS, "poll")) {
10201061
return syscall3(.poll, @intFromPtr(fds), n, @as(u32, @bitCast(timeout)));

0 commit comments

Comments
 (0)