| ... | ... | @@ -1014,6 +1014,44 @@ pub fn munmap(address: [*]const u8, length: usize) usize { |
| 1014 | 1014 | return syscall2(.munmap, @intFromPtr(address), length); |
| 1015 | 1015 | } |
| 1016 | 1016 | |
| 1017 | pub fn mlock(address: [*]const u8, length: usize) usize { |
| 1018 | return syscall2(.mlock, @intFromPtr(address), length); |
| 1019 | } |
| 1020 | |
| 1021 | pub fn munlock(address: [*]const u8, length: usize) usize { |
| 1022 | return syscall2(.munlock, @intFromPtr(address), length); |
| 1023 | } |
| 1024 | |
| 1025 | pub const MLOCK = packed struct(u32) { |
| 1026 | ONFAULT: bool = false, |
| 1027 | _1: u31 = 0, |
| 1028 | }; |
| 1029 | |
| 1030 | pub fn mlock2(address: [*]const u8, length: usize, flags: MLOCK) usize { |
| 1031 | return syscall3(.mlock2, @intFromPtr(address), length, @as(u32, @bitCast(flags))); |
| 1032 | } |
| 1033 | |
| 1034 | pub 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 | |
| 1047 | pub fn mlockall(flags: MCL) usize { |
| 1048 | return syscall1(.mlockall, @as(u32, @bitCast(flags))); |
| 1049 | } |
| 1050 | |
| 1051 | pub fn munlockall() usize { |
| 1052 | return syscall0(.munlockall); |
| 1053 | } |
| 1054 | |
| 1017 | 1055 | pub fn poll(fds: [*]pollfd, n: nfds_t, timeout: i32) usize { |
| 1018 | 1056 | if (@hasField(SYS, "poll")) { |
| 1019 | 1057 | return syscall3(.poll, @intFromPtr(fds), n, @as(u32, @bitCast(timeout))); |