diff --git a/src/scheme/memory.rs b/src/scheme/memory.rs index c397142..d652019 100644 --- a/src/scheme/memory.rs +++ b/src/scheme/memory.rs @@ -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( diff --git a/src/syscall/mod.rs b/src/syscall/mod.rs index bb01f60..886865f 100644 --- a/src/syscall/mod.rs +++ b/src/syscall/mod.rs @@ -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 into -errno Error::mux(result)