Add wnohang, make PS/2 driver write input to display scheme, which then passes it to the shell
This commit is contained in:
parent
046236c10f
commit
76b0c7eeea
9 changed files with 151 additions and 96 deletions
|
@ -18,7 +18,7 @@ use elf::{self, program_header};
|
|||
use scheme;
|
||||
use syscall;
|
||||
use syscall::error::*;
|
||||
use syscall::flag::{CLONE_VM, CLONE_FS, CLONE_FILES, MAP_WRITE, MAP_WRITE_COMBINE};
|
||||
use syscall::flag::{CLONE_VM, CLONE_FS, CLONE_FILES, MAP_WRITE, MAP_WRITE_COMBINE, WNOHANG};
|
||||
use syscall::validate::{validate_slice, validate_slice_mut};
|
||||
|
||||
pub fn brk(address: usize) -> Result<usize> {
|
||||
|
@ -594,7 +594,7 @@ pub fn sched_yield() -> Result<usize> {
|
|||
Ok(0)
|
||||
}
|
||||
|
||||
pub fn waitpid(pid: usize, status_ptr: usize, _options: usize) -> Result<usize> {
|
||||
pub fn waitpid(pid: usize, status_ptr: usize, flags: usize) -> Result<usize> {
|
||||
//TODO: Implement status_ptr and options
|
||||
loop {
|
||||
{
|
||||
|
@ -616,6 +616,8 @@ pub fn waitpid(pid: usize, status_ptr: usize, _options: usize) -> Result<usize>
|
|||
if exited {
|
||||
let mut contexts = context::contexts_mut();
|
||||
return contexts.remove(pid).ok_or(Error::new(ESRCH)).and(Ok(pid));
|
||||
} else if flags & WNOHANG == WNOHANG {
|
||||
return Ok(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue