diff --git a/src/lib.rs b/src/lib.rs index 2f4ea89..15ac101 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -114,6 +114,14 @@ pub fn open(path: &str, flags: usize) -> Result { unsafe { syscall3(SYS_OPEN, path.as_ptr() as usize, path.len(), flags) } } +pub unsafe fn physalloc(size: usize) -> Result { + syscall1(SYS_PHYSALLOC, size) +} + +pub unsafe fn physfree(physical_address: usize, size: usize) -> Result { + syscall2(SYS_PHYSFREE, physical_address, size) +} + pub unsafe fn physmap(physical_address: usize, size: usize, flags: usize) -> Result { syscall3(SYS_PHYSMAP, physical_address, size, flags) } @@ -138,6 +146,10 @@ pub fn unlink(path: &str) -> Result { unsafe { syscall2(SYS_UNLINK, path.as_ptr() as usize, path.len()) } } +pub unsafe fn virttophys(virtual_address: usize) -> Result { + syscall1(SYS_VIRTTOPHYS, virtual_address) +} + pub fn waitpid(pid: usize, status: &mut usize, options: usize) -> Result { unsafe { syscall3(SYS_WAITPID, pid, status as *mut usize as usize, options) } } diff --git a/src/number.rs b/src/number.rs index c0f341c..b0d41c0 100644 --- a/src/number.rs +++ b/src/number.rs @@ -20,8 +20,11 @@ pub const SYS_LSEEK: usize = 19; pub const SYS_MKDIR: usize = 39; pub const SYS_NANOSLEEP: usize = 162; pub const SYS_OPEN: usize = 5; -pub const SYS_PHYSMAP: usize = 945; -pub const SYS_PHYSUNMAP: usize = 946; +pub const SYS_PHYSALLOC: usize = 945; +pub const SYS_PHYSFREE: usize = 946; +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_READ: usize = 3; pub const SYS_RMDIR: usize = 84;