Remove env scheme and env field on context, fix all warnings

This commit is contained in:
Jeremy Soller
2018-08-11 11:34:32 -06:00
parent fe90664e33
commit 30e68f917e
14 changed files with 29 additions and 326 deletions
-5
View File
@@ -129,11 +129,6 @@ pub fn format_call(a: usize, b: usize, c: usize, d: usize, e: usize, f: usize) -
c,
d
),
SYS_FEVENT => format!(
"fevent({}, {:#X})",
b,
c
),
SYS_FMAP => format!(
"fmap({}, {:#X}, {})",
b,
-5
View File
@@ -371,11 +371,6 @@ pub fn fcntl(fd: FileHandle, cmd: usize, arg: usize) -> Result<usize> {
}
}
/// Register events for file
pub fn fevent(fd: FileHandle, flags: usize) -> Result<usize> {
Err(Error::new(ENOSYS))
}
pub fn frename(fd: FileHandle, path: &[u8]) -> Result<usize> {
let file = {
let contexts = context::contexts();
-1
View File
@@ -63,7 +63,6 @@ pub fn syscall(a: usize, b: usize, c: usize, d: usize, e: usize, f: usize, bp: u
SYS_DUP => dup(fd, validate_slice(c as *const u8, d)?).map(FileHandle::into),
SYS_DUP2 => dup2(fd, FileHandle::from(c), validate_slice(d as *const u8, e)?).map(FileHandle::into),
SYS_FCNTL => fcntl(fd, c, d),
SYS_FEVENT => fevent(fd, c),
SYS_FEXEC => fexec(fd, validate_slice(c as *const [usize; 2], d)?, validate_slice(e as *const [usize; 2], f)?),
SYS_FRENAME => frename(fd, validate_slice(c as *const u8, d)?),
SYS_FUNMAP => funmap(b),
+6 -19
View File
@@ -1,7 +1,7 @@
use alloc::arc::Arc;
use alloc::boxed::Box;
use alloc::{BTreeMap, Vec};
use core::alloc::{Alloc, GlobalAlloc, Layout};
use alloc::vec::Vec;
use core::alloc::{GlobalAlloc, Layout};
use core::{intrinsics, mem};
use core::ops::DerefMut;
use spin::Mutex;
@@ -86,7 +86,6 @@ pub fn clone(flags: usize, stack_base: usize) -> Result<ContextId> {
let grants;
let name;
let cwd;
let env;
let files;
let actions;
@@ -265,16 +264,6 @@ pub fn clone(flags: usize, stack_base: usize) -> Result<ContextId> {
cwd = Arc::new(Mutex::new(context.cwd.lock().clone()));
}
if flags & CLONE_VM == CLONE_VM {
env = Arc::clone(&context.env);
} else {
let mut new_env = BTreeMap::new();
for item in context.env.lock().iter() {
new_env.insert(item.0.clone(), Arc::new(Mutex::new(item.1.lock().clone())));
}
env = Arc::new(Mutex::new(new_env));
}
if flags & CLONE_FILES == CLONE_FILES {
files = Arc::clone(&context.files);
} else {
@@ -482,8 +471,6 @@ pub fn clone(flags: usize, stack_base: usize) -> Result<ContextId> {
context.cwd = cwd;
context.env = env;
context.files = files;
context.actions = actions;
@@ -748,7 +735,7 @@ fn exec_noreturn(
(vfork, context.ppid, files)
};
for (fd, file_option) in files.lock().iter_mut().enumerate() {
for (_fd, file_option) in files.lock().iter_mut().enumerate() {
let mut cloexec = false;
if let Some(ref file) = *file_option {
if file.cloexec {
@@ -778,7 +765,7 @@ fn exec_noreturn(
unsafe { usermode(entry, sp, 0); }
}
pub fn fexec(mut fd: FileHandle, arg_ptrs: &[[usize; 2]], var_ptrs: &[[usize; 2]]) -> Result<usize> {
pub fn fexec(fd: FileHandle, arg_ptrs: &[[usize; 2]], var_ptrs: &[[usize; 2]]) -> Result<usize> {
let mut args = Vec::new();
for arg_ptr in arg_ptrs {
let arg = validate_slice(arg_ptr[0] as *const u8, arg_ptr[1])?;
@@ -944,7 +931,7 @@ pub fn exit(status: usize) -> ! {
};
// Files must be closed while context is valid so that messages can be passed
for (fd, file_option) in close_files.drain(..).enumerate() {
for (_fd, file_option) in close_files.drain(..).enumerate() {
if let Some(file) = file_option {
let _ = file.close();
}
@@ -1063,7 +1050,7 @@ pub fn kill(pid: ContextId, sig: usize) -> Result<usize> {
(context.ruid, context.euid, context.pgid)
};
if sig >= 0 && sig < 0x7F {
if sig < 0x7F {
let mut found = 0;
let mut sent = 0;