diff --git a/src/data.rs b/src/data.rs index 7200006edc..a92a199016 100644 --- a/src/data.rs +++ b/src/data.rs @@ -28,7 +28,10 @@ impl DerefMut for Event { #[derive(Copy, Clone, Debug, Default)] #[repr(packed)] pub struct Packet { - pub id: usize, + pub id: u64, + pub pid: usize, + pub uid: u32, + pub gid: u32, pub a: usize, pub b: usize, pub c: usize, diff --git a/src/lib.rs b/src/lib.rs index 15ac101741..c616a81d37 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -86,10 +86,18 @@ pub fn getcwd(buf: &mut [u8]) -> Result { unsafe { syscall2(SYS_GETCWD, buf.as_mut_ptr() as usize, buf.len()) } } +pub fn getgid() -> Result { + unsafe { syscall0(SYS_GETGID) } +} + pub fn getpid() -> Result { unsafe { syscall0(SYS_GETPID) } } +pub fn getuid() -> Result { + unsafe { syscall0(SYS_GETUID) } +} + pub unsafe fn iopl(level: usize) -> Result { syscall1(SYS_IOPL, level) } @@ -142,6 +150,14 @@ pub fn rmdir(path: &str) -> Result { unsafe { syscall2(SYS_RMDIR, path.as_ptr() as usize, path.len()) } } +pub fn setgid(gid: usize) -> Result { + unsafe { syscall1(SYS_SETGID, gid) } +} + +pub fn setuid(uid: usize) -> Result { + unsafe { syscall1(SYS_SETUID, uid) } +} + 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 b0d41c0ff1..718f75fb32 100644 --- a/src/number.rs +++ b/src/number.rs @@ -13,7 +13,9 @@ pub const SYS_FSYNC: usize = 118; pub const SYS_FTRUNCATE: usize = 93; pub const SYS_FUTEX: usize = 240; pub const SYS_GETCWD: usize = 183; +pub const SYS_GETGID: usize = 200; pub const SYS_GETPID: usize = 20; +pub const SYS_GETUID: usize = 199; pub const SYS_IOPL: usize = 110; pub const SYS_LINK: usize = 9; pub const SYS_LSEEK: usize = 19; @@ -28,6 +30,8 @@ pub const SYS_VIRTTOPHYS: usize = 949; pub const SYS_PIPE2: usize = 331; pub const SYS_READ: usize = 3; pub const SYS_RMDIR: usize = 84; +pub const SYS_SETGID: usize = 214; +pub const SYS_SETUID: usize = 213; pub const SYS_UNLINK: usize = 10; pub const SYS_WAITPID: usize = 7; pub const SYS_WRITE: usize = 4;