Minimize locking in schemes. Reenable pcid and ion launch in init. WIP: Userspace schemes

This commit is contained in:
Jeremy Soller 2016-09-19 18:29:28 -06:00
parent 94ad63de11
commit abdbadfea3
9 changed files with 367 additions and 113 deletions

View file

@ -178,9 +178,12 @@ pub fn clone(flags: usize, stack_base: usize) -> Result<usize> {
for (fd, file_option) in context.files.lock().iter().enumerate() {
if let Some(file) = *file_option {
let result = {
let schemes = scheme::schemes();
let scheme_mutex = schemes.get(file.scheme).ok_or(Error::BadFile)?;
let result = scheme_mutex.lock().dup(file.number);
let scheme = {
let schemes = scheme::schemes();
let scheme = schemes.get(file.scheme).ok_or(Error::BadFile)?;
scheme.clone()
};
let result = scheme.dup(file.number);
result
};
match result {