authorgravatar for kj4tmp@gmail.comkj4tmp <kj4tmp@gmail.com> 2025-07-15 22:30:58-07:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-08-06 12:18:45+02:00
log44ea11d71f6a713081e3dec11a08ec322dfeb787
treeefdaf5c5b2aee1f4b72c03e179b46c880499725c
parent7ee6dab39fac7aa12fa9fd952bb2bdc28d5eabe8

#24471: add mlock syscalls to std.os.linux


1 files changed, 38 insertions(+), 0 deletions(-)

lib/std/os/linux.zig+38
...@@ -1014,6 +1014,44 @@ pub fn munmap(address: [*]const u8, length: usize) usize {...@@ -1014,6 +1014,44 @@ pub fn munmap(address: [*]const u8, length: usize) usize {
1014 return syscall2(.munmap, @intFromPtr(address), length);1014 return syscall2(.munmap, @intFromPtr(address), length);
1015}1015}
10161016
1017pub fn mlock(address: [*]const u8, length: usize) usize {
1018 return syscall2(.mlock, @intFromPtr(address), length);
1019}
1020
1021pub fn munlock(address: [*]const u8, length: usize) usize {
1022 return syscall2(.munlock, @intFromPtr(address), length);
1023}
1024
1025pub const MLOCK = packed struct(u32) {
1026 ONFAULT: bool = false,
1027 _1: u31 = 0,
1028};
1029
1030pub fn mlock2(address: [*]const u8, length: usize, flags: MLOCK) usize {
1031 return syscall3(.mlock2, @intFromPtr(address), length, @as(u32, @bitCast(flags)));
1032}
1033
1034pub const MCL = if (native_arch.isSPARC() or native_arch.isPowerPC()) packed struct(u32) {
1035 _0: u13 = 0,
1036 CURRENT: bool = false,
1037 FUTURE: bool = false,
1038 ONFAULT: bool = false,
1039 _4: u16 = 0,
1040} else packed struct(u32) {
1041 CURRENT: bool = false,
1042 FUTURE: bool = false,
1043 ONFAULT: bool = false,
1044 _3: u29 = 0,
1045};
1046
1047pub fn mlockall(flags: MCL) usize {
1048 return syscall1(.mlockall, @as(u32, @bitCast(flags)));
1049}
1050
1051pub fn munlockall() usize {
1052 return syscall0(.munlockall);
1053}
1054
1017pub fn poll(fds: [*]pollfd, n: nfds_t, timeout: i32) usize {1055pub fn poll(fds: [*]pollfd, n: nfds_t, timeout: i32) usize {
1018 if (@hasField(SYS, "poll")) {1056 if (@hasField(SYS, "poll")) {
1019 return syscall3(.poll, @intFromPtr(fds), n, @as(u32, @bitCast(timeout)));1057 return syscall3(.poll, @intFromPtr(fds), n, @as(u32, @bitCast(timeout)));