From 416ec07ea4d5f71f34eb82594a7398428e8225f9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 20 Sep 2016 21:52:45 -0600 Subject: [PATCH] WIP: VESA driver. Make initfs generated by code --- src/flag.rs | 11 +++++++---- src/lib.rs | 8 ++++++++ src/number.rs | 2 ++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/flag.rs b/src/flag.rs index fa00558..5351384 100644 --- a/src/flag.rs +++ b/src/flag.rs @@ -14,14 +14,17 @@ pub const CLONE_SUPERVISE: usize = 0x400000; pub const CLOCK_REALTIME: usize = 1; pub const CLOCK_MONOTONIC: usize = 4; -pub const MODE_DIR: u16 = 0x4000; -pub const MODE_FILE: u16 = 0x8000; -pub const MODE_ALL: u16 = MODE_DIR | MODE_FILE; - pub const FUTEX_WAIT: usize = 0; pub const FUTEX_WAKE: usize = 1; pub const FUTEX_REQUEUE: usize = 2; +pub const MAP_WRITE: usize = 1; +pub const MAP_WRITE_COMBINE: usize = 2; + +pub const MODE_DIR: u16 = 0x4000; +pub const MODE_FILE: u16 = 0x8000; +pub const MODE_ALL: u16 = MODE_DIR | MODE_FILE; + pub const SEEK_SET: usize = 0; pub const SEEK_CUR: usize = 1; pub const SEEK_END: usize = 2; diff --git a/src/lib.rs b/src/lib.rs index 099f61f..3acc70a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -110,6 +110,14 @@ pub fn open(path: &str, flags: usize) -> Result { unsafe { syscall3(SYS_OPEN, path.as_ptr() as usize, path.len(), flags) } } +pub unsafe fn physmap(physical_address: usize, size: usize, flags: usize) -> Result { + syscall3(SYS_PHYSMAP, physical_address, size, flags) +} + +pub unsafe fn physunmap(virtual_address: usize) -> Result { + syscall1(SYS_PHYSUNMAP, virtual_address) +} + pub fn pipe2(fds: &mut [usize; 2], flags: usize) -> Result { unsafe { syscall2(SYS_PIPE2, fds.as_ptr() as usize, flags) } } diff --git a/src/number.rs b/src/number.rs index e65c37f..80e7065 100644 --- a/src/number.rs +++ b/src/number.rs @@ -19,6 +19,8 @@ pub const SYS_LSEEK: usize = 19; pub const SYS_MKDIR: usize = 39; pub const SYS_NANOSLEEP: usize = 162; pub const SYS_OPEN: usize = 5; +pub const SYS_PHYSMAP: usize = 945; +pub const SYS_PHYSUNMAP: usize = 946; pub const SYS_PIPE2: usize = 331; pub const SYS_READ: usize = 3; pub const SYS_RMDIR: usize = 84;