WIP: Kevent
This commit is contained in:
parent
94ef9dd14a
commit
616dfbc055
16 changed files with 131 additions and 13 deletions
|
@ -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
33
kernel/scheme/event.rs
Normal 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)
|
||||
}
|
||||
}
|
|
@ -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> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue