@@ -72,6 +72,7 @@ pub const Kevent = system.Kevent;
7272pub const LOCK = system .LOCK ;
7373pub const MADV = system .MADV ;
7474pub const MAP = system .MAP ;
75+ pub const MCL = system .MCL ;
7576pub const MSF = system .MSF ;
7677pub const MAX_ADDR_LEN = system .MAX_ADDR_LEN ;
7778pub const MFD = system .MFD ;
@@ -7075,6 +7076,47 @@ pub fn madvise(ptr: [*]align(mem.page_size) u8, length: usize, advice: u32) Madv
70757076 }
70767077}
70777078
7079+ pub const MlockallError = error {
7080+ InvalidArgument ,
7081+ LockedMemoryLimitExceeded ,
7082+ NotImplemented ,
7083+ PermissionDenied ,
7084+ SystemResources ,
7085+ } || UnexpectedError ;
7086+
7087+ pub fn mlockall (flags : i32 ) MlockallError ! void {
7088+ switch (native_os ) {
7089+ .linux , .freebsd , .netbsd , .openbsd , .dragonfly , .solaris = > {},
7090+ else = > return error .NotImplemented ,
7091+ }
7092+ switch (errno (system .mlockall (flags ))) {
7093+ .SUCCESS = > return ,
7094+ .INVAL = > return error .InvalidArgument ,
7095+ .NOMEM = > return error .LockedMemoryLimitExceeded ,
7096+ .PERM = > return error .PermissionDenied ,
7097+ // Solaris and (Free|Net|Open)BSD, presumably no room to fault in locked stuff:
7098+ .AGAIN = > return error .SystemResources ,
7099+ else = > | err | return unexpectedErrno (err ),
7100+ }
7101+ }
7102+
7103+ pub const MunlockallError = error {
7104+ NotImplemented ,
7105+ PermissionDenied ,
7106+ } || UnexpectedError ;
7107+
7108+ pub fn munlockall () MunlockallError ! void {
7109+ switch (native_os ) {
7110+ .linux , .freebsd , .netbsd , .openbsd , .dragonfly , .solaris = > {},
7111+ else = > return error .NotImplemented ,
7112+ }
7113+ switch (errno (system .munlockall ())) {
7114+ .SUCCESS = > return ,
7115+ .PERM = > return error .PermissionDenied , // Solaris, possibly BSDs as well
7116+ else = > | err | return unexpectedErrno (err ),
7117+ }
7118+ }
7119+
70787120pub const PerfEventOpenError = error {
70797121 /// Returned if the perf_event_attr size value is too small (smaller
70807122 /// than PERF_ATTR_SIZE_VER0), too big (larger than the page size),
0 commit comments