WIP: Work around fmap quirks

This commit is contained in:
jD91mZM2
2020-07-13 12:48:29 +02:00
parent 4b8d2e45c6
commit ec2c42dc66
2 changed files with 6 additions and 14 deletions

View File

@@ -49,8 +49,9 @@ impl Scheme for MemoryScheme {
let full_size = ((map.size + PAGE_SIZE - 1) / PAGE_SIZE) * PAGE_SIZE;
let mut to_address = if map.address == 0 { crate::USER_GRANT_OFFSET } else {
if map.address < crate::USER_GRANT_OFFSET || map.address + map.size > crate::USER_GRANT_OFFSET + crate::PML4_SIZE || map.address % PAGE_SIZE != 0 {
return Err(Error::new(EINVAL));
if // map.address < crate::USER_GRANT_OFFSET || map.address + map.size > crate::USER_GRANT_OFFSET + crate::PML4_SIZE ||
map.address % PAGE_SIZE != 0 {
return Err(Error::new(EINVAL));
}
map.address
};
@@ -123,6 +124,7 @@ impl Scheme for MemoryScheme {
continue;
}
i += 1;
}
grants.insert(i, Grant::map(

View File

@@ -163,21 +163,14 @@ pub fn syscall(a: usize, b: usize, c: usize, d: usize, e: usize, f: usize, bp: u
}
}
/*
let debug = {
let contexts = crate::context::contexts();
if let Some(context_lock) = contexts.current() {
let context = context_lock.read();
let name_raw = context.name.lock();
let name = unsafe { core::str::from_utf8_unchecked(&name_raw) };
if name == "file:/bin/cargo" || name == "file:/bin/rustc" {
if a == SYS_CLOCK_GETTIME {
false
} else if (a == SYS_WRITE || a == SYS_FSYNC) && (b == 1 || b == 2) {
false
} else {
true
}
if name == "file:/lib/ld64.so.1" || name == "file:/home/user/test" {
true
} else {
false
}
@@ -195,7 +188,6 @@ pub fn syscall(a: usize, b: usize, c: usize, d: usize, e: usize, f: usize, bp: u
println!("{}", debug::format_call(a, b, c, d, e, f));
}
*/
// The next lines set the current syscall in the context struct, then once the inner() function
// completes, we set the current syscall to none.
@@ -220,7 +212,6 @@ pub fn syscall(a: usize, b: usize, c: usize, d: usize, e: usize, f: usize, bp: u
}
}
/*
if debug {
let contexts = crate::context::contexts();
if let Some(context_lock) = contexts.current() {
@@ -239,7 +230,6 @@ pub fn syscall(a: usize, b: usize, c: usize, d: usize, e: usize, f: usize, bp: u
}
}
}
*/
// errormux turns Result<usize> into -errno
Error::mux(result)