Implement more system calls
This commit is contained in:
parent
f60661820d
commit
ed3170bdcc
1 changed files with 224 additions and 124 deletions
|
|
@ -1,35 +1,7 @@
|
|||
use core::ops::{Deref, DerefMut};
|
||||
use core::{mem, slice};
|
||||
use core::slice;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[derive(Copy, Clone, Debug, Default)]
|
||||
#[repr(packed)]
|
||||
pub struct Packet {
|
||||
pub id: usize,
|
||||
pub a: usize,
|
||||
pub b: usize,
|
||||
pub c: usize,
|
||||
pub d: usize
|
||||
}
|
||||
|
||||
impl Deref for Packet {
|
||||
type Target = [u8];
|
||||
fn deref(&self) -> &[u8] {
|
||||
unsafe {
|
||||
slice::from_raw_parts(self as *const Packet as *const u8, mem::size_of::<Packet>()) as &[u8]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl DerefMut for Packet {
|
||||
fn deref_mut(&mut self) -> &mut [u8] {
|
||||
unsafe {
|
||||
slice::from_raw_parts_mut(self as *mut Packet as *mut u8, mem::size_of::<Packet>()) as &mut [u8]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub trait Scheme {
|
||||
fn handle(&self, packet: &mut Packet) {
|
||||
packet.a = Error::mux(match packet.a {
|
||||
|
|
@ -69,11 +41,6 @@ pub trait Scheme {
|
|||
Err(Error::new(ENOENT))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn stat(&self, path: &[u8], stat: &mut Stat) -> Result<usize> {
|
||||
Err(Error::new(ENOENT))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn unlink(&self, path: &[u8]) -> Result<usize> {
|
||||
Err(Error::new(ENOENT))
|
||||
|
|
|
|||
Loading…
Reference in a new issue