redox.rs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. use syscall;
  2. use libc::{c_int, c_char, c_void, size_t};
  3. use core::slice;
  4. libc_fn!(unsafe redox_fevent(file: c_int, flags: c_int) -> Result<c_int> {
  5. Ok(syscall::fevent(file as usize, flags as usize)? as c_int)
  6. });
  7. libc_fn!(unsafe redox_fpath(file: c_int, buf: *mut c_char, len: size_t) -> Result<c_int> {
  8. let buf = slice::from_raw_parts_mut(buf as *mut u8, len);
  9. Ok(syscall::fpath(file as usize, buf)? as c_int)
  10. });
  11. libc_fn!(unsafe redox_fmap(file: c_int, offset: size_t, size: size_t) -> Result<*mut c_void> {
  12. Ok(syscall::fmap(file as usize, offset, size)? as *mut c_void)
  13. });
  14. libc_fn!(unsafe redox_funmap(addr: *mut c_void) -> Result<c_int> {
  15. Ok(syscall::funmap(addr as usize)? as c_int)
  16. });
  17. libc_fn!(unsafe redox_physalloc(size: size_t) -> Result<*mut c_void> {
  18. Ok(syscall::physalloc(size)? as *mut c_void)
  19. });
  20. libc_fn!(unsafe redox_physfree(physical_address: *mut c_void, size: size_t) -> Result<c_int> {
  21. Ok(syscall::physfree(physical_address as usize, size)? as c_int)
  22. });
  23. libc_fn!(unsafe redox_physmap(physical_address: *mut c_void, size: size_t, flags: c_int) -> Result<*mut c_void> {
  24. Ok(syscall::physmap(physical_address as usize, size, flags as usize)? as *mut c_void)
  25. });
  26. libc_fn!(unsafe redox_physunmap(virtual_address: *mut c_void) -> Result<c_int> {
  27. Ok(syscall::physunmap(virtual_address as usize)? as c_int)
  28. });
  29. libc_fn!(unsafe redox_virttophys(virtual_address: *mut c_void) -> Result<*mut c_void> {
  30. Ok(syscall::virttophys(virtual_address as usize)? as *mut c_void)
  31. });