Skip to content
Snippets Groups Projects
Verified Commit f63d9cef authored by Jeremy Soller's avatar Jeremy Soller
Browse files

Add mlock and friends

parent 8a2ff1ec
No related branches found
No related tags found
No related merge requests found
Pipeline #10072 failed
......@@ -24,14 +24,14 @@ pub const MS_ASYNC: c_int = 0x0001;
pub const MS_INVALIDATE: c_int = 0x0002;
pub const MS_SYNC: c_int = 0x0004;
// #[no_mangle]
pub extern "C" fn mlock(addr: *const c_void, len: usize) -> c_int {
unimplemented!();
#[no_mangle]
pub unsafe extern "C" fn mlock(addr: *const c_void, len: usize) -> c_int {
Sys::mlock(addr, len)
}
// #[no_mangle]
#[no_mangle]
pub extern "C" fn mlockall(flags: c_int) -> c_int {
unimplemented!();
Sys::mlockall(flags)
}
#[no_mangle]
......@@ -56,14 +56,14 @@ pub unsafe extern "C" fn msync(addr: *mut c_void, len: size_t, flags: c_int) ->
Sys::msync(addr, len, flags)
}
// #[no_mangle]
pub extern "C" fn munlock(addr: *const c_void, len: usize) -> c_int {
unimplemented!();
#[no_mangle]
pub unsafe extern "C" fn munlock(addr: *const c_void, len: usize) -> c_int {
Sys::munlock(addr, len)
}
// #[no_mangle]
#[no_mangle]
pub extern "C" fn munlockall() -> c_int {
unimplemented!();
Sys::munlockall()
}
#[no_mangle]
......
......@@ -304,6 +304,14 @@ impl Pal for Sys {
e(unsafe { syscall!(MKNODAT, AT_FDCWD, path.as_ptr(), mode | S_IFIFO, 0) }) as c_int
}
unsafe fn mlock(addr: *const c_void, len: usize) -> c_int {
e(syscall!(MLOCK, addr, len)) as c_int
}
fn mlockall(flags: c_int) -> c_int {
e(unsafe { syscall!(MLOCKALL, flags) }) as c_int
}
unsafe fn mmap(
addr: *mut c_void,
len: usize,
......@@ -323,6 +331,14 @@ impl Pal for Sys {
e(syscall!(MSYNC, addr, len, flags)) as c_int
}
unsafe fn munlock(addr: *const c_void, len: usize) -> c_int {
e(syscall!(MUNLOCK, addr, len)) as c_int
}
fn munlockall() -> c_int {
e(unsafe { syscall!(MUNLOCKALL) }) as c_int
}
unsafe fn munmap(addr: *mut c_void, len: usize) -> c_int {
e(syscall!(MUNMAP, addr, len)) as c_int
}
......
......@@ -114,6 +114,10 @@ pub trait Pal {
fn mkfifo(path: &CStr, mode: mode_t) -> c_int;
unsafe fn mlock(addr: *const c_void, len: usize) -> c_int;
fn mlockall(flags: c_int) -> c_int;
unsafe fn mmap(
addr: *mut c_void,
len: usize,
......@@ -127,6 +131,10 @@ pub trait Pal {
unsafe fn msync(addr: *mut c_void, len: usize, flags: c_int) -> c_int;
unsafe fn munlock(addr: *const c_void, len: usize) -> c_int;
fn munlockall() -> c_int;
unsafe fn munmap(addr: *mut c_void, len: usize) -> c_int;
fn nanosleep(rqtp: *const timespec, rmtp: *mut timespec) -> c_int;
......
......@@ -721,6 +721,16 @@ impl Pal for Sys {
}
}
unsafe fn mlock(addr: *const c_void, len: usize) -> c_int {
// Redox never swaps
0
}
fn mlockall(flags: c_int) -> c_int {
// Redox never swaps
0
}
unsafe fn mmap(
addr: *mut c_void,
len: usize,
......@@ -766,6 +776,16 @@ impl Pal for Sys {
*/
}
unsafe fn munlock(addr: *const c_void, len: usize) -> c_int {
// Redox never swaps
0
}
fn munlockall() -> c_int {
// Redox never swaps
0
}
unsafe fn munmap(addr: *mut c_void, len: usize) -> c_int {
if e(syscall::funmap(addr as usize, len)) == !0 {
return !0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment