This commit is contained in:
Jeremy Soller 2016-09-23 11:01:53 -06:00
parent 5b3aeb4a9f
commit 94ef9dd14a
7 changed files with 151 additions and 39 deletions

View file

@ -66,6 +66,7 @@ pub fn clone(flags: usize, stack_base: usize) -> Result<usize> {
let mut stack_option = None;
let grants;
let cwd;
let env;
let files;
// Copy from old process
@ -181,6 +182,12 @@ pub fn clone(flags: usize, stack_base: usize) -> Result<usize> {
cwd = Arc::new(Mutex::new(context.cwd.lock().clone()));
}
if flags & CLONE_VM == CLONE_VM {
env = context.env.clone();
} else {
env = Arc::new(Mutex::new(context.env.lock().clone()));
}
if flags & CLONE_FILES == CLONE_FILES {
files = context.files.clone();
} else {
@ -339,6 +346,8 @@ pub fn clone(flags: usize, stack_base: usize) -> Result<usize> {
context.cwd = cwd;
context.env = env;
context.files = files;
context.arch.set_page_table(unsafe { new_table.address() });