diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs index 58117dd3205a1c9c1bd012e2cbb109caa5ee4303..4b561831eff854259d97910823f47c57b90ff8f3 100644 --- a/src/platform/redox/mod.rs +++ b/src/platform/redox/mod.rs @@ -1,7 +1,7 @@ use core::{mem, ptr, result::Result as CoreResult, slice}; use syscall::{ self, - data::{Map, Stat as redox_stat, StatVfs as redox_statvfs, TimeSpec as redox_timespec}, + data::{Map2, Stat as redox_stat, StatVfs as redox_statvfs, TimeSpec as redox_timespec}, PtraceEvent, Result, }; @@ -658,19 +658,20 @@ impl Pal for Sys { } unsafe fn mmap( - _addr: *mut c_void, + addr: *mut c_void, len: usize, prot: c_int, flags: c_int, fildes: c_int, off: off_t, ) -> *mut c_void { - let map = Map { + let map = Map2 { offset: off as usize, size: len, flags: syscall::MapFlags::from_bits_truncate( ((prot as usize) << 16) | ((flags as usize) & 0xFFFF), ), + address: addr as usize, }; if flags & MAP_ANON == MAP_ANON { @@ -682,13 +683,13 @@ impl Pal for Sys { return !0 as *mut c_void; } - let addr = e(syscall::fmap(fd, &map)) as *mut c_void; + let addr = e(syscall::fmap2(fd, &map)) as *mut c_void; let _ = syscall::close(fd); addr } else { - e(syscall::fmap(fildes as usize, &map)) as *mut c_void + e(syscall::fmap2(fildes as usize, &map)) as *mut c_void } }