Use fmap2 to support passing an address.

This commit is contained in:
4lDO2
2020-07-08 17:28:09 +02:00
committed by jD91mZM2
parent d6b03de7a4
commit e38d185870
+6 -5
View File
@@ -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
}
}