WIP: Kevent

This commit is contained in:
Jeremy Soller 2016-09-23 15:47:53 -06:00
parent 94ef9dd14a
commit 616dfbc055
16 changed files with 131 additions and 13 deletions

View file

@ -48,7 +48,7 @@ impl Scheme for DebugScheme {
if i > 0 {
return Ok(i);
} else {
unsafe { context::switch(); }
unsafe { context::switch(); } //TODO: Block
}
}
}

33
kernel/scheme/event.rs Normal file
View file

@ -0,0 +1,33 @@
use core::{mem, str};
use arch::interrupt::irq::{ACKS, COUNTS, acknowledge};
use syscall::error::*;
use syscall::scheme::Scheme;
pub struct EventScheme;
impl Scheme for EventScheme {
fn open(&self, _path: &[u8], _flags: usize) -> Result<usize> {
Ok(
}
fn dup(&self, file: usize) -> Result<usize> {
Ok(file)
}
fn read(&self, file: usize, buffer: &mut [u8]) -> Result<usize> {
Ok(0)
}
fn write(&self, file: usize, buffer: &[u8]) -> Result<usize> {
Ok(0)
}
fn fsync(&self, _file: usize) -> Result<usize> {
Ok(0)
}
fn close(&self, _file: usize) -> Result<usize> {
Ok(0)
}
}

View file

@ -52,7 +52,7 @@ impl UserInner {
}
}
unsafe { context::switch(); }
unsafe { context::switch(); } //TODO: Block
}
}
@ -163,7 +163,7 @@ impl UserInner {
if i > 0 {
return Ok(i * packet_size);
} else {
unsafe { context::switch(); }
unsafe { context::switch(); } //TODO: Block
}
}
} else {
@ -230,7 +230,12 @@ impl Scheme for UserScheme {
fn seek(&self, file: usize, position: usize, whence: usize) -> Result<usize> {
let inner = self.inner.upgrade().ok_or(Error::new(ENODEV))?;
inner.call(SYS_FSYNC, file, position, whence)
inner.call(SYS_LSEEK, file, position, whence)
}
fn fevent(&self, file: usize, flags: usize) -> Result<usize> {
let inner = self.inner.upgrade().ok_or(Error::new(ENODEV))?;
inner.call(SYS_FEVENT, file, flags, 0)
}
fn fstat(&self, file: usize, stat: &mut Stat) -> Result<usize> {