diff --git a/Cargo.toml b/Cargo.toml index 972bdb0..2118dc8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "redox_syscall" -version = "0.1.9" +version = "0.1.10" description = "A Rust library to access raw Redox system calls" license = "MIT" authors = ["Jeremy Soller "] diff --git a/src/call.rs b/src/call.rs index 5f2508f..2689155 100644 --- a/src/call.rs +++ b/src/call.rs @@ -131,6 +131,11 @@ pub fn getegid() -> Result { unsafe { syscall0(SYS_GETEGID) } } +/// Get the effective namespace +pub fn getens() -> Result { + unsafe { syscall0(SYS_GETENS) } +} + /// Get the effective user ID pub fn geteuid() -> Result { unsafe { syscall0(SYS_GETEUID) } @@ -141,6 +146,11 @@ pub fn getgid() -> Result { unsafe { syscall0(SYS_GETGID) } } +/// Get the current namespace +pub fn getns() -> Result { + unsafe { syscall0(SYS_GETNS) } +} + /// Get the current process ID pub fn getpid() -> Result { unsafe { syscall0(SYS_GETPID) } @@ -176,6 +186,11 @@ pub fn mkdir(path: &str, mode: u16) -> Result { unsafe { syscall3(SYS_MKDIR, path.as_ptr() as usize, path.len(), mode as usize) } } +/// Make a new scheme namespace +pub fn mkns(schemes: &[[usize; 2]]) -> Result { + unsafe { syscall2(SYS_MKNS, schemes.as_ptr() as usize, schemes.len()) } +} + /// Sleep for the time specified in `req` pub fn nanosleep(req: &TimeSpec, rem: &mut TimeSpec) -> Result { unsafe { syscall2(SYS_NANOSLEEP, req as *const TimeSpec as usize, rem as *mut TimeSpec as usize) } @@ -226,16 +241,16 @@ pub fn setregid(rgid: usize, egid: usize) -> Result { unsafe { syscall2(SYS_SETREGID, rgid, egid) } } +/// Make a new scheme namespace +pub fn setrens(rns: usize, ens: usize) -> Result { + unsafe { syscall2(SYS_SETRENS, rns, ens) } +} + /// Set the current process user IDs pub fn setreuid(ruid: usize, euid: usize) -> Result { unsafe { syscall2(SYS_SETREUID, ruid, euid) } } -/// Create and set a new scheme namespace -pub fn setns(schemes: &[[usize; 2]]) -> Result { - unsafe { syscall2(SYS_SETNS, schemes.as_ptr() as usize, schemes.len()) } -} - /// Remove a file pub fn unlink(path: &str) -> Result { unsafe { syscall2(SYS_UNLINK, path.as_ptr() as usize, path.len()) } diff --git a/src/number.rs b/src/number.rs index 8f2906f..5dacea5 100644 --- a/src/number.rs +++ b/src/number.rs @@ -41,12 +41,15 @@ pub const SYS_EXIT: usize = 1; pub const SYS_FUTEX: usize = 240; pub const SYS_GETCWD: usize = 183; pub const SYS_GETEGID: usize = 202; +pub const SYS_GETENS: usize = 951; pub const SYS_GETEUID: usize = 201; pub const SYS_GETGID: usize = 200; +pub const SYS_GETNS: usize = 950; pub const SYS_GETPID: usize = 20; pub const SYS_GETUID: usize = 199; pub const SYS_IOPL: usize = 110; pub const SYS_KILL: usize = 37; +pub const SYS_MKNS: usize = 984; pub const SYS_NANOSLEEP: usize =162; pub const SYS_PHYSALLOC: usize =945; pub const SYS_PHYSFREE: usize = 946; @@ -54,8 +57,8 @@ pub const SYS_PHYSMAP: usize = 947; pub const SYS_PHYSUNMAP: usize =948; pub const SYS_VIRTTOPHYS: usize=949; pub const SYS_PIPE2: usize = 331; -pub const SYS_SETREGID: usize = 204; -pub const SYS_SETREUID: usize = 203; -pub const SYS_SETNS: usize = 310; +pub const SYS_SETREGID: usize = 204; +pub const SYS_SETRENS: usize = 952; +pub const SYS_SETREUID: usize = 203; pub const SYS_WAITPID: usize = 7; pub const SYS_YIELD: usize = 158;