pub mod types;
pub use types::*;
#[allow(dead_code)]
pub enum SyscallTable {
OPEN = 0,
READ = 1,
WRITE = 2,
IOCTL = 3,
FSTAT = 4,
CLOSE = 5,
NANOSLEEP = 6,
EXIT = 7,
}
pub mod isal {
use super::*;
pub trait Task {
fn create<Func>(func: Func, stack_top_ptr: usize) -> usize
where Func: Fn() + 'static;
fn destory(tid: usize);
}
pub trait Memory {
fn mmap(
addr: usize,
size: usize,
prot: MemProt,
flags: MemFlags,
fd: usize,
offset: usize
) -> usize;
fn unmmap(addr: usize, len: usize) -> isize;
}
pub trait Time {
fn sys_nanosleep(req: TimeSpec, rem: TimeSpec) -> isize;
}
pub trait File {
fn sys_open(path_ptr: usize, flags: OpenFlags) -> isize;
fn sys_read(fd: usize, buffer: &mut [u8], len: usize) -> isize;
fn sys_write(fd: usize, buffer: &[u8]) -> isize;
fn sys_ioctl(fd: usize, cmd: usize, arg: usize) -> isize;
fn sys_stat(path_ptr: usize, stat: &mut Stat) -> isize;
fn sys_close(fd: usize) -> isize;
}
pub trait Process {
fn sys_exit(xstate: i32) -> isize;
}
}