From bdd866eafe735f9a55a778445f21d7fd73b17528 Mon Sep 17 00:00:00 2001 From: Erin Date: Fri, 18 Feb 2022 19:12:07 +0100 Subject: [PATCH 01/16] Working Rhai REPL --- ableos/src/arch/x86_64/interrupts.rs | 1 + ableos/src/scratchpad.rs | 28 ++++++++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/ableos/src/arch/x86_64/interrupts.rs b/ableos/src/arch/x86_64/interrupts.rs index 1429a9b..1dca10a 100644 --- a/ableos/src/arch/x86_64/interrupts.rs +++ b/ableos/src/arch/x86_64/interrupts.rs @@ -90,6 +90,7 @@ extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: InterruptStac // Backspace 8 => { WRITER.lock().backspace(); + KEYBUFF.lock().push(8_u8 as _); // print!(" "); // WRITER.lock().backspace(); } diff --git a/ableos/src/scratchpad.rs b/ableos/src/scratchpad.rs index c0e7a60..6d7f4b5 100644 --- a/ableos/src/scratchpad.rs +++ b/ableos/src/scratchpad.rs @@ -36,7 +36,7 @@ pub fn scratchpad() { */ // interp(); - // rhai_shell(); + rhai_shell(); } pub struct PciIO {} @@ -94,16 +94,28 @@ impl ProcessMessage { */ pub fn rhai_shell() { - let mut engine = rhai::Engine::new(); + let engine = rhai::Engine::new(); + let mut buf = String::new(); + print!("> "); - let ret = engine.eval::("1 + 2"); + loop { + match x86_64::instructions::interrupts::without_interrupts(|| KEYBUFF.lock().pop()) { + Some('\n') => { + match engine.eval::(&buf) { + Ok(o) => println!("{o}"), + Err(e) => println!("Eval error: {e}"), + }; - match ret { - Ok(x) => println!("{}", x), - Err(e) => println!("{}", e), + buf.clear(); + print!("> "); + } + Some('\u{0008}') => { + buf.pop(); + } + Some(chr) => buf.push(chr), + None => (), + } } - - loop {} } lazy_static::lazy_static!( pub static ref KEYBUFF: spin::Mutex> = spin::Mutex::new( From ca743955c57d909c76a28e87e4802519caad47d9 Mon Sep 17 00:00:00 2001 From: Erin Date: Fri, 18 Feb 2022 19:25:54 +0100 Subject: [PATCH 02/16] chore: fmt --- ableos/src/arch/x86_64/drivers/serial.rs | 20 +- ableos/src/arch/x86_64/memory.rs | 136 ++--- ableos/src/experiments/kinfo.rs | 40 +- ableos/src/experiments/server.rs | 16 +- ableos/src/experiments/y_compositor/mod.rs | 2 +- .../keyboard/abstractions/custom_layout.rs | 138 ++--- .../abstractions/custom_scancode_set.rs | 488 +++++++++--------- .../src/keyboard/abstractions/layout_entry.rs | 178 ++++--- ableos/src/keyboard/small_types.rs | 142 ++--- ableos/src/relib/encoding/bin.rs | 3 +- ableos/src/relib/time/mod.rs | 28 +- ableos/src/vga_e.rs | 53 +- repbuild/src/main.rs | 102 ++-- shadeable/src/pixel_format.rs | 243 +++++---- 14 files changed, 793 insertions(+), 796 deletions(-) diff --git a/ableos/src/arch/x86_64/drivers/serial.rs b/ableos/src/arch/x86_64/drivers/serial.rs index 16703c4..85b29cc 100644 --- a/ableos/src/arch/x86_64/drivers/serial.rs +++ b/ableos/src/arch/x86_64/drivers/serial.rs @@ -2,19 +2,19 @@ use lazy_static::lazy_static; use spin::Mutex; use uart_16550::SerialPort; lazy_static! { - pub static ref SERIAL1: Mutex = { - let mut serial_port = unsafe { SerialPort::new(0x3F8) }; - serial_port.init(); - Mutex::new(serial_port) - }; + pub static ref SERIAL1: Mutex = { + let mut serial_port = unsafe { SerialPort::new(0x3F8) }; + serial_port.init(); + Mutex::new(serial_port) + }; } #[doc(hidden)] pub fn _print(args: ::core::fmt::Arguments) { - use core::fmt::Write; - SERIAL1 - .lock() - .write_fmt(args) - .expect("Printing to serial failed"); + use core::fmt::Write; + SERIAL1 + .lock() + .write_fmt(args) + .expect("Printing to serial failed"); } /// Prints to the host through the serial interface. #[macro_export] diff --git a/ableos/src/arch/x86_64/memory.rs b/ableos/src/arch/x86_64/memory.rs index 9c42a18..10725d0 100644 --- a/ableos/src/arch/x86_64/memory.rs +++ b/ableos/src/arch/x86_64/memory.rs @@ -1,112 +1,112 @@ use bootloader::bootinfo::{MemoryMap, MemoryRegionType}; use x86_64::{ - structures::paging::{ - FrameAllocator, Mapper, OffsetPageTable, Page, PageTable, PhysFrame, Size4KiB, - }, - PhysAddr, VirtAddr, + structures::paging::{ + FrameAllocator, Mapper, OffsetPageTable, Page, PageTable, PhysFrame, Size4KiB, + }, + PhysAddr, VirtAddr, }; pub unsafe fn init(physical_memory_offset: VirtAddr) -> OffsetPageTable<'static> { - let level_4_table = active_level_4_table(physical_memory_offset); - OffsetPageTable::new(level_4_table, physical_memory_offset) + let level_4_table = active_level_4_table(physical_memory_offset); + OffsetPageTable::new(level_4_table, physical_memory_offset) } unsafe fn active_level_4_table(physical_memory_offset: VirtAddr) -> &'static mut PageTable { - use x86_64::registers::control::Cr3; + use x86_64::registers::control::Cr3; - let (level_4_table_frame, _) = Cr3::read(); + let (level_4_table_frame, _) = Cr3::read(); - let phys = level_4_table_frame.start_address(); - let virt = physical_memory_offset + phys.as_u64(); - let page_table_ptr: *mut PageTable = virt.as_mut_ptr(); + let phys = level_4_table_frame.start_address(); + let virt = physical_memory_offset + phys.as_u64(); + let page_table_ptr: *mut PageTable = virt.as_mut_ptr(); - // THIS IS UNSAFE - &mut *page_table_ptr + // THIS IS UNSAFE + &mut *page_table_ptr } fn translate_addr_inner(addr: VirtAddr, physical_memory_offset: VirtAddr) -> Option { - use x86_64::registers::control::Cr3; - use x86_64::structures::paging::page_table::FrameError; + use x86_64::registers::control::Cr3; + use x86_64::structures::paging::page_table::FrameError; - let (level_4_table_frame, _) = Cr3::read(); + let (level_4_table_frame, _) = Cr3::read(); - let table_indexes = [ - addr.p4_index(), - addr.p3_index(), - addr.p2_index(), - addr.p1_index(), - ]; - let mut frame = level_4_table_frame; + let table_indexes = [ + addr.p4_index(), + addr.p3_index(), + addr.p2_index(), + addr.p1_index(), + ]; + let mut frame = level_4_table_frame; - for &index in &table_indexes { - // convert the frame into a page table reference - let virt = physical_memory_offset + frame.start_address().as_u64(); - let table_ptr: *const PageTable = virt.as_ptr(); - let table = unsafe { &*table_ptr }; + for &index in &table_indexes { + // convert the frame into a page table reference + let virt = physical_memory_offset + frame.start_address().as_u64(); + let table_ptr: *const PageTable = virt.as_ptr(); + let table = unsafe { &*table_ptr }; - let entry = &table[index]; - frame = match entry.frame() { - Ok(frame) => frame, - Err(FrameError::FrameNotPresent) => return None, - Err(FrameError::HugeFrame) => panic!["huge pages not supported"], - }; - } + let entry = &table[index]; + frame = match entry.frame() { + Ok(frame) => frame, + Err(FrameError::FrameNotPresent) => return None, + Err(FrameError::HugeFrame) => panic!["huge pages not supported"], + }; + } - Some(frame.start_address() + u64::from(addr.page_offset())) + Some(frame.start_address() + u64::from(addr.page_offset())) } pub unsafe fn translate_addr(addr: VirtAddr, physical_memory_offset: VirtAddr) -> Option { - translate_addr_inner(addr, physical_memory_offset) + translate_addr_inner(addr, physical_memory_offset) } pub fn create_example_mapping( - page: Page, - mapper: &mut OffsetPageTable, - frame_allocator: &mut impl FrameAllocator, + page: Page, + mapper: &mut OffsetPageTable, + frame_allocator: &mut impl FrameAllocator, ) { - use x86_64::structures::paging::PageTableFlags as Flags; + use x86_64::structures::paging::PageTableFlags as Flags; - let frame = PhysFrame::containing_address(PhysAddr::new(0xb8000)); - let flags = Flags::PRESENT | Flags::WRITABLE; + let frame = PhysFrame::containing_address(PhysAddr::new(0xb8000)); + let flags = Flags::PRESENT | Flags::WRITABLE; - let map_to_result = unsafe { mapper.map_to(page, frame, flags, frame_allocator) }; - map_to_result.expect("map_to failed").flush(); + let map_to_result = unsafe { mapper.map_to(page, frame, flags, frame_allocator) }; + map_to_result.expect("map_to failed").flush(); } pub struct EmptyFrameAllocator; unsafe impl FrameAllocator for EmptyFrameAllocator { - fn allocate_frame(&mut self) -> Option> { - None - } + fn allocate_frame(&mut self) -> Option> { + None + } } pub struct BootInfoFrameAllocator { - memory_map: &'static MemoryMap, - next: usize, + memory_map: &'static MemoryMap, + next: usize, } impl BootInfoFrameAllocator { - pub unsafe fn init(memory_map: &'static MemoryMap) -> Self { - Self { - memory_map, - next: 0, - } - } + pub unsafe fn init(memory_map: &'static MemoryMap) -> Self { + Self { + memory_map, + next: 0, + } + } - fn usable_frames(&self) -> impl Iterator { - let regions = self.memory_map.iter(); - let usable_regions = regions.filter(|r| r.region_type == MemoryRegionType::Usable); - let addr_range = usable_regions.map(|r| r.range.start_addr()..r.range.end_addr()); - let frame_address = addr_range.flat_map(|r| r.step_by(4096)); - frame_address.map(|addr| PhysFrame::containing_address(PhysAddr::new(addr))) - } + fn usable_frames(&self) -> impl Iterator { + let regions = self.memory_map.iter(); + let usable_regions = regions.filter(|r| r.region_type == MemoryRegionType::Usable); + let addr_range = usable_regions.map(|r| r.range.start_addr()..r.range.end_addr()); + let frame_address = addr_range.flat_map(|r| r.step_by(4096)); + frame_address.map(|addr| PhysFrame::containing_address(PhysAddr::new(addr))) + } } unsafe impl FrameAllocator for BootInfoFrameAllocator { - fn allocate_frame(&mut self) -> Option> { - let frame = self.usable_frames().nth(self.next); - self.next += 1; - frame - } + fn allocate_frame(&mut self) -> Option> { + let frame = self.usable_frames().nth(self.next); + self.next += 1; + frame + } } diff --git a/ableos/src/experiments/kinfo.rs b/ableos/src/experiments/kinfo.rs index 193d0ac..c048f78 100644 --- a/ableos/src/experiments/kinfo.rs +++ b/ableos/src/experiments/kinfo.rs @@ -1,34 +1,34 @@ // Can be standardized // NOTE: Move this to relib pub struct SemanticVersion { - pub major: u8, - pub minor: u8, - pub patch: u8, + pub major: u8, + pub minor: u8, + pub patch: u8, } impl core::fmt::Display for SemanticVersion { - fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { - write!(f, "v{}.{}.{}", self.major, self.minor, self.patch) - } + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + write!(f, "v{}.{}.{}", self.major, self.minor, self.patch) + } } // NOTE: Move to somewhere else lazy_static! { - pub static ref KINFO: KernelInfo = KernelInfo { - kernel_version: SemanticVersion { - major: 0, - minor: 0, - patch: 0, - }, - memory: SystemMemory { used: 0, total: 0 } - }; + pub static ref KINFO: KernelInfo = KernelInfo { + kernel_version: SemanticVersion { + major: 0, + minor: 0, + patch: 0, + }, + memory: SystemMemory { used: 0, total: 0 } + }; } /// simple info you would want to know in a neofetch like program pub struct KernelInfo { - // os: String, - // host: String, - pub kernel_version: SemanticVersion, - // cpu: String, - // gpu: String, - pub memory: SystemMemory, + // os: String, + // host: String, + pub kernel_version: SemanticVersion, + // cpu: String, + // gpu: String, + pub memory: SystemMemory, } use super::systeminfo::SystemMemory; use lazy_static::lazy_static; diff --git a/ableos/src/experiments/server.rs b/ableos/src/experiments/server.rs index 42d82ac..c857606 100644 --- a/ableos/src/experiments/server.rs +++ b/ableos/src/experiments/server.rs @@ -1,10 +1,10 @@ pub trait Server { - /// Initialize the server and return a number - fn initialize() -> u32; - /// kill the server - fn kill() -> bool; - // put data in the servers outbox - fn send(); - // put data in the servers inbox and notify it - fn recieve(); + /// Initialize the server and return a number + fn initialize() -> u32; + /// kill the server + fn kill() -> bool; + // put data in the servers outbox + fn send(); + // put data in the servers inbox and notify it + fn recieve(); } diff --git a/ableos/src/experiments/y_compositor/mod.rs b/ableos/src/experiments/y_compositor/mod.rs index a09d7f8..32bd838 100644 --- a/ableos/src/experiments/y_compositor/mod.rs +++ b/ableos/src/experiments/y_compositor/mod.rs @@ -1,3 +1,3 @@ //! +pub mod compositor; pub mod window; -pub mod compositor; \ No newline at end of file diff --git a/ableos/src/keyboard/abstractions/custom_layout.rs b/ableos/src/keyboard/abstractions/custom_layout.rs index 0c42378..9939c24 100644 --- a/ableos/src/keyboard/abstractions/custom_layout.rs +++ b/ableos/src/keyboard/abstractions/custom_layout.rs @@ -1,16 +1,16 @@ use crate::{ - DecodedKey, HandleControl, KeyCode, KeyboardLayout, LayoutEntry, LayoutEntryKind, Modifiers, + DecodedKey, HandleControl, KeyCode, KeyboardLayout, LayoutEntry, LayoutEntryKind, Modifiers, }; // Do not edit this file directly. Instead, create a `Keyboard` and modify that. pub struct CustomLayout { - mapping: [LayoutEntry; 256], + mapping: [LayoutEntry; 256], } impl Default for CustomLayout { - fn default() -> Self { - Self::new_us104key() - } + fn default() -> Self { + Self::new_us104key() + } } #[rustfmt::skip] impl CustomLayout { @@ -101,76 +101,76 @@ impl CustomLayout { } } impl KeyboardLayout for CustomLayout { - fn map_keycode( - &self, - keycode: KeyCode, - modifiers: &Modifiers, - handle_ctrl: HandleControl, - ) -> DecodedKey { - let map_to_unicode = handle_ctrl == HandleControl::MapLettersToUnicode; - let spot = &self.mapping[keycode as usize]; - if let Some(k) = if map_to_unicode && modifiers.is_ctrl() { - match spot.kind { - LayoutEntryKind::Regular => spot.raw_unicode, - LayoutEntryKind::Numlockable => None, - LayoutEntryKind::Capslockable => spot.raw_unicode, - } - } else if modifiers.alt_gr { - match spot.kind { - LayoutEntryKind::Regular => spot.altgr, - LayoutEntryKind::Numlockable => None, - LayoutEntryKind::Capslockable => spot.altgr, - } - } else if modifiers.is_shifted() { - match spot.kind { - LayoutEntryKind::Regular => spot.shifted, - LayoutEntryKind::Numlockable => { - if modifiers.numlock { - spot.locked_shifted - } else { - spot.shifted - } + fn map_keycode( + &self, + keycode: KeyCode, + modifiers: &Modifiers, + handle_ctrl: HandleControl, + ) -> DecodedKey { + let map_to_unicode = handle_ctrl == HandleControl::MapLettersToUnicode; + let spot = &self.mapping[keycode as usize]; + if let Some(k) = if map_to_unicode && modifiers.is_ctrl() { + match spot.kind { + LayoutEntryKind::Regular => spot.raw_unicode, + LayoutEntryKind::Numlockable => None, + LayoutEntryKind::Capslockable => spot.raw_unicode, } - LayoutEntryKind::Capslockable => { - if modifiers.is_caps() { - spot.locked_shifted - } else { - spot.shifted - } + } else if modifiers.alt_gr { + match spot.kind { + LayoutEntryKind::Regular => spot.altgr, + LayoutEntryKind::Numlockable => None, + LayoutEntryKind::Capslockable => spot.altgr, } - } - } else { - match spot.kind { - LayoutEntryKind::Regular => spot.unshifted, - LayoutEntryKind::Numlockable => { - if modifiers.numlock { - spot.locked - } else { - spot.unshifted - } + } else if modifiers.is_shifted() { + match spot.kind { + LayoutEntryKind::Regular => spot.shifted, + LayoutEntryKind::Numlockable => { + if modifiers.numlock { + spot.locked_shifted + } else { + spot.shifted + } + } + LayoutEntryKind::Capslockable => { + if modifiers.is_caps() { + spot.locked_shifted + } else { + spot.shifted + } + } } - LayoutEntryKind::Capslockable => { - if modifiers.is_caps() { - spot.locked - } else { - spot.unshifted - } + } else { + match spot.kind { + LayoutEntryKind::Regular => spot.unshifted, + LayoutEntryKind::Numlockable => { + if modifiers.numlock { + spot.locked + } else { + spot.unshifted + } + } + LayoutEntryKind::Capslockable => { + if modifiers.is_caps() { + spot.locked + } else { + spot.unshifted + } + } } - } - } { - k - } else { - DecodedKey::RawKey(keycode as u8) - } - } + } { + k + } else { + DecodedKey::RawKey(keycode as u8) + } + } } // Note(elfein) Not super hard to get right, but still- DO NOT TOUCH impl CustomLayout { - // See how hard this is to get right? - // See the complexity of all the methods? - // Yeah- if you don't know what you're doing, ask before you touch! - pub fn set(&mut self, pos: KeyCode, entry: LayoutEntry) { - self.mapping[pos as usize] = entry; - } + // See how hard this is to get right? + // See the complexity of all the methods? + // Yeah- if you don't know what you're doing, ask before you touch! + pub fn set(&mut self, pos: KeyCode, entry: LayoutEntry) { + self.mapping[pos as usize] = entry; + } } diff --git a/ableos/src/keyboard/abstractions/custom_scancode_set.rs b/ableos/src/keyboard/abstractions/custom_scancode_set.rs index 5f226d9..8cb6950 100644 --- a/ableos/src/keyboard/abstractions/custom_scancode_set.rs +++ b/ableos/src/keyboard/abstractions/custom_scancode_set.rs @@ -1,253 +1,255 @@ -use crate::{KeyCode, ScancodeSet, DecodeState, KeyEvent, Error, KeyState, keyboard::EXTENDED_KEY_CODE}; +use crate::{ + keyboard::EXTENDED_KEY_CODE, DecodeState, Error, KeyCode, KeyEvent, KeyState, ScancodeSet, +}; pub struct CustomScancodeSet { - single_byte: [Option; 256], - extended: [Option; 256], + single_byte: [Option; 256], + extended: [Option; 256], } impl Default for CustomScancodeSet { - fn default() -> Self { - Self::scancode_set1() - } + fn default() -> Self { + Self::scancode_set1() + } } impl CustomScancodeSet { - pub fn scancode_set1() -> Self { - let mut scancode_set = Self { - single_byte: [None; 256], - extended: [None; 256], - }; - scancode_set.single_byte[0x01] = Some(KeyCode::Escape); // 01 - scancode_set.single_byte[0x02] = Some(KeyCode::Key1); // 02 - scancode_set.single_byte[0x03] = Some(KeyCode::Key2); // 03 - scancode_set.single_byte[0x04] = Some(KeyCode::Key3); // 04 - scancode_set.single_byte[0x05] = Some(KeyCode::Key4); // 05 - scancode_set.single_byte[0x06] = Some(KeyCode::Key5); // 06 - scancode_set.single_byte[0x07] = Some(KeyCode::Key6); // 07 - scancode_set.single_byte[0x08] = Some(KeyCode::Key7); // 08 - scancode_set.single_byte[0x09] = Some(KeyCode::Key8); // 09 - scancode_set.single_byte[0x0A] = Some(KeyCode::Key9); // 0A - scancode_set.single_byte[0x0B] = Some(KeyCode::Key0); // 0B - scancode_set.single_byte[0x0C] = Some(KeyCode::Minus); // 0C - scancode_set.single_byte[0x0D] = Some(KeyCode::Equals); // 0D - scancode_set.single_byte[0x0E] = Some(KeyCode::Backspace); // 0E - scancode_set.single_byte[0x0F] = Some(KeyCode::Tab); // 0F - scancode_set.single_byte[0x10] = Some(KeyCode::Q); // 10 - scancode_set.single_byte[0x11] = Some(KeyCode::W); // 11 - scancode_set.single_byte[0x12] = Some(KeyCode::E); // 12 - scancode_set.single_byte[0x13] = Some(KeyCode::R); // 13 - scancode_set.single_byte[0x14] = Some(KeyCode::T); // 14 - scancode_set.single_byte[0x15] = Some(KeyCode::Y); // 15 - scancode_set.single_byte[0x16] = Some(KeyCode::U); // 16 - scancode_set.single_byte[0x17] = Some(KeyCode::I); // 17 - scancode_set.single_byte[0x18] = Some(KeyCode::O); // 18 - scancode_set.single_byte[0x19] = Some(KeyCode::P); // 19 - scancode_set.single_byte[0x1A] = Some(KeyCode::BracketSquareLeft); // 1A - scancode_set.single_byte[0x1B] = Some(KeyCode::BracketSquareRight); // 1B - scancode_set.single_byte[0x1C] = Some(KeyCode::Enter); // 1C - scancode_set.single_byte[0x1D] = Some(KeyCode::ControlLeft); // 1D - scancode_set.single_byte[0x1E] = Some(KeyCode::A); // 1E - scancode_set.single_byte[0x1F] = Some(KeyCode::S); // 1F - scancode_set.single_byte[0x20] = Some(KeyCode::D); // 20 - scancode_set.single_byte[0x21] = Some(KeyCode::F); // 21 - scancode_set.single_byte[0x22] = Some(KeyCode::G); // 22 - scancode_set.single_byte[0x23] = Some(KeyCode::H); // 23 - scancode_set.single_byte[0x24] = Some(KeyCode::J); // 24 - scancode_set.single_byte[0x25] = Some(KeyCode::K); // 25 - scancode_set.single_byte[0x26] = Some(KeyCode::L); // 26 - scancode_set.single_byte[0x27] = Some(KeyCode::SemiColon); // 27 - scancode_set.single_byte[0x28] = Some(KeyCode::Quote); // 28 - scancode_set.single_byte[0x29] = Some(KeyCode::BackTick); // 29 - scancode_set.single_byte[0x2A] = Some(KeyCode::ShiftLeft); // 2A - scancode_set.single_byte[0x2B] = Some(KeyCode::BackSlash); // 2B - scancode_set.single_byte[0x2C] = Some(KeyCode::Z); // 2C - scancode_set.single_byte[0x2D] = Some(KeyCode::X); // 2D - scancode_set.single_byte[0x2E] = Some(KeyCode::C); // 2E - scancode_set.single_byte[0x2F] = Some(KeyCode::V); // 2F - scancode_set.single_byte[0x30] = Some(KeyCode::B); // 30 - scancode_set.single_byte[0x31] = Some(KeyCode::N); // 31 - scancode_set.single_byte[0x32] = Some(KeyCode::M); // 32 - scancode_set.single_byte[0x33] = Some(KeyCode::Comma); // 33 - scancode_set.single_byte[0x34] = Some(KeyCode::Fullstop); // 34 - scancode_set.single_byte[0x35] = Some(KeyCode::Slash); // 35 - scancode_set.single_byte[0x36] = Some(KeyCode::ShiftRight); // 36 - scancode_set.single_byte[0x37] = Some(KeyCode::NumpadStar); // 37 - scancode_set.single_byte[0x38] = Some(KeyCode::AltLeft); // 38 - scancode_set.single_byte[0x39] = Some(KeyCode::Spacebar); // 39 - scancode_set.single_byte[0x3A] = Some(KeyCode::CapsLock); // 3A - scancode_set.single_byte[0x3B] = Some(KeyCode::F1); // 3B - scancode_set.single_byte[0x3C] = Some(KeyCode::F2); // 3C - scancode_set.single_byte[0x3D] = Some(KeyCode::F3); // 3D - scancode_set.single_byte[0x3E] = Some(KeyCode::F4); // 3E - scancode_set.single_byte[0x3F] = Some(KeyCode::F5); // 3F - scancode_set.single_byte[0x40] = Some(KeyCode::F6); // 40 - scancode_set.single_byte[0x41] = Some(KeyCode::F7); // 41 - scancode_set.single_byte[0x42] = Some(KeyCode::F8); // 42 - scancode_set.single_byte[0x43] = Some(KeyCode::F9); // 43 - scancode_set.single_byte[0x44] = Some(KeyCode::F10); // 44 - scancode_set.single_byte[0x45] = Some(KeyCode::NumpadLock); // 45 - scancode_set.single_byte[0x46] = Some(KeyCode::ScrollLock); // 46 - scancode_set.single_byte[0x47] = Some(KeyCode::Numpad7); // 47 - scancode_set.single_byte[0x48] = Some(KeyCode::Numpad8); // 48 - scancode_set.single_byte[0x49] = Some(KeyCode::Numpad9); // 49 - scancode_set.single_byte[0x4A] = Some(KeyCode::NumpadMinus); // 4A - scancode_set.single_byte[0x4B] = Some(KeyCode::Numpad4); // 4B - scancode_set.single_byte[0x4C] = Some(KeyCode::Numpad5); // 4C - scancode_set.single_byte[0x4D] = Some(KeyCode::Numpad6); // 4D - scancode_set.single_byte[0x4E] = Some(KeyCode::NumpadPlus); // 4E - scancode_set.single_byte[0x4F] = Some(KeyCode::Numpad1); // 4F - scancode_set.single_byte[0x50] = Some(KeyCode::Numpad2); // 50 - scancode_set.single_byte[0x51] = Some(KeyCode::Numpad3); // 51 - scancode_set.single_byte[0x52] = Some(KeyCode::Numpad0); // 52 - scancode_set.single_byte[0x53] = Some(KeyCode::NumpadPeriod); // 53 - // 0x54 - // 0x55 - // 0x56 - scancode_set.single_byte[0x57] = Some(KeyCode::F11); // 57 - scancode_set.single_byte[0x58] = Some(KeyCode::F12); // 58 - for i in 0x81..=0xD8 { - scancode_set.single_byte[i] = scancode_set.single_byte[i - 0x80]; - } - scancode_set.extended[0x10] = Some(KeyCode::PrevTrack); // E010 - //0x11 - //0x12 - //0x13 - //0x14 - //0x15 - //0x16 - //0x17 - //0x18 - scancode_set.extended[0x19] = Some(KeyCode::NextTrack); // E019 - //0x1A - //0x1B - scancode_set.extended[0x1C] = Some(KeyCode::NumpadEnter); // E01C - scancode_set.extended[0x1D] = Some(KeyCode::ControlRight); // E01D - //0x1E - //0x1F - scancode_set.extended[0x20] = Some(KeyCode::Mute); // E020 - scancode_set.extended[0x21] = Some(KeyCode::Calculator); // E021 - scancode_set.extended[0x22] = Some(KeyCode::Play); // E022 - //0x23 - scancode_set.extended[0x24] = Some(KeyCode::Stop); // E024 - //0x25 - //0x26 - //0x27 - //0x28 - //0x29 - //0x2A - //0x2B - //0x2C - //0x2D - scancode_set.extended[0x2E] = Some(KeyCode::VolumeDown); // E02E - //0x2F - scancode_set.extended[0x30] = Some(KeyCode::VolumeUp); // E030 - //0x31 - scancode_set.extended[0x32] = Some(KeyCode::WWWHome); // E032 - //0x33 - //0x34 - scancode_set.extended[0x35] = Some(KeyCode::NumpadSlash); // E035 - //0x36 - //0x37 - scancode_set.extended[0x38] = Some(KeyCode::AltRight); // E038 - //0x39 - //0x3A - //0x3B - //0x3C - //0x3D - //0x3E - //0x3F - //0x40 - //0x41 - //0x42 - //0x43 - //0x44 - //0x45 - //0x46 - scancode_set.extended[0x47] = Some(KeyCode::Home); // E047 - scancode_set.extended[0x48] = Some(KeyCode::ArrowUp); // E048 - scancode_set.extended[0x49] = Some(KeyCode::PageUp); // E049 - //0x4A - scancode_set.extended[0x4B] = Some(KeyCode::ArrowLeft); // E04B - //0x4C - scancode_set.extended[0x4D] = Some(KeyCode::ArrowRight); // E04D - //0x4E - scancode_set.extended[0x4F] = Some(KeyCode::End); // E04F - scancode_set.extended[0x50] = Some(KeyCode::ArrowDown); // E050 - scancode_set.extended[0x51] = Some(KeyCode::PageDown); // E051 - scancode_set.extended[0x52] = Some(KeyCode::Insert); // E052 - scancode_set.extended[0x53] = Some(KeyCode::Delete); // E053 - for i in 0x90..=0xED { - scancode_set.extended[i] = scancode_set.extended[i - 0x80]; - } - scancode_set - } - pub fn scancode_set2() -> Self { - Self { - single_byte: [None; 256], - extended: [None; 256], - } - } + pub fn scancode_set1() -> Self { + let mut scancode_set = Self { + single_byte: [None; 256], + extended: [None; 256], + }; + scancode_set.single_byte[0x01] = Some(KeyCode::Escape); // 01 + scancode_set.single_byte[0x02] = Some(KeyCode::Key1); // 02 + scancode_set.single_byte[0x03] = Some(KeyCode::Key2); // 03 + scancode_set.single_byte[0x04] = Some(KeyCode::Key3); // 04 + scancode_set.single_byte[0x05] = Some(KeyCode::Key4); // 05 + scancode_set.single_byte[0x06] = Some(KeyCode::Key5); // 06 + scancode_set.single_byte[0x07] = Some(KeyCode::Key6); // 07 + scancode_set.single_byte[0x08] = Some(KeyCode::Key7); // 08 + scancode_set.single_byte[0x09] = Some(KeyCode::Key8); // 09 + scancode_set.single_byte[0x0A] = Some(KeyCode::Key9); // 0A + scancode_set.single_byte[0x0B] = Some(KeyCode::Key0); // 0B + scancode_set.single_byte[0x0C] = Some(KeyCode::Minus); // 0C + scancode_set.single_byte[0x0D] = Some(KeyCode::Equals); // 0D + scancode_set.single_byte[0x0E] = Some(KeyCode::Backspace); // 0E + scancode_set.single_byte[0x0F] = Some(KeyCode::Tab); // 0F + scancode_set.single_byte[0x10] = Some(KeyCode::Q); // 10 + scancode_set.single_byte[0x11] = Some(KeyCode::W); // 11 + scancode_set.single_byte[0x12] = Some(KeyCode::E); // 12 + scancode_set.single_byte[0x13] = Some(KeyCode::R); // 13 + scancode_set.single_byte[0x14] = Some(KeyCode::T); // 14 + scancode_set.single_byte[0x15] = Some(KeyCode::Y); // 15 + scancode_set.single_byte[0x16] = Some(KeyCode::U); // 16 + scancode_set.single_byte[0x17] = Some(KeyCode::I); // 17 + scancode_set.single_byte[0x18] = Some(KeyCode::O); // 18 + scancode_set.single_byte[0x19] = Some(KeyCode::P); // 19 + scancode_set.single_byte[0x1A] = Some(KeyCode::BracketSquareLeft); // 1A + scancode_set.single_byte[0x1B] = Some(KeyCode::BracketSquareRight); // 1B + scancode_set.single_byte[0x1C] = Some(KeyCode::Enter); // 1C + scancode_set.single_byte[0x1D] = Some(KeyCode::ControlLeft); // 1D + scancode_set.single_byte[0x1E] = Some(KeyCode::A); // 1E + scancode_set.single_byte[0x1F] = Some(KeyCode::S); // 1F + scancode_set.single_byte[0x20] = Some(KeyCode::D); // 20 + scancode_set.single_byte[0x21] = Some(KeyCode::F); // 21 + scancode_set.single_byte[0x22] = Some(KeyCode::G); // 22 + scancode_set.single_byte[0x23] = Some(KeyCode::H); // 23 + scancode_set.single_byte[0x24] = Some(KeyCode::J); // 24 + scancode_set.single_byte[0x25] = Some(KeyCode::K); // 25 + scancode_set.single_byte[0x26] = Some(KeyCode::L); // 26 + scancode_set.single_byte[0x27] = Some(KeyCode::SemiColon); // 27 + scancode_set.single_byte[0x28] = Some(KeyCode::Quote); // 28 + scancode_set.single_byte[0x29] = Some(KeyCode::BackTick); // 29 + scancode_set.single_byte[0x2A] = Some(KeyCode::ShiftLeft); // 2A + scancode_set.single_byte[0x2B] = Some(KeyCode::BackSlash); // 2B + scancode_set.single_byte[0x2C] = Some(KeyCode::Z); // 2C + scancode_set.single_byte[0x2D] = Some(KeyCode::X); // 2D + scancode_set.single_byte[0x2E] = Some(KeyCode::C); // 2E + scancode_set.single_byte[0x2F] = Some(KeyCode::V); // 2F + scancode_set.single_byte[0x30] = Some(KeyCode::B); // 30 + scancode_set.single_byte[0x31] = Some(KeyCode::N); // 31 + scancode_set.single_byte[0x32] = Some(KeyCode::M); // 32 + scancode_set.single_byte[0x33] = Some(KeyCode::Comma); // 33 + scancode_set.single_byte[0x34] = Some(KeyCode::Fullstop); // 34 + scancode_set.single_byte[0x35] = Some(KeyCode::Slash); // 35 + scancode_set.single_byte[0x36] = Some(KeyCode::ShiftRight); // 36 + scancode_set.single_byte[0x37] = Some(KeyCode::NumpadStar); // 37 + scancode_set.single_byte[0x38] = Some(KeyCode::AltLeft); // 38 + scancode_set.single_byte[0x39] = Some(KeyCode::Spacebar); // 39 + scancode_set.single_byte[0x3A] = Some(KeyCode::CapsLock); // 3A + scancode_set.single_byte[0x3B] = Some(KeyCode::F1); // 3B + scancode_set.single_byte[0x3C] = Some(KeyCode::F2); // 3C + scancode_set.single_byte[0x3D] = Some(KeyCode::F3); // 3D + scancode_set.single_byte[0x3E] = Some(KeyCode::F4); // 3E + scancode_set.single_byte[0x3F] = Some(KeyCode::F5); // 3F + scancode_set.single_byte[0x40] = Some(KeyCode::F6); // 40 + scancode_set.single_byte[0x41] = Some(KeyCode::F7); // 41 + scancode_set.single_byte[0x42] = Some(KeyCode::F8); // 42 + scancode_set.single_byte[0x43] = Some(KeyCode::F9); // 43 + scancode_set.single_byte[0x44] = Some(KeyCode::F10); // 44 + scancode_set.single_byte[0x45] = Some(KeyCode::NumpadLock); // 45 + scancode_set.single_byte[0x46] = Some(KeyCode::ScrollLock); // 46 + scancode_set.single_byte[0x47] = Some(KeyCode::Numpad7); // 47 + scancode_set.single_byte[0x48] = Some(KeyCode::Numpad8); // 48 + scancode_set.single_byte[0x49] = Some(KeyCode::Numpad9); // 49 + scancode_set.single_byte[0x4A] = Some(KeyCode::NumpadMinus); // 4A + scancode_set.single_byte[0x4B] = Some(KeyCode::Numpad4); // 4B + scancode_set.single_byte[0x4C] = Some(KeyCode::Numpad5); // 4C + scancode_set.single_byte[0x4D] = Some(KeyCode::Numpad6); // 4D + scancode_set.single_byte[0x4E] = Some(KeyCode::NumpadPlus); // 4E + scancode_set.single_byte[0x4F] = Some(KeyCode::Numpad1); // 4F + scancode_set.single_byte[0x50] = Some(KeyCode::Numpad2); // 50 + scancode_set.single_byte[0x51] = Some(KeyCode::Numpad3); // 51 + scancode_set.single_byte[0x52] = Some(KeyCode::Numpad0); // 52 + scancode_set.single_byte[0x53] = Some(KeyCode::NumpadPeriod); // 53 + // 0x54 + // 0x55 + // 0x56 + scancode_set.single_byte[0x57] = Some(KeyCode::F11); // 57 + scancode_set.single_byte[0x58] = Some(KeyCode::F12); // 58 + for i in 0x81..=0xD8 { + scancode_set.single_byte[i] = scancode_set.single_byte[i - 0x80]; + } + scancode_set.extended[0x10] = Some(KeyCode::PrevTrack); // E010 + //0x11 + //0x12 + //0x13 + //0x14 + //0x15 + //0x16 + //0x17 + //0x18 + scancode_set.extended[0x19] = Some(KeyCode::NextTrack); // E019 + //0x1A + //0x1B + scancode_set.extended[0x1C] = Some(KeyCode::NumpadEnter); // E01C + scancode_set.extended[0x1D] = Some(KeyCode::ControlRight); // E01D + //0x1E + //0x1F + scancode_set.extended[0x20] = Some(KeyCode::Mute); // E020 + scancode_set.extended[0x21] = Some(KeyCode::Calculator); // E021 + scancode_set.extended[0x22] = Some(KeyCode::Play); // E022 + //0x23 + scancode_set.extended[0x24] = Some(KeyCode::Stop); // E024 + //0x25 + //0x26 + //0x27 + //0x28 + //0x29 + //0x2A + //0x2B + //0x2C + //0x2D + scancode_set.extended[0x2E] = Some(KeyCode::VolumeDown); // E02E + //0x2F + scancode_set.extended[0x30] = Some(KeyCode::VolumeUp); // E030 + //0x31 + scancode_set.extended[0x32] = Some(KeyCode::WWWHome); // E032 + //0x33 + //0x34 + scancode_set.extended[0x35] = Some(KeyCode::NumpadSlash); // E035 + //0x36 + //0x37 + scancode_set.extended[0x38] = Some(KeyCode::AltRight); // E038 + //0x39 + //0x3A + //0x3B + //0x3C + //0x3D + //0x3E + //0x3F + //0x40 + //0x41 + //0x42 + //0x43 + //0x44 + //0x45 + //0x46 + scancode_set.extended[0x47] = Some(KeyCode::Home); // E047 + scancode_set.extended[0x48] = Some(KeyCode::ArrowUp); // E048 + scancode_set.extended[0x49] = Some(KeyCode::PageUp); // E049 + //0x4A + scancode_set.extended[0x4B] = Some(KeyCode::ArrowLeft); // E04B + //0x4C + scancode_set.extended[0x4D] = Some(KeyCode::ArrowRight); // E04D + //0x4E + scancode_set.extended[0x4F] = Some(KeyCode::End); // E04F + scancode_set.extended[0x50] = Some(KeyCode::ArrowDown); // E050 + scancode_set.extended[0x51] = Some(KeyCode::PageDown); // E051 + scancode_set.extended[0x52] = Some(KeyCode::Insert); // E052 + scancode_set.extended[0x53] = Some(KeyCode::Delete); // E053 + for i in 0x90..=0xED { + scancode_set.extended[i] = scancode_set.extended[i - 0x80]; + } + scancode_set + } + pub fn scancode_set2() -> Self { + Self { + single_byte: [None; 256], + extended: [None; 256], + } + } } impl ScancodeSet for CustomScancodeSet { - fn advance_state(&self, state: &mut DecodeState, code: u8) -> Result, Error> { - match *state { - DecodeState::Start => { - match code { - EXTENDED_KEY_CODE => { - *state = DecodeState::Extended; - Ok(None) - } - 0x80..=0xFF => { - // Release codes - Ok(Some(KeyEvent::new( - self.map_scancode(code - 0x80)?, - KeyState::Up, - ))) - } - _ => { - // Normal codes - Ok(Some(KeyEvent::new( - self.map_scancode(code)?, - KeyState::Down, - ))) - } + fn advance_state(&self, state: &mut DecodeState, code: u8) -> Result, Error> { + match *state { + DecodeState::Start => { + match code { + EXTENDED_KEY_CODE => { + *state = DecodeState::Extended; + Ok(None) + } + 0x80..=0xFF => { + // Release codes + Ok(Some(KeyEvent::new( + self.map_scancode(code - 0x80)?, + KeyState::Up, + ))) + } + _ => { + // Normal codes + Ok(Some(KeyEvent::new( + self.map_scancode(code)?, + KeyState::Down, + ))) + } + } } - } - DecodeState::Extended => { - *state = DecodeState::Start; - match code { - 0x80..=0xFF => { - // Extended Release codes - Ok(Some(KeyEvent::new( - self.map_extended_scancode(code - 0x80)?, - KeyState::Up, - ))) - } - _ => { - // Normal release codes - Ok(Some(KeyEvent::new( - self.map_extended_scancode(code)?, - KeyState::Down, - ))) - } + DecodeState::Extended => { + *state = DecodeState::Start; + match code { + 0x80..=0xFF => { + // Extended Release codes + Ok(Some(KeyEvent::new( + self.map_extended_scancode(code - 0x80)?, + KeyState::Up, + ))) + } + _ => { + // Normal release codes + Ok(Some(KeyEvent::new( + self.map_extended_scancode(code)?, + KeyState::Down, + ))) + } + } } - } - _ => { - // Can't get in to this state - unimplemented!(); - } - } - } - fn map_scancode(&self, code: u8) -> Result { - if let Some(kc) = self.single_byte[code as usize] { - Ok(kc) - } else { - Err(Error::UnknownKeyCode) - } - } - fn map_extended_scancode(&self, code: u8) -> Result { - if let Some(kc) = self.extended[code as usize] { - Ok(kc) - } else { - Err(Error::UnknownKeyCode) - } - } -} \ No newline at end of file + _ => { + // Can't get in to this state + unimplemented!(); + } + } + } + fn map_scancode(&self, code: u8) -> Result { + if let Some(kc) = self.single_byte[code as usize] { + Ok(kc) + } else { + Err(Error::UnknownKeyCode) + } + } + fn map_extended_scancode(&self, code: u8) -> Result { + if let Some(kc) = self.extended[code as usize] { + Ok(kc) + } else { + Err(Error::UnknownKeyCode) + } + } +} diff --git a/ableos/src/keyboard/abstractions/layout_entry.rs b/ableos/src/keyboard/abstractions/layout_entry.rs index 54351fb..a24af3a 100644 --- a/ableos/src/keyboard/abstractions/layout_entry.rs +++ b/ableos/src/keyboard/abstractions/layout_entry.rs @@ -2,104 +2,102 @@ use super::DecodedKey; #[derive(Debug, Clone, Copy)] pub enum LayoutEntryKind { - Regular, - Numlockable, - Capslockable, + Regular, + Numlockable, + Capslockable, } impl Default for LayoutEntryKind { - fn default() -> Self { - Self::Regular - } + fn default() -> Self { + Self::Regular + } } #[derive(Debug, Clone, Copy, Default)] pub struct LayoutEntry { - pub kind: LayoutEntryKind, - pub unshifted: Option, - pub shifted: Option, - pub locked: Option, - pub locked_shifted: Option, - pub altgr: Option, - pub raw_unicode: Option, + pub kind: LayoutEntryKind, + pub unshifted: Option, + pub shifted: Option, + pub locked: Option, + pub locked_shifted: Option, + pub altgr: Option, + pub raw_unicode: Option, } impl LayoutEntry { - #[must_use] - pub fn regular() -> Self { - Self { - kind: LayoutEntryKind::Regular, - ..Default::default() - } - } - #[must_use] - pub fn numpad() -> Self { - Self { - kind: LayoutEntryKind::Numlockable, - ..Default::default() - } - } - #[must_use] - pub fn alphabet() -> Self { - Self { - kind: LayoutEntryKind::Capslockable, - ..Default::default() - } - } - #[must_use] - pub fn unshifted(mut self, c: impl Into) -> Self { - self.unshifted = Some(c.into()); - self - } - #[must_use] - pub fn shifted(mut self, c: impl Into) -> Self { - self.shifted = Some(c.into()); - self - } - #[must_use] - pub fn altgr(mut self, c: impl Into) -> Self { - self.altgr = Some(c.into()); - self - } - #[must_use] - pub fn raw_unicode(mut self, c: impl Into) -> Self { - self.raw_unicode = Some(c.into()); - self - } - #[must_use] - pub fn locked(mut self, c: impl Into) -> Self { - self.locked = Some(c.into()); - self - } - #[must_use] - pub fn locked_shifted(mut self, c: impl Into) -> Self { - self.locked_shifted = Some(c.into()); - self - } - #[must_use] - pub fn common(self, c: impl Into + Clone) -> Self { - self - .unshifted(c.clone()) - .shifted(c.clone()) - .locked(c.clone()) - .locked_shifted(c) - } - #[must_use] - pub fn low(self, c: impl Into + Clone) -> Self { - self.unshifted(c.clone()).locked_shifted(c) - } - #[must_use] - pub fn high(self, c: impl Into + Clone) -> Self { - self.shifted(c.clone()).locked(c) - } - #[must_use] - pub fn all(self, c: impl Into + Clone) -> Self { - self - .unshifted(c.clone()) - .shifted(c.clone()) - .locked(c.clone()) - .locked_shifted(c.clone()) - .altgr(c.clone()) - .raw_unicode(c) - } + #[must_use] + pub fn regular() -> Self { + Self { + kind: LayoutEntryKind::Regular, + ..Default::default() + } + } + #[must_use] + pub fn numpad() -> Self { + Self { + kind: LayoutEntryKind::Numlockable, + ..Default::default() + } + } + #[must_use] + pub fn alphabet() -> Self { + Self { + kind: LayoutEntryKind::Capslockable, + ..Default::default() + } + } + #[must_use] + pub fn unshifted(mut self, c: impl Into) -> Self { + self.unshifted = Some(c.into()); + self + } + #[must_use] + pub fn shifted(mut self, c: impl Into) -> Self { + self.shifted = Some(c.into()); + self + } + #[must_use] + pub fn altgr(mut self, c: impl Into) -> Self { + self.altgr = Some(c.into()); + self + } + #[must_use] + pub fn raw_unicode(mut self, c: impl Into) -> Self { + self.raw_unicode = Some(c.into()); + self + } + #[must_use] + pub fn locked(mut self, c: impl Into) -> Self { + self.locked = Some(c.into()); + self + } + #[must_use] + pub fn locked_shifted(mut self, c: impl Into) -> Self { + self.locked_shifted = Some(c.into()); + self + } + #[must_use] + pub fn common(self, c: impl Into + Clone) -> Self { + self.unshifted(c.clone()) + .shifted(c.clone()) + .locked(c.clone()) + .locked_shifted(c) + } + #[must_use] + pub fn low(self, c: impl Into + Clone) -> Self { + self.unshifted(c.clone()).locked_shifted(c) + } + #[must_use] + pub fn high(self, c: impl Into + Clone) -> Self { + self.shifted(c.clone()).locked(c) + } + #[must_use] + pub fn all(self, c: impl Into + Clone) -> Self { + self.unshifted(c.clone()) + .shifted(c.clone()) + .locked(c.clone()) + .locked_shifted(c.clone()) + .altgr(c.clone()) + .raw_unicode(c) + } } diff --git a/ableos/src/keyboard/small_types.rs b/ableos/src/keyboard/small_types.rs index 46c3bf7..1ab5bfe 100644 --- a/ableos/src/keyboard/small_types.rs +++ b/ableos/src/keyboard/small_types.rs @@ -1,111 +1,111 @@ #![allow(non_snake_case)] #[derive(Debug)] pub struct Modifiers { - pub lshift: bool, - pub rshift: bool, - pub lctrl: bool, - pub rctrl: bool, - pub numlock: bool, - pub capslock: bool, - pub alt_gr: bool, + pub lshift: bool, + pub rshift: bool, + pub lctrl: bool, + pub rctrl: bool, + pub numlock: bool, + pub capslock: bool, + pub alt_gr: bool, } impl Modifiers { - pub fn is_shifted(&self) -> bool { - self.lshift | self.rshift - } - pub fn is_ctrl(&self) -> bool { - self.lctrl | self.rctrl - } - pub fn is_caps(&self) -> bool { - self.capslock - } + pub fn is_shifted(&self) -> bool { + self.lshift | self.rshift + } + pub fn is_ctrl(&self) -> bool { + self.lctrl | self.rctrl + } + pub fn is_caps(&self) -> bool { + self.capslock + } } #[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum KeyState { - Up, - Down, + Up, + Down, } #[derive(Debug, PartialEq, Eq, Clone)] pub struct KeyEvent { - pub code: KeyCode, - pub state: KeyState, + pub code: KeyCode, + pub state: KeyState, } impl KeyEvent { - pub fn new(code: KeyCode, state: KeyState) -> KeyEvent { - KeyEvent { code, state } - } + pub fn new(code: KeyCode, state: KeyState) -> KeyEvent { + KeyEvent { code, state } + } } #[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum HandleControl { - /// If either Ctrl key is held down, convert the letters A through Z into - /// Unicode chars U+0001 through U+001A. If the Ctrl keys are not held - /// down, letters go through normally. - MapLettersToUnicode, - /// Don't do anything special - send through the Ctrl key up/down events, - /// and leave the letters as letters. - Ignore, + /// If either Ctrl key is held down, convert the letters A through Z into + /// Unicode chars U+0001 through U+001A. If the Ctrl keys are not held + /// down, letters go through normally. + MapLettersToUnicode, + /// Don't do anything special - send through the Ctrl key up/down events, + /// and leave the letters as letters. + Ignore, } #[derive(Debug, Copy, Clone, Eq, PartialEq)] pub enum DecodeState { - Start, - Extended, - Release, - ExtendedRelease, + Start, + Extended, + Release, + ExtendedRelease, } /// Indicates different error conditions. #[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum Error { - BadStartBit, - BadStopBit, - ParityError, - UnknownKeyCode, - InvalidState, + BadStartBit, + BadStopBit, + ParityError, + UnknownKeyCode, + InvalidState, } #[derive(Debug, PartialEq, Eq, Copy, Clone)] #[repr(u8)] pub enum DecodedKeyKind { - RawKey = 0, - Unicode = 1, + RawKey = 0, + Unicode = 1, } #[derive(Debug, PartialEq, Eq, Copy, Clone)] #[repr(C)] pub struct DecodedKey { - pub kind: DecodedKeyKind, - pub value: u32, + pub kind: DecodedKeyKind, + pub value: u32, } impl From for DecodedKey { - fn from(ch: char) -> Self { - Self { - kind: DecodedKeyKind::Unicode, - value: ch as u32, - } - } + fn from(ch: char) -> Self { + Self { + kind: DecodedKeyKind::Unicode, + value: ch as u32, + } + } } impl From for DecodedKey { - fn from(kc: KeyCode) -> Self { - Self { - kind: DecodedKeyKind::RawKey, - value: kc as u32, - } - } + fn from(kc: KeyCode) -> Self { + Self { + kind: DecodedKeyKind::RawKey, + value: kc as u32, + } + } } impl DecodedKey { - pub const ZERO: Self = Self { - kind: DecodedKeyKind::Unicode, - value: 0, - }; - pub fn Unicode(ch: char) -> Self { - Self { - kind: DecodedKeyKind::Unicode, - value: ch.into(), - } - } - pub fn RawKey(byte: u8) -> Self { - Self { - kind: DecodedKeyKind::RawKey, - value: byte.into(), - } - } + pub const ZERO: Self = Self { + kind: DecodedKeyKind::Unicode, + value: 0, + }; + pub fn Unicode(ch: char) -> Self { + Self { + kind: DecodedKeyKind::Unicode, + value: ch.into(), + } + } + pub fn RawKey(byte: u8) -> Self { + Self { + kind: DecodedKeyKind::RawKey, + value: byte.into(), + } + } } macro_rules! keycode_enum { (@get_last $Variant:ident) => { diff --git a/ableos/src/relib/encoding/bin.rs b/ableos/src/relib/encoding/bin.rs index 6743bb6..3d2b2d9 100644 --- a/ableos/src/relib/encoding/bin.rs +++ b/ableos/src/relib/encoding/bin.rs @@ -1,5 +1,4 @@ -use alloc::{boxed::Box}; - +use alloc::boxed::Box; pub struct BinCodeWriter { pub stream: Box, diff --git a/ableos/src/relib/time/mod.rs b/ableos/src/relib/time/mod.rs index b87e328..b4327e1 100644 --- a/ableos/src/relib/time/mod.rs +++ b/ableos/src/relib/time/mod.rs @@ -1,20 +1,20 @@ pub struct Time { - pub year: u16, - pub month: u16, - pub day: u16, - pub hour: u16, - pub minutes: u16, - pub seconds: u16, - pub microseconds: u32, + pub year: u16, + pub month: u16, + pub day: u16, + pub hour: u16, + pub minutes: u16, + pub seconds: u16, + pub microseconds: u32, } impl fmt::Display for Time { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!( - f, - "{:?}/{:?}/{:?} {:02}:{:02}:{:02}", - self.year, self.month, self.day, self.hour, self.minutes, self.seconds - ) - } + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!( + f, + "{:?}/{:?}/{:?} {:02}:{:02}:{:02}", + self.year, self.month, self.day, self.hour, self.minutes, self.seconds + ) + } } pub mod kilotime; use core::fmt; diff --git a/ableos/src/vga_e.rs b/ableos/src/vga_e.rs index fb21b8a..3f333ba 100644 --- a/ableos/src/vga_e.rs +++ b/ableos/src/vga_e.rs @@ -3,11 +3,11 @@ use shadeable::pixel_format::Rgba64; use crate::SCREEN_BUFFER; use { - ab_glyph::{Font, FontRef, Glyph}, - vga::{ - colors::Color16, - writers::{Graphics640x480x16, GraphicsWriter}, - }, + ab_glyph::{Font, FontRef, Glyph}, + vga::{ + colors::Color16, + writers::{Graphics640x480x16, GraphicsWriter}, + }, }; lazy_static::lazy_static! { @@ -20,28 +20,27 @@ lazy_static::lazy_static! { pub static ref VGAE_BUFF_OFFSET_Y: spin::Mutex = spin::Mutex::new(0); } - /// Converts a number to ... i forgor 💀 pub fn num_to_vga16(num: u8) -> Color16 { - use Color16::*; - match num { - 0 => Black, - 1 => Blue, - 2 => Green, - 3 => Cyan, - 4 => Red, - 5 => Magenta, - 6 => Brown, - 7 => LightGrey, - 8 => DarkGrey, - 9 => LightBlue, - 10 => LightGreen, - 11 => LightCyan, - 12 => LightRed, - 13 => Pink, - 14 => Yellow, - 15 => White, - // NOTE: Leasve the in - _ => Color16::Pink, - } + use Color16::*; + match num { + 0 => Black, + 1 => Blue, + 2 => Green, + 3 => Cyan, + 4 => Red, + 5 => Magenta, + 6 => Brown, + 7 => LightGrey, + 8 => DarkGrey, + 9 => LightBlue, + 10 => LightGreen, + 11 => LightCyan, + 12 => LightRed, + 13 => Pink, + 14 => Yellow, + 15 => White, + // NOTE: Leasve the in + _ => Color16::Pink, + } } diff --git a/repbuild/src/main.rs b/repbuild/src/main.rs index 51a01e6..98af974 100644 --- a/repbuild/src/main.rs +++ b/repbuild/src/main.rs @@ -4,46 +4,46 @@ use clap::Parser; #[clap(version = clap::crate_version!(), author = clap::crate_authors!("\n"))] /// Hello Remember this is a feature enum Command { - Run { - #[clap(long, short)] - debug: bool, + Run { + #[clap(long, short)] + debug: bool, - #[clap(long, short, arg_enum)] - machine: Option, - }, + #[clap(long, short, arg_enum)] + machine: Option, + }, - Doc { - #[clap(long, short, arg_enum)] - machine: Option, - }, + Doc { + #[clap(long, short, arg_enum)] + machine: Option, + }, } #[derive(clap::ArgEnum, Debug, Clone)] enum MachineType { - X86, - RISCV, - ARM, + X86, + RISCV, + ARM, } fn main() -> anyhow::Result<()> { - let args = Command::parse(); + let args = Command::parse(); - match args { - Command::Run { debug, machine } => { - let _dir = xshell::pushd("./ableos"); + match args { + Command::Run { debug, machine } => { + let _dir = xshell::pushd("./ableos"); - let _debug_log: &[&str] = match debug { - true => &["-D", "debug.log"], - false => &[], - }; - match machine.unwrap_or(MachineType::X86) { - MachineType::X86 => { - xshell::cmd!("cargo run --release").run()?; - } - MachineType::ARM => { - xshell::cmd!("cargo build --release --target=json_targets/aarch64-ableos.json") - .run()?; - #[rustfmt::skip] + let _debug_log: &[&str] = match debug { + true => &["-D", "debug.log"], + false => &[], + }; + match machine.unwrap_or(MachineType::X86) { + MachineType::X86 => { + xshell::cmd!("cargo run --release").run()?; + } + MachineType::ARM => { + xshell::cmd!("cargo build --release --target=json_targets/aarch64-ableos.json") + .run()?; + #[rustfmt::skip] xshell::cmd!( "qemu-system-aarch64 -machine virt @@ -53,10 +53,11 @@ fn main() -> anyhow::Result<()> { -device virtio-keyboard " ).run()?; - } - MachineType::RISCV => { - xshell::cmd!("cargo build --release --target=riscv64gc-unknown-none-elf").run()?; - #[rustfmt::skip] + } + MachineType::RISCV => { + xshell::cmd!("cargo build --release --target=riscv64gc-unknown-none-elf") + .run()?; + #[rustfmt::skip] xshell::cmd!( "qemu-system-riscv64 -machine virt @@ -66,26 +67,27 @@ fn main() -> anyhow::Result<()> { -bios src/arch/riscv/firmwear/opensbi-riscv64-generic-fw_jump.bin -kernel target/riscv64gc-unknown-none-elf/release/ableos" ).run()?; + } } - } - } + } - Command::Doc { machine } => { - let _dir = xshell::pushd("./ableos"); + Command::Doc { machine } => { + let _dir = xshell::pushd("./ableos"); - match machine.unwrap_or(MachineType::X86) { - MachineType::X86 => { - xshell::cmd!("cargo doc --open").run()?; + match machine.unwrap_or(MachineType::X86) { + MachineType::X86 => { + xshell::cmd!("cargo doc --open").run()?; + } + MachineType::ARM => { + xshell::cmd!("cargo doc --open --target=json_targets/aarch64-ableos.json") + .run()?; + } + MachineType::RISCV => { + xshell::cmd!("cargo doc --open --target=riscv64gc-unknown-none-elf").run()?; + } } - MachineType::ARM => { - xshell::cmd!("cargo doc --open --target=json_targets/aarch64-ableos.json").run()?; - } - MachineType::RISCV => { - xshell::cmd!("cargo doc --open --target=riscv64gc-unknown-none-elf").run()?; - } - } - } - } + } + } - Ok(()) + Ok(()) } diff --git a/shadeable/src/pixel_format.rs b/shadeable/src/pixel_format.rs index cb6c978..c1dcb13 100644 --- a/shadeable/src/pixel_format.rs +++ b/shadeable/src/pixel_format.rs @@ -4,167 +4,164 @@ use vga::colors::Color16; pub type Rgba64 = u64; pub fn get_r(rgba: Rgba64) -> u8 { - rgba.bitand(0xff_00_00_00).shr(0o30) as u8 + rgba.bitand(0xff_00_00_00).shr(0o30) as u8 } pub fn get_g(rgba: Rgba64) -> u8 { - rgba.bitand(0xff_00_00).shr(0o20) as u8 + rgba.bitand(0xff_00_00).shr(0o20) as u8 } pub fn get_b(rgba: Rgba64) -> u8 { - rgba.bitand(0xff_00).shr(0o10) as u8 + rgba.bitand(0xff_00).shr(0o10) as u8 } pub fn get_a(rgba: Rgba64) -> u8 { - (rgba & 0xff) as u8 + (rgba & 0xff) as u8 } pub fn set_r(rgba: Rgba64, r: u8) -> Rgba64 { - rgba - .bitand(0xffffffff_00_ff_ff_ff) - .bitor((r as Rgba64).shr(0o30)) + rgba.bitand(0xffffffff_00_ff_ff_ff) + .bitor((r as Rgba64).shr(0o30)) } pub fn set_g(rgba: Rgba64, g: u8) -> Rgba64 { - rgba - .bitand(0xffffffff_ff_00_ff_ff) - .bitor((g as Rgba64).shr(0o20)) + rgba.bitand(0xffffffff_ff_00_ff_ff) + .bitor((g as Rgba64).shr(0o20)) } pub fn set_b(rgba: Rgba64, b: u8) -> Rgba64 { - rgba - .bitand(0xffffffff_ff_ff_00_ff) - .bitor((b as Rgba64).shr(0o10)) + rgba.bitand(0xffffffff_ff_ff_00_ff) + .bitor((b as Rgba64).shr(0o10)) } pub fn set_a(rgba: Rgba64, a: u8) -> Rgba64 { - rgba.bitand(0xffffffff_ff_ff_ff_00).bitor(a as Rgba64) + rgba.bitand(0xffffffff_ff_ff_ff_00).bitor(a as Rgba64) } pub fn rgba_div(a: Rgba64, b: Rgba64) -> Rgba64 { - set_r(0, get_r(a) / get_r(b)) - | set_g(0, get_g(a) / get_g(b)) - | set_g(0, get_b(a) / get_b(b)) - | set_g(0, get_a(a) / get_a(b)) + set_r(0, get_r(a) / get_r(b)) + | set_g(0, get_g(a) / get_g(b)) + | set_g(0, get_b(a) / get_b(b)) + | set_g(0, get_a(a) / get_a(b)) } pub fn new_rgba64(r: u8, g: u8, b: u8, a: u8) -> Rgba64 { - set_r(0, r) | set_g(0, g) | set_b(0, b) | set_a(0, a) + set_r(0, r) | set_g(0, g) | set_b(0, b) | set_a(0, a) } enum ChannelValue { - Dark, - Low, - Mid, - High, + Dark, + Low, + Mid, + High, } impl From for ChannelValue { - fn from(b: u8) -> Self { - use ChannelValue::*; - match b { - 0x00..=0x3f => Dark, - 0x40..=0x7f => Low, - 0x80..=0xbf => Mid, - 0xc0..=0xff => High, - } - } + fn from(b: u8) -> Self { + use ChannelValue::*; + match b { + 0x00..=0x3f => Dark, + 0x40..=0x7f => Low, + 0x80..=0xbf => Mid, + 0xc0..=0xff => High, + } + } } pub fn into_vga_16(rgba_64: Rgba64) -> Color16 { - use ChannelValue::*; - use Color16::*; - match ( - get_r(rgba_64).into(), - get_g(rgba_64).into(), - get_b(rgba_64).into(), - ) { - (Dark, Dark, Dark) => Black, - (Dark, Dark, Low) => Black, - (Dark, Dark, Mid) => Blue, - (Dark, Dark, High) => Blue, - (Dark, Low, Dark) => Black, - (Dark, Low, Low) => Black, - (Dark, Low, Mid) => Blue, - (Dark, Low, High) => Blue, - (Dark, Mid, Dark) => Green, - (Dark, Mid, Low) => Green, - (Dark, Mid, Mid) => Cyan, - (Dark, Mid, High) => Cyan, - (Dark, High, Dark) => Green, - (Dark, High, Low) => Green, - (Dark, High, Mid) => Green, - (Dark, High, High) => Cyan, - (Low, Dark, Dark) => Black, - (Low, Dark, Low) => Black, - (Low, Dark, Mid) => Blue, - (Low, Dark, High) => Blue, - (Low, Low, Dark) => Black, - (Low, Low, Low) => DarkGrey, - (Low, Low, Mid) => LightGrey, - (Low, Low, High) => Blue, - (Low, Mid, Dark) => DarkGrey, - (Low, Mid, Low) => LightGrey, - (Low, Mid, Mid) => Cyan, - (Low, Mid, High) => Cyan, - (Low, High, Dark) => Green, - (Low, High, Low) => Green, - (Low, High, Mid) => Cyan, - (Low, High, High) => Cyan, - (Mid, Dark, Dark) => Red, - (Mid, Dark, Low) => Red, - (Mid, Dark, Mid) => Magenta, - (Mid, Dark, High) => Magenta, - (Mid, Low, Dark) => Brown, - (Mid, Low, Low) => Red, - (Mid, Low, Mid) => DarkGrey, - (Mid, Low, High) => LightBlue, - (Mid, Mid, Dark) => Brown, - (Mid, Mid, Low) => Brown, - (Mid, Mid, Mid) => LightGrey, - (Mid, Mid, High) => LightBlue, - (Mid, High, Dark) => Green, - (Mid, High, Low) => Green, - (Mid, High, Mid) => LightGreen, - (Mid, High, High) => LightCyan, - (High, Dark, Dark) => Red, - (High, Dark, _) => Magenta, - (High, Low, Dark) => Red, - (High, Low, Low) => LightRed, - (High, Low, Mid) => Pink, - (High, Low, High) => Magenta, - (High, Mid, Dark) => Yellow, - (High, Mid, Low) => Yellow, - (High, Mid, Mid) => LightRed, - (High, Mid, High) => Pink, - (High, High, Dark) => Yellow, - (High, High, Low) => White, - (High, High, Mid) => White, - (High, High, High) => White, - } + use ChannelValue::*; + use Color16::*; + match ( + get_r(rgba_64).into(), + get_g(rgba_64).into(), + get_b(rgba_64).into(), + ) { + (Dark, Dark, Dark) => Black, + (Dark, Dark, Low) => Black, + (Dark, Dark, Mid) => Blue, + (Dark, Dark, High) => Blue, + (Dark, Low, Dark) => Black, + (Dark, Low, Low) => Black, + (Dark, Low, Mid) => Blue, + (Dark, Low, High) => Blue, + (Dark, Mid, Dark) => Green, + (Dark, Mid, Low) => Green, + (Dark, Mid, Mid) => Cyan, + (Dark, Mid, High) => Cyan, + (Dark, High, Dark) => Green, + (Dark, High, Low) => Green, + (Dark, High, Mid) => Green, + (Dark, High, High) => Cyan, + (Low, Dark, Dark) => Black, + (Low, Dark, Low) => Black, + (Low, Dark, Mid) => Blue, + (Low, Dark, High) => Blue, + (Low, Low, Dark) => Black, + (Low, Low, Low) => DarkGrey, + (Low, Low, Mid) => LightGrey, + (Low, Low, High) => Blue, + (Low, Mid, Dark) => DarkGrey, + (Low, Mid, Low) => LightGrey, + (Low, Mid, Mid) => Cyan, + (Low, Mid, High) => Cyan, + (Low, High, Dark) => Green, + (Low, High, Low) => Green, + (Low, High, Mid) => Cyan, + (Low, High, High) => Cyan, + (Mid, Dark, Dark) => Red, + (Mid, Dark, Low) => Red, + (Mid, Dark, Mid) => Magenta, + (Mid, Dark, High) => Magenta, + (Mid, Low, Dark) => Brown, + (Mid, Low, Low) => Red, + (Mid, Low, Mid) => DarkGrey, + (Mid, Low, High) => LightBlue, + (Mid, Mid, Dark) => Brown, + (Mid, Mid, Low) => Brown, + (Mid, Mid, Mid) => LightGrey, + (Mid, Mid, High) => LightBlue, + (Mid, High, Dark) => Green, + (Mid, High, Low) => Green, + (Mid, High, Mid) => LightGreen, + (Mid, High, High) => LightCyan, + (High, Dark, Dark) => Red, + (High, Dark, _) => Magenta, + (High, Low, Dark) => Red, + (High, Low, Low) => LightRed, + (High, Low, Mid) => Pink, + (High, Low, High) => Magenta, + (High, Mid, Dark) => Yellow, + (High, Mid, Low) => Yellow, + (High, Mid, Mid) => LightRed, + (High, Mid, High) => Pink, + (High, High, Dark) => Yellow, + (High, High, Low) => White, + (High, High, Mid) => White, + (High, High, High) => White, + } } pub fn from_vga_16(color: Color16) -> Rgba64 { - use Color16::*; - match color { - Black => new_rgba64(0, 0, 0, 0), - DarkGrey => new_rgba64(105, 105, 105, 0), - LightGrey => new_rgba64(211, 211, 211, 0), - // - Blue => new_rgba64(0, 0, 0xff, 0), - Green => new_rgba64(0, 0xff, 0, 0), - Red => new_rgba64(0xff, 0, 0, 0), - // - Yellow => new_rgba64(0xff, 0xff, 0, 0), - Cyan => new_rgba64(0, 0xff, 0xff, 0), - Magenta => new_rgba64(0xff, 0, 0xff, 0), + use Color16::*; + match color { + Black => new_rgba64(0, 0, 0, 0), + DarkGrey => new_rgba64(105, 105, 105, 0), + LightGrey => new_rgba64(211, 211, 211, 0), + // + Blue => new_rgba64(0, 0, 0xff, 0), + Green => new_rgba64(0, 0xff, 0, 0), + Red => new_rgba64(0xff, 0, 0, 0), + // + Yellow => new_rgba64(0xff, 0xff, 0, 0), + Cyan => new_rgba64(0, 0xff, 0xff, 0), + Magenta => new_rgba64(0xff, 0, 0xff, 0), - Brown => new_rgba64(165, 42, 42, 0), - Pink => new_rgba64(0xff, 105, 180, 0), - White => new_rgba64(0xff, 0xff, 0xff, 0), + Brown => new_rgba64(165, 42, 42, 0), + Pink => new_rgba64(0xff, 105, 180, 0), + White => new_rgba64(0xff, 0xff, 0xff, 0), - LightBlue => new_rgba64(173, 216, 230, 0), - LightGreen => new_rgba64(144, 238, 144, 0), - LightCyan => new_rgba64(88, 100, 100, 0), - LightRed => new_rgba64(0xff, 204, 203, 0), - } + LightBlue => new_rgba64(173, 216, 230, 0), + LightGreen => new_rgba64(144, 238, 144, 0), + LightCyan => new_rgba64(88, 100, 100, 0), + LightRed => new_rgba64(0xff, 204, 203, 0), + } } From 44c252ed84359573af0b60da8ec0b92bfea9157a Mon Sep 17 00:00:00 2001 From: Able Date: Sat, 19 Feb 2022 07:17:44 -0600 Subject: [PATCH 03/16] persistant scope --- ableos/Cargo.toml | 6 ----- ableos/src/kernel_state.rs | 2 +- ableos/src/logger.rs | 2 +- ableos/src/scratchpad.rs | 49 ++++++++++++++++++++++++++++++++++---- 4 files changed, 47 insertions(+), 12 deletions(-) diff --git a/ableos/Cargo.toml b/ableos/Cargo.toml index ecfd00f..8ed6d3c 100644 --- a/ableos/Cargo.toml +++ b/ableos/Cargo.toml @@ -12,12 +12,6 @@ run-args = [ "-cpu", "Broadwell-v3", - - - - - - "-serial", "stdio", "-smp", diff --git a/ableos/src/kernel_state.rs b/ableos/src/kernel_state.rs index 5205740..e4a99bf 100644 --- a/ableos/src/kernel_state.rs +++ b/ableos/src/kernel_state.rs @@ -7,7 +7,7 @@ lazy_static! { } pub struct KernelInternalState { - hostname: String, + pub hostname: String, should_shutdown: bool, } diff --git a/ableos/src/logger.rs b/ableos/src/logger.rs index 0fa1e4b..5d31c24 100644 --- a/ableos/src/logger.rs +++ b/ableos/src/logger.rs @@ -22,7 +22,7 @@ impl log::Log for SimpleLogger { let color; let time = TICK.load(Ordering::Relaxed) as f64; - let time_float = time / TIMER_INTERRUPT_HERTZ; + let time_float = time; match record.level() { log::Level::Error => color = (Fg::Red, "$RED$"), diff --git a/ableos/src/scratchpad.rs b/ableos/src/scratchpad.rs index 6d7f4b5..2fd3d80 100644 --- a/ableos/src/scratchpad.rs +++ b/ableos/src/scratchpad.rs @@ -94,14 +94,29 @@ impl ProcessMessage { */ pub fn rhai_shell() { - let engine = rhai::Engine::new(); + let mut engine = rhai::Engine::new(); + + engine.on_print(|x| println!("{}", x)); + + engine.on_debug(|x, src, pos| { + let src = src.unwrap_or("unknown"); + println!("DEBUG: {} at {:?}: {}", src, pos, x); + debug!("{} at {:?}: {}", src, pos, x); + }); + + engine.register_fn("afetch", afetch); + engine.register_fn("set_hostname", set_hostname); + engine.register_fn("shutdown", shutdown); + + let mut scope = rhai::Scope::new(); + let mut buf = String::new(); print!("> "); loop { match x86_64::instructions::interrupts::without_interrupts(|| KEYBUFF.lock().pop()) { Some('\n') => { - match engine.eval::(&buf) { + match engine.eval_with_scope::(&mut scope, &buf) { Ok(o) => println!("{o}"), Err(e) => println!("Eval error: {e}"), }; @@ -123,6 +138,32 @@ lazy_static::lazy_static!( ; ); -use alloc::string::String; +use alloc::string::{String, ToString}; +use x86_64::instructions::interrupts::{disable, enable}; -use crate::arch::sloop; +use crate::{ + arch::{shutdown, sloop}, + kmain::{tick, TICK}, + systeminfo::{KERNEL_VERSION, RELEASE_TYPE}, + KERNEL_STATE, +}; + +pub fn afetch() { + let kstate = KERNEL_STATE.lock(); + use core::sync::atomic::Ordering::*; + + disable(); + let tick_time = TICK.load(Relaxed); + enable(); + + println!("OS: AbleOS"); + println!("Host: {}", kstate.hostname); + println!("Kernel: AKern-{}-v{}", RELEASE_TYPE, KERNEL_VERSION); + println!("Uptime: {}", tick_time); + + drop(kstate); +} +pub fn set_hostname(name: String) { + let mut kstate = KERNEL_STATE.lock(); + kstate.hostname = name; +} From b7431ba47482ecb04fe25e72f6746b57213f505e Mon Sep 17 00:00:00 2001 From: Able Date: Sat, 19 Feb 2022 08:46:11 -0600 Subject: [PATCH 04/16] move rhai shell to its own sub folder --- ableos/src/lib.rs | 1 + ableos/src/print.rs | 6 --- ableos/src/rhai_shell/mod.rs | 76 +++++++++++++++++++++++++++++++++++ ableos/src/scratchpad.rs | 77 +----------------------------------- 4 files changed, 79 insertions(+), 81 deletions(-) create mode 100644 ableos/src/rhai_shell/mod.rs diff --git a/ableos/src/lib.rs b/ableos/src/lib.rs index 76429ea..c78ef88 100644 --- a/ableos/src/lib.rs +++ b/ableos/src/lib.rs @@ -33,6 +33,7 @@ pub mod arch; #[macro_use] pub mod print; pub mod devices; +pub mod rhai_shell; pub mod wasm_jumploader; #[macro_use] diff --git a/ableos/src/print.rs b/ableos/src/print.rs index 710f4f7..b1bb0f4 100644 --- a/ableos/src/print.rs +++ b/ableos/src/print.rs @@ -48,12 +48,6 @@ macro_rules! print { } #[macro_export] macro_rules! println { - // TODO: The panic here should not be here - () =>{ - - // ::core::writeln!($crate::print::Stdout, "\n") - panic![]; - }; ($($tt:tt)*) => { ::core::writeln!($crate::print::Stdout, $($tt)*) // panic![]; diff --git a/ableos/src/rhai_shell/mod.rs b/ableos/src/rhai_shell/mod.rs new file mode 100644 index 0000000..b14bf64 --- /dev/null +++ b/ableos/src/rhai_shell/mod.rs @@ -0,0 +1,76 @@ +use alloc::vec::Vec; + +pub fn rhai_shell() { + let mut engine = rhai::Engine::new(); + + engine.on_print(|x| println!("{}", x)); + + engine.on_debug(|x, src, pos| { + let src = src.unwrap_or("unknown"); + println!("DEBUG: {} at {:?}: {}", src, pos, x); + debug!("{} at {:?}: {}", src, pos, x); + }); + + engine.register_fn("afetch", afetch); + engine.register_fn("set_hostname", set_hostname); + engine.register_fn("shutdown", shutdown); + + let mut scope = rhai::Scope::new(); + + let mut buf = String::new(); + print!("> "); + + loop { + match x86_64::instructions::interrupts::without_interrupts(|| KEYBUFF.lock().pop()) { + Some('\n') => { + match engine.eval_with_scope::(&mut scope, &buf) { + Ok(o) => println!("{o}"), + Err(e) => println!("Eval error: {e}"), + }; + + buf.clear(); + print!("> "); + } + Some('\u{0008}') => { + buf.pop(); + } + Some(chr) => buf.push(chr), + None => (), + } + } +} +lazy_static::lazy_static!( + pub static ref KEYBUFF: spin::Mutex> = spin::Mutex::new( + Vec::new()) + ; +); + +use alloc::string::{String, ToString}; +use x86_64::instructions::interrupts::{disable, enable}; + +use crate::{ + arch::{shutdown, sloop}, + kmain::{tick, TICK}, + systeminfo::{KERNEL_VERSION, RELEASE_TYPE}, + KERNEL_STATE, +}; + +pub fn afetch() { + let kstate = KERNEL_STATE.lock(); + use core::sync::atomic::Ordering::*; + + disable(); + let tick_time = TICK.load(Relaxed); + enable(); + + println!("OS: AbleOS"); + println!("Host: {}", kstate.hostname); + println!("Kernel: AKern-{}-v{}", RELEASE_TYPE, KERNEL_VERSION); + println!("Uptime: {}", tick_time); + + drop(kstate); +} +pub fn set_hostname(name: String) { + let mut kstate = KERNEL_STATE.lock(); + kstate.hostname = name; +} diff --git a/ableos/src/scratchpad.rs b/ableos/src/scratchpad.rs index 2fd3d80..5a7bcff 100644 --- a/ableos/src/scratchpad.rs +++ b/ableos/src/scratchpad.rs @@ -1,3 +1,5 @@ +use crate::rhai_shell::rhai_shell; + use { crate::{ devices::{pci_inner::DeviceClass, Device, DEVICE_TABLE}, @@ -92,78 +94,3 @@ impl ProcessMessage { } } */ - -pub fn rhai_shell() { - let mut engine = rhai::Engine::new(); - - engine.on_print(|x| println!("{}", x)); - - engine.on_debug(|x, src, pos| { - let src = src.unwrap_or("unknown"); - println!("DEBUG: {} at {:?}: {}", src, pos, x); - debug!("{} at {:?}: {}", src, pos, x); - }); - - engine.register_fn("afetch", afetch); - engine.register_fn("set_hostname", set_hostname); - engine.register_fn("shutdown", shutdown); - - let mut scope = rhai::Scope::new(); - - let mut buf = String::new(); - print!("> "); - - loop { - match x86_64::instructions::interrupts::without_interrupts(|| KEYBUFF.lock().pop()) { - Some('\n') => { - match engine.eval_with_scope::(&mut scope, &buf) { - Ok(o) => println!("{o}"), - Err(e) => println!("Eval error: {e}"), - }; - - buf.clear(); - print!("> "); - } - Some('\u{0008}') => { - buf.pop(); - } - Some(chr) => buf.push(chr), - None => (), - } - } -} -lazy_static::lazy_static!( - pub static ref KEYBUFF: spin::Mutex> = spin::Mutex::new( - Vec::new()) - ; -); - -use alloc::string::{String, ToString}; -use x86_64::instructions::interrupts::{disable, enable}; - -use crate::{ - arch::{shutdown, sloop}, - kmain::{tick, TICK}, - systeminfo::{KERNEL_VERSION, RELEASE_TYPE}, - KERNEL_STATE, -}; - -pub fn afetch() { - let kstate = KERNEL_STATE.lock(); - use core::sync::atomic::Ordering::*; - - disable(); - let tick_time = TICK.load(Relaxed); - enable(); - - println!("OS: AbleOS"); - println!("Host: {}", kstate.hostname); - println!("Kernel: AKern-{}-v{}", RELEASE_TYPE, KERNEL_VERSION); - println!("Uptime: {}", tick_time); - - drop(kstate); -} -pub fn set_hostname(name: String) { - let mut kstate = KERNEL_STATE.lock(); - kstate.hostname = name; -} From c49eb97397c4d77eae4466378b85af7c721916e4 Mon Sep 17 00:00:00 2001 From: Able Date: Sat, 19 Feb 2022 09:07:33 -0600 Subject: [PATCH 05/16] patchup --- ableos/assets/key_event.txt | 17 ++++++++++++++ ableos/src/arch/x86_64/interrupts.rs | 3 ++- ableos/src/rhai_shell/mod.rs | 33 ++++++++++++++++------------ 3 files changed, 38 insertions(+), 15 deletions(-) create mode 100644 ableos/assets/key_event.txt diff --git a/ableos/assets/key_event.txt b/ableos/assets/key_event.txt new file mode 100644 index 0000000..0617522 --- /dev/null +++ b/ableos/assets/key_event.txt @@ -0,0 +1,17 @@ +pub struct KeyEvent{ + lctrl 1 + rctrl 2 + lalt 3 + ralt 4 + lsup 5 + rsup 6 + lshift 7 + rshift 8 + caps 9 + + down 10 + # Keycodes + key 11-32 +} + + diff --git a/ableos/src/arch/x86_64/interrupts.rs b/ableos/src/arch/x86_64/interrupts.rs index 1dca10a..1649093 100644 --- a/ableos/src/arch/x86_64/interrupts.rs +++ b/ableos/src/arch/x86_64/interrupts.rs @@ -1,7 +1,8 @@ use crate::{ arch::{drivers::vga::WRITER, gdt}, kernel_state::KERNEL_STATE, - print, println, KEYBUFF, + print, println, + rhai_shell::KEYBUFF, }; use lazy_static::lazy_static; diff --git a/ableos/src/rhai_shell/mod.rs b/ableos/src/rhai_shell/mod.rs index b14bf64..1fde8dc 100644 --- a/ableos/src/rhai_shell/mod.rs +++ b/ableos/src/rhai_shell/mod.rs @@ -1,20 +1,7 @@ use alloc::vec::Vec; pub fn rhai_shell() { - let mut engine = rhai::Engine::new(); - - engine.on_print(|x| println!("{}", x)); - - engine.on_debug(|x, src, pos| { - let src = src.unwrap_or("unknown"); - println!("DEBUG: {} at {:?}: {}", src, pos, x); - debug!("{} at {:?}: {}", src, pos, x); - }); - - engine.register_fn("afetch", afetch); - engine.register_fn("set_hostname", set_hostname); - engine.register_fn("shutdown", shutdown); - + let engine = engine_construction(); let mut scope = rhai::Scope::new(); let mut buf = String::new(); @@ -46,6 +33,7 @@ lazy_static::lazy_static!( ); use alloc::string::{String, ToString}; +use rhai::Engine; use x86_64::instructions::interrupts::{disable, enable}; use crate::{ @@ -74,3 +62,20 @@ pub fn set_hostname(name: String) { let mut kstate = KERNEL_STATE.lock(); kstate.hostname = name; } + +fn engine_construction() -> Engine { + let mut engine = rhai::Engine::new(); + + engine.on_print(|x| println!("{}", x)); + + engine.on_debug(|x, src, pos| { + let src = src.unwrap_or("unknown"); + println!("DEBUG: {} at {:?}: {}", src, pos, x); + debug!("{} at {:?}: {}", src, pos, x); + }); + + engine.register_fn("afetch", afetch); + engine.register_fn("set_hostname", set_hostname); + engine.register_fn("shutdown", shutdown); + engine +} From 7fc1606a181bf0aa07b2a8c19aed7cc24bd3988b Mon Sep 17 00:00:00 2001 From: Able Date: Sun, 20 Feb 2022 08:34:20 -0600 Subject: [PATCH 06/16] fruitless efforts in persuit of #12 --- ableos/Cargo.lock | 49 +++++++++++++++++++++++++++++++++++++++++++++++ ableos/Cargo.toml | 9 ++++----- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/ableos/Cargo.lock b/ableos/Cargo.lock index f1bfc64..35cf6a0 100644 --- a/ableos/Cargo.lock +++ b/ableos/Cargo.lock @@ -40,6 +40,7 @@ dependencies = [ "linked_list_allocator", "lliw", "log", + "logos", "pc-beeper", "pci", "pic8259", @@ -91,6 +92,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "beef" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bed554bd50246729a1ec158d08aa3235d1b69d94ad120ebe187e28894787e736" + [[package]] name = "bit_field" version = "0.10.1" @@ -210,6 +217,12 @@ dependencies = [ "log", ] +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "font8x8" version = "0.3.1" @@ -316,6 +329,30 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "logos" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427e2abca5be13136da9afdbf874e6b34ad9001dd70f2b103b083a85daa7b345" +dependencies = [ + "logos-derive", +] + +[[package]] +name = "logos-derive" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56a7d287fd2ac3f75b11f19a1c8a874a7d55744bd91f7a1b3e7cf87d4343c36d" +dependencies = [ + "beef", + "fnv", + "proc-macro2", + "quote", + "regex-syntax", + "syn", + "utf8-ranges", +] + [[package]] name = "managed" version = "0.8.0" @@ -482,6 +519,12 @@ dependencies = [ "rand_core", ] +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + [[package]] name = "rhai" version = "1.5.0" @@ -712,6 +755,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +[[package]] +name = "utf8-ranges" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba" + [[package]] name = "version_check" version = "0.9.4" diff --git a/ableos/Cargo.toml b/ableos/Cargo.toml index 8ed6d3c..9802670 100644 --- a/ableos/Cargo.toml +++ b/ableos/Cargo.toml @@ -69,11 +69,10 @@ pci = {git="https://gitlab.com/robigalia/pci"} libwasm = {git="https://git.ablecorp.us:443/able/libwasm.git"} acpi = "4.1.0" - -# [dependencies.ockam] -# version = "0.46.0" -# no-default-features = false -# features = ["alloc"] +[dependencies.logos] +version = "0.12.0" +default-features = false +features = ["export_derive"] [dependencies.rdrand] From f6143d38952e8e65b907e846f0a891909d5ac5b1 Mon Sep 17 00:00:00 2001 From: Able Date: Mon, 21 Feb 2022 07:17:16 -0600 Subject: [PATCH 07/16] string colorizer --- ableos/src/experiments/absi.rs | 44 ++++++++++++++++++++++++++++++++++ ableos/src/print.rs | 6 ++--- ableos/src/scratchpad.rs | 4 ++-- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/ableos/src/experiments/absi.rs b/ableos/src/experiments/absi.rs index b709b0d..d4aecfb 100644 --- a/ableos/src/experiments/absi.rs +++ b/ableos/src/experiments/absi.rs @@ -65,3 +65,47 @@ pub fn colorify(eval: &str) { } } } +use alloc::string::String; +use logos::Logos; + +#[derive(Logos, Debug, PartialEq)] +pub enum Token { + // Hex(u32), + #[regex(r"\$RED\$")] + Red, + + #[regex(r"\$RESET\$")] + Reset, + + #[regex("[a-zA-Z!@#$%^&*\">()\n ]+", parse_text, priority = 2)] + Text(String), + + #[error] + #[regex(r"[ \t\n\f]+", logos::skip)] + Error, +} +pub fn colorify_2(eval: &str) { + let mut lexer = Token::lexer(eval); + for token in lexer { + use Token::*; + match token { + Red => { + set_vga_color(Color::Red, Color::Black); + } + Reset => { + set_vga_color(Color::White, Color::Black); + } + Text(text) => { + kprint!("{}", text); + } + err => { + error!("Error parsing"); + } + } + } +} +use logos::Lexer; +fn parse_text(lex: &mut Lexer) -> Option { + let slice = lex.slice(); + Some(String::from(slice)) +} diff --git a/ableos/src/print.rs b/ableos/src/print.rs index b1bb0f4..65b0552 100644 --- a/ableos/src/print.rs +++ b/ableos/src/print.rs @@ -19,9 +19,9 @@ impl core::fmt::Write for Stdout { } #[cfg(target_arch = "x86_64")] fn write_str(&mut self, s: &str) -> Result<(), Error> { - use crate::experiments::absi::colorify; - colorify(s); - // kprint!("{}", s); + use crate::{experiments::absi::colorify_2, kprint}; + // colorify_2(s); + kprint!("{}", s); Ok(()) } #[cfg(target_arch = "riscv64")] diff --git a/ableos/src/scratchpad.rs b/ableos/src/scratchpad.rs index 5a7bcff..e4645a9 100644 --- a/ableos/src/scratchpad.rs +++ b/ableos/src/scratchpad.rs @@ -1,4 +1,4 @@ -use crate::rhai_shell::rhai_shell; +use crate::{absi::colorify, rhai_shell::rhai_shell}; use { crate::{ @@ -37,7 +37,7 @@ pub fn scratchpad() { } */ // interp(); - + // crate::experiments::absi::colorify(); rhai_shell(); } From 64d6e1e1668b5d6f2e3264600d9206d47e954896 Mon Sep 17 00:00:00 2001 From: Able Date: Tue, 22 Feb 2022 18:15:16 -0600 Subject: [PATCH 08/16] PIT Timer settable --- ableos/Cargo.lock | 2 +- ableos/Cargo.toml | 2 +- ableos/src/arch/x86_64/interrupts.rs | 38 ++++++---- ableos/src/kmain.rs | 2 +- ableos/src/lib.rs | 2 + ableos/src/messaging/NOTES.md | 0 ableos/src/messaging/mod.rs | 100 +++++++++++++++++++++++++++ ableos/src/rhai_shell/mod.rs | 2 +- ableos/src/scratchpad.rs | 39 ++++------- ableos/src/utils.rs | 2 +- 10 files changed, 144 insertions(+), 45 deletions(-) create mode 100644 ableos/src/messaging/NOTES.md create mode 100644 ableos/src/messaging/mod.rs diff --git a/ableos/Cargo.lock b/ableos/Cargo.lock index 35cf6a0..9938dab 100644 --- a/ableos/Cargo.lock +++ b/ableos/Cargo.lock @@ -24,7 +24,7 @@ dependencies = [ [[package]] name = "ableos" -version = "0.1.0" +version = "0.1.1" dependencies = [ "ab_glyph", "acpi", diff --git a/ableos/Cargo.toml b/ableos/Cargo.toml index 9802670..5f2383f 100644 --- a/ableos/Cargo.toml +++ b/ableos/Cargo.toml @@ -1,7 +1,7 @@ [package] edition = "2021" name = "ableos" -version = "0.1.0" +version = "0.1.1" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [profile.release] diff --git a/ableos/src/arch/x86_64/interrupts.rs b/ableos/src/arch/x86_64/interrupts.rs index 1649093..2f6fd55 100644 --- a/ableos/src/arch/x86_64/interrupts.rs +++ b/ableos/src/arch/x86_64/interrupts.rs @@ -5,6 +5,7 @@ use crate::{ rhai_shell::KEYBUFF, }; +use cpuio::outb; use lazy_static::lazy_static; use pic8259::ChainedPics; use spin; @@ -20,6 +21,8 @@ pub static PICS: spin::Mutex = pub enum InterruptIndex { Timer = PIC_1_OFFSET, Keyboard, + // SecondInterrupt = PIC_2_OFFSET, + Cmos = 0x70, } impl InterruptIndex { fn as_u8(self) -> u8 { @@ -38,10 +41,18 @@ lazy_static! { idt.breakpoint.set_handler_fn(breakpoint_handler); unsafe { idt.double_fault.set_handler_fn(double_fault_handler) - .set_stack_index(gdt::DOUBLE_FAULT_IST_INDEX); // new + .set_stack_index(gdt::DOUBLE_FAULT_IST_INDEX); } + + // This gives fast interrupts + set_pit_frequency(1000); + idt[InterruptIndex::Timer.as_usize()].set_handler_fn(timer_interrupt_handler); idt[InterruptIndex::Keyboard.as_usize()] .set_handler_fn(keyboard_interrupt_handler); + + idt[6].set_handler_fn(floppy_disk_interrupt_handler); + + idt }; } @@ -128,16 +139,17 @@ extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: InterruptStac } } -/* -extern "x86-interrupt" fn page_fault_handler( - stack_frame: InterruptStackFrame, - error_code: PageFaultErrorCode, -) { - use x86_64::registers::control::Cr2; - println!["Exception: Page Fault"]; - println!["Address: {:?}", Cr2::read()]; - println!["Error Code: {:?}", error_code]; - println!["{:#?}", stack_frame]; - sloop(); +extern "x86-interrupt" fn floppy_disk_interrupt_handler(_stack_frame: InterruptStackFrame) { + println!("EXCEPTION: FLOPPY DISK"); +} + +fn set_pit_frequency(freq: u32) { + let divisor: u16 = (1193180 / freq).try_into().unwrap(); + + unsafe { + outb(0x36, 0x43); + + outb((divisor & 0xFF) as u8, 0x40); + outb((divisor >> 8) as u8, 0x40); + } } -*/ diff --git a/ableos/src/kmain.rs b/ableos/src/kmain.rs index 64caa08..5e6ab8c 100644 --- a/ableos/src/kmain.rs +++ b/ableos/src/kmain.rs @@ -110,7 +110,7 @@ pub fn kernel_main() -> ! { /// called by arch specific timers to tick up all kernel related functions pub fn tick() { let mut data = TICK.load(Relaxed); - data += 1; + data = data.wrapping_add(1); crate::kernel_state::KERNEL_STATE.lock().update_state(); // let mut scheduler = SCHEDULER.lock(); diff --git a/ableos/src/lib.rs b/ableos/src/lib.rs index c78ef88..c54c348 100644 --- a/ableos/src/lib.rs +++ b/ableos/src/lib.rs @@ -97,3 +97,5 @@ pub use syscalls::*; pub mod scratchpad; pub use scratchpad::*; pub mod filesystem; + +pub mod messaging; diff --git a/ableos/src/messaging/NOTES.md b/ableos/src/messaging/NOTES.md new file mode 100644 index 0000000..e69de29 diff --git a/ableos/src/messaging/mod.rs b/ableos/src/messaging/mod.rs new file mode 100644 index 0000000..ac47f22 --- /dev/null +++ b/ableos/src/messaging/mod.rs @@ -0,0 +1,100 @@ +use { + crate::{kmain::TICK, proc::PID}, + alloc::string::String, + core::{ + fmt::{Display, Formatter, Result as FmtResult}, + result::Result, + sync::atomic::Ordering::Relaxed, + }, + libwasm::syscalls::time_calls::SecondsTime, + x86_64::instructions::interrupts::{disable, enable}, +}; +#[derive(Debug)] +pub enum MessagingError { + MessageTooLarge, +} + +impl Display for MessagingError { + fn fmt(&self, f: &mut Formatter) -> FmtResult { + match self { + MessagingError::MessageTooLarge => write!(f, "Message too large"), + } + } +} + +/// Not properly implemented +pub fn fetch_time() -> SecondsTime { + disable(); + let time = TICK.load(Relaxed); + enable(); + + SecondsTime { + seconds: time, + milliseconds: 0, + } +} + +pub type MessageSmall = [u8; 2048]; +pub type MessageLarge = [u8; 16384]; + +pub enum Message { + Small(MessageSmall), + Large(MessageLarge), +} + +pub struct ProcessMessage { + pub to_pid: PID, + pub from_pid: PID, + pub message: Message, + pub sender_time: SecondsTime, +} + +impl ProcessMessage { + pub fn new(to_pid: PID, from_pid: PID, message: Message) -> Self { + Self { + to_pid, + from_pid, + message, + sender_time: fetch_time(), + } + } + + pub fn new_from_string( + to_pid: PID, + from_pid: PID, + string: String, + ) -> Result { + let mut mssg = Message::Small([0u8; 2048]); + match string.len() { + 0..=2047 => { + let mut message = [0u8; 2048]; + for (i, c) in string.chars().enumerate() { + message[i] = c as u8; + } + mssg = Message::Small(message); + } + + 2048..=16383 => { + let mut message = [0u8; 16384]; + for (i, c) in string.chars().enumerate() { + message[i] = c as u8; + } + mssg = Message::Large(message); + } + _ => return Err(MessagingError::MessageTooLarge), + } + + Ok(Self { + to_pid, + from_pid, + message: mssg, + sender_time: fetch_time(), + }) + } +} + +pub fn send_sync_message(message: ProcessMessage) {} +pub fn send_async_message(message: ProcessMessage) {} + +pub fn recv_sync_message() {} +pub fn recv_async_message() {} diff --git a/ableos/src/rhai_shell/mod.rs b/ableos/src/rhai_shell/mod.rs index 1fde8dc..b20fb02 100644 --- a/ableos/src/rhai_shell/mod.rs +++ b/ableos/src/rhai_shell/mod.rs @@ -49,13 +49,13 @@ pub fn afetch() { disable(); let tick_time = TICK.load(Relaxed); - enable(); println!("OS: AbleOS"); println!("Host: {}", kstate.hostname); println!("Kernel: AKern-{}-v{}", RELEASE_TYPE, KERNEL_VERSION); println!("Uptime: {}", tick_time); + enable(); drop(kstate); } pub fn set_hostname(name: String) { diff --git a/ableos/src/scratchpad.rs b/ableos/src/scratchpad.rs index e4645a9..85939ac 100644 --- a/ableos/src/scratchpad.rs +++ b/ableos/src/scratchpad.rs @@ -1,4 +1,9 @@ -use crate::{absi::colorify, rhai_shell::rhai_shell}; +use core::arch::asm; + +use alloc::string::{String, ToString}; +use cpuio::outb; + +use crate::{absi::colorify, messaging::ProcessMessage, rhai_shell::rhai_shell}; use { crate::{ @@ -38,6 +43,12 @@ pub fn scratchpad() { */ // interp(); // crate::experiments::absi::colorify(); + + let message = "Hello, world!"; + + let xyz = ProcessMessage::new_from_string(PID(123), PID(0), message.to_string()); + + // print!("{:?}", xyz); rhai_shell(); } @@ -68,29 +79,3 @@ impl PortOps for PciIO { cpuio::outl(val, port as u16); } } -/* -/// An experimental process message format -pub struct ProcessMessage { - pub to_pid: PID, - pub from_pid: PID, - pub message: [u8; 2048], - - pub sender_time: SecondsTime, -} -// -// use libwasm::syscalls::time_calls::SecondsTime; - -impl ProcessMessage { - pub fn new(to_pid: PID, from_pid: PID, message: [u8; 2048]) -> Self { - ProcessMessage { - to_pid, - from_pid, - message, - sender_time: SecondsTime { - seconds: 0, - milliseconds: 0, - }, - } - } -} -*/ diff --git a/ableos/src/utils.rs b/ableos/src/utils.rs index 5ec7612..d8de1fa 100644 --- a/ableos/src/utils.rs +++ b/ableos/src/utils.rs @@ -2,7 +2,7 @@ //! //! //! - +#[inline] pub fn type_of(_: &T) -> &str { core::any::type_name::() } From ab3110923ea77835493cc65c23b168ee4addf1df Mon Sep 17 00:00:00 2001 From: Able Date: Wed, 23 Feb 2022 10:06:27 -0600 Subject: [PATCH 09/16] metadata and peek/poke --- ableos/src/rhai_shell/mod.rs | 25 ++++++-- userland/wasm_pk_data/Cargo.lock | 75 ++++++++++++++++++++++ userland/wasm_pk_data/Cargo.toml | 17 +++++ userland/wasm_pk_data/assets/metadata.toml | 3 + userland/wasm_pk_data/src/lib.rs | 20 ++++++ 5 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 userland/wasm_pk_data/Cargo.lock create mode 100644 userland/wasm_pk_data/Cargo.toml create mode 100644 userland/wasm_pk_data/assets/metadata.toml create mode 100644 userland/wasm_pk_data/src/lib.rs diff --git a/ableos/src/rhai_shell/mod.rs b/ableos/src/rhai_shell/mod.rs index b20fb02..8b88867 100644 --- a/ableos/src/rhai_shell/mod.rs +++ b/ableos/src/rhai_shell/mod.rs @@ -50,11 +50,13 @@ pub fn afetch() { disable(); let tick_time = TICK.load(Relaxed); - println!("OS: AbleOS"); - println!("Host: {}", kstate.hostname); - println!("Kernel: AKern-{}-v{}", RELEASE_TYPE, KERNEL_VERSION); - println!("Uptime: {}", tick_time); - + println!( + "OS: AbleOS +Host: {} +Kernel: AKern-{}-v{} +Uptime: {}", + kstate.hostname, RELEASE_TYPE, KERNEL_VERSION, tick_time + ); enable(); drop(kstate); } @@ -77,5 +79,18 @@ fn engine_construction() -> Engine { engine.register_fn("afetch", afetch); engine.register_fn("set_hostname", set_hostname); engine.register_fn("shutdown", shutdown); + engine.register_fn("peek", peek_memory); + engine.register_fn("poke", poke_memory); engine } + +/// Examine a memory pointer +pub fn peek_memory(ptr: i64) -> u8 { + let ptr: usize = ptr as usize; + unsafe { *(ptr as *const u8) } +} + +pub fn poke_memory(ptr: i64, val: u8) { + let ptr: usize = ptr as usize; + unsafe { *(ptr as *mut u8) = val } +} diff --git a/userland/wasm_pk_data/Cargo.lock b/userland/wasm_pk_data/Cargo.lock new file mode 100644 index 0000000..b44ca70 --- /dev/null +++ b/userland/wasm_pk_data/Cargo.lock @@ -0,0 +1,75 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "proc-macro2" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "serde" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "syn" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "wasm_pk_data" +version = "0.1.0" +dependencies = [ + "serde", + "toml", +] diff --git a/userland/wasm_pk_data/Cargo.toml b/userland/wasm_pk_data/Cargo.toml new file mode 100644 index 0000000..be39553 --- /dev/null +++ b/userland/wasm_pk_data/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "wasm_pk_data" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +toml = "0.5" + + + + + +[dependencies.serde] +version = "1.0" +features = ["derive"] \ No newline at end of file diff --git a/userland/wasm_pk_data/assets/metadata.toml b/userland/wasm_pk_data/assets/metadata.toml new file mode 100644 index 0000000..b0d0eb1 --- /dev/null +++ b/userland/wasm_pk_data/assets/metadata.toml @@ -0,0 +1,3 @@ +name = "bruh" +version = [1233, 123, 123] +authors = ["John Doe", "Jane Doe"] \ No newline at end of file diff --git a/userland/wasm_pk_data/src/lib.rs b/userland/wasm_pk_data/src/lib.rs new file mode 100644 index 0000000..42adb3a --- /dev/null +++ b/userland/wasm_pk_data/src/lib.rs @@ -0,0 +1,20 @@ +#![no_std] +extern crate alloc; +use { + alloc::{string::String, vec::Vec}, + serde::Deserialize, +}; + +#[derive(Debug, Deserialize)] +pub struct Version { + pub major: u16, + pub minor: u8, + pub patch: u8, +} + +#[derive(Debug, Deserialize)] +pub struct MetaData { + pub name: String, + pub version: Version, + pub authors: Vec, +} From 3ce2026d320c04ae8ccf4217c4d08de5ceef8dd2 Mon Sep 17 00:00:00 2001 From: Able Date: Sat, 26 Feb 2022 07:35:36 -0600 Subject: [PATCH 10/16] wasm jumploader patches --- ableos/src/rhai_shell/mod.rs | 3 ++ ableos/src/wasm_jumploader/host_functions.rs | 11 ++++++++ ableos/src/wasm_jumploader/mod.rs | 11 +++++--- userland/aos_wasm_stress_test/Cargo.lock | 2 +- userland/aos_wasm_stress_test/readme.md | 4 +-- userland/aos_wasm_stress_test/src/main.rs | 28 +++++++++++++++++-- userland/root_rs/ext2.img | Bin 4194304 -> 4194304 bytes 7 files changed, 50 insertions(+), 9 deletions(-) diff --git a/ableos/src/rhai_shell/mod.rs b/ableos/src/rhai_shell/mod.rs index 8b88867..cb9fa0f 100644 --- a/ableos/src/rhai_shell/mod.rs +++ b/ableos/src/rhai_shell/mod.rs @@ -36,6 +36,7 @@ use alloc::string::{String, ToString}; use rhai::Engine; use x86_64::instructions::interrupts::{disable, enable}; +use crate::wasm_jumploader::interp; use crate::{ arch::{shutdown, sloop}, kmain::{tick, TICK}, @@ -81,6 +82,8 @@ fn engine_construction() -> Engine { engine.register_fn("shutdown", shutdown); engine.register_fn("peek", peek_memory); engine.register_fn("poke", poke_memory); + engine.register_fn("sloop", sloop); + engine.register_fn("wasm", interp); engine } diff --git a/ableos/src/wasm_jumploader/host_functions.rs b/ableos/src/wasm_jumploader/host_functions.rs index 25cfa2e..1c21f31 100644 --- a/ableos/src/wasm_jumploader/host_functions.rs +++ b/ableos/src/wasm_jumploader/host_functions.rs @@ -7,6 +7,7 @@ use wasmi::{ pub struct HostExternals {} const ADD_FUNC_INDEX: usize = 0; +const SEND_SIGNAL_INDEX: usize = 1; impl Externals for HostExternals { fn invoke_index( @@ -22,6 +23,14 @@ impl Externals for HostExternals { println!("SYSCALL: {} + {} = {}", a, b, result); Ok(Some(RuntimeValue::I32(result as i32))) } + SEND_SIGNAL_INDEX => { + let pid: u32 = args.nth_checked(0)?; + let signal: u32 = args.nth_checked(1)?; + + println!("SYSCALL: send signal {} to pid {}", signal, pid); + let ret = RuntimeValue::I32(0); + Ok(Some(ret)) + } _ => panic!("Unimplemented function at {}", index), } } @@ -31,6 +40,7 @@ impl HostExternals { fn check_signature(&self, index: usize, signature: &Signature) -> bool { let (params, ret_ty): (&[ValueType], Option) = match index { ADD_FUNC_INDEX => (&[ValueType::I32, ValueType::I32], Some(ValueType::I32)), + SEND_SIGNAL_INDEX => (&[ValueType::I32, ValueType::I32], Some(ValueType::I32)), _ => return false, }; signature.params() == params && signature.return_type() == ret_ty @@ -41,6 +51,7 @@ impl ModuleImportResolver for HostExternals { fn resolve_func(&self, field_name: &str, signature: &Signature) -> Result { let index = match field_name { "add" => ADD_FUNC_INDEX, + "send_signal" => SEND_SIGNAL_INDEX, _ => { return Err(Error::Instantiation(format!( "Export {} not found", diff --git a/ableos/src/wasm_jumploader/mod.rs b/ableos/src/wasm_jumploader/mod.rs index 35b4788..e379b01 100644 --- a/ableos/src/wasm_jumploader/mod.rs +++ b/ableos/src/wasm_jumploader/mod.rs @@ -10,17 +10,20 @@ use wasmi::{ImportsBuilder, ModuleInstance}; use crate::{filesystem::FILE_SYSTEM, wasm_jumploader::host_functions::HostExternals}; pub fn interp() { - info!("Interpreting..."); + trace!("Interpreting..."); let fs = &*FILE_SYSTEM.lock(); - info!("Got filesystem"); + trace!("Got filesystem"); let file = fs - .open(b"/home/able/bins/test.wasm", OpenOptions::new().read(true)) + .open( + b"/home/able/bins/aos_wasm_stress_test.wasm", + OpenOptions::new().read(true), + ) .unwrap(); let mut wasm_binary = Vec::new(); let ret = file.read_to_end(&mut wasm_binary).unwrap(); - info!("Binary size {}", ret); + trace!("Binary size {}", ret); // Load wasm binary and prepare it for instantiation. let module = wasmi::Module::from_buffer(&wasm_binary).expect("failed to load wasm"); diff --git a/userland/aos_wasm_stress_test/Cargo.lock b/userland/aos_wasm_stress_test/Cargo.lock index d208d60..6b2bc0f 100644 --- a/userland/aos_wasm_stress_test/Cargo.lock +++ b/userland/aos_wasm_stress_test/Cargo.lock @@ -12,4 +12,4 @@ dependencies = [ [[package]] name = "libwasm" version = "0.1.0" -source = "git+https://git.ablecorp.us/able/libwasm.git#502187e8734b54df3c6cae2baf2315539a3ec49b" +source = "git+https://git.ablecorp.us/able/libwasm.git#dedbb769ba01a4b75992437e52ca9a5c2bb9e0f9" diff --git a/userland/aos_wasm_stress_test/readme.md b/userland/aos_wasm_stress_test/readme.md index 03b81cc..3a68e32 100644 --- a/userland/aos_wasm_stress_test/readme.md +++ b/userland/aos_wasm_stress_test/readme.md @@ -1,4 +1,4 @@ -This is a stress test and simple progrram for ableOS. +This is a stress test and simple program for ableOS. + -There should be two sub commands echo and input diff --git a/userland/aos_wasm_stress_test/src/main.rs b/userland/aos_wasm_stress_test/src/main.rs index a3fd82b..73ee380 100644 --- a/userland/aos_wasm_stress_test/src/main.rs +++ b/userland/aos_wasm_stress_test/src/main.rs @@ -1,12 +1,36 @@ #![no_std] #![no_main] -#![deny(improper_ctypes)] #[no_mangle] fn start() -> i32 { let ret = unsafe { add(1, 2) }; + unsafe { + send_signal(PID(1), Signals::Quit); + } ret as i32 } -use libwasm::syscalls::add; +extern "C" { + + /// Send a signal to a process + /// + /// # Arguments + /// + /// * `pid` - The PID of the process to send the signal to + /// * `signal` - The signal to send + pub fn send_signal(pid: PID, signal: Signals) -> bool; +} + +use { + libwasm::process::{signals::Signals, PID}, + libwasm::syscalls::add, +}; + +use libwasm::*; + +#[panic_handler] +fn panic(_info: &PanicInfo) -> ! { + loop {} +} +use core::panic::PanicInfo; diff --git a/userland/root_rs/ext2.img b/userland/root_rs/ext2.img index 4927e5a8558cffd4e1a8dac54f424c4ed1be2ae1..15b29de6a0b60f15ff7284502beb3d7acb87c552 100644 GIT binary patch literal 4194304 zcmeF431FN>*~cesp-}Ei4nYExTA)XEleTFnE2RfSuF?wxaoHrBW^J+?b~kMUmP0=Q zML`kpK#@}vltV-g1r-zzz!UG2>k~f(JW)aA`#*EMJMX(^nzRM^S0A$b?t9H|W}bQG znVDyl;y)4~fmbbo2}t>lNTlgU~>_0l~>|lIdR7}#oy=V<0%L^wA0>ubv0Qr&z-1ahsozXAeWkh{4WWN zDS>m&#qC-qOmJnt6bG(JHIMR1SC8^~UcT`Oe0l!U<16W(r^inS^pDu+TaTif^0lMi z_x5TjdCornh1c%Ywd1sLU2i*NT$h~t^!V|?^S8qHrtPcUq5ko+pZnt4YG++{?$hJ{ zg&!Zhb$r)Z?c=n_xlfO83ZCDD?@e3E(GB}IdF9GOs$J>QFZ%!EFKy9vX^{SLq32&y z?FJ1TZ@%H<9o0^I#`6Cg_{;M}43YImrA{L6EW`AoI5T>ZNX zu|;>=--w+1^!QT#?}qQ!R=Yt1$M5{qX=hhE%{^aYn^t@N*0}h(YBy-$__RBA{7SXc zo&o<4fbIEs{#3+PodA(@qx_ph32flM-5*^wwc4fU;Q8{~0sEEGFC5HKbCuNp(fm8} z?boiXcD2ERpN}V@Zi)WA0d-$Q&h_h`dL6^~T>- zd%oyj`Rx$szZYLulCezxnO8kBquTSG{*&}SjyB*o5INVcf0F;#SGz$2$1k3>tg8NV z`M+-8jaU9szqwPgu;M?LerbRHjtY0)t)cqzZtg0qjzr6 z<-|O{DTqWX<*x~Wn#Z|d&DCyJ<@h##`Q=Gfeo`*|lK)cozx{7l|4Z$UJb#-}q<{I; zv(KpZe5ZeZ?A3kI17lhLKYZXX+p0a^PydgQ_8(M9|F)w@|2<#WzN-Fr`tNs0voB+r z{zqPW(adV;cl_nq8%zJ5ammS5^WUX^d)R)yjAi;Sxoo@N)=R(tZ23Hv&;Q*XPjyy% zK97?C36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg013RZ2#mw)ZmXKc&A?ytdEB@e__7VY@2a*LH)DA|Rp^@@YiVi0d2;TAaecXg z^mh1sxSG_|pBl~$6=xLJ6>(q$|8~c@JE|?m75Y;7bdOSd;=A0tE0-(ofY1Ho@!N2r zm>w9xO?fH_kidut>^n)RX2^b!{UHZHCPNN{Oo6-}G8J+VU4#=U9d62^(3CJ5DhePH=j({wHEQBnAEQTBjISSGVc_ZX# z$T5&(A;&?Ehb)1d09guI23ZbS0a*z-5pojbO^}lzr$F8eITi92ND^`yBn9b$bVGU| zX-F@G|487!nZUkVq5ebmgX|B9O+Y<{v_je-vmmn}b0F=IxsVRXp^$ly!ypOB8z6^6 zQjji4H>3xWhV(*KLHZyW$Xg++A^ng6NEVWV3_?za16d1M2N{N(0XY-$ zHpqI&S&*|K=RmH8Tm!ilavkJ)$R{8-Kt2ii6y!$8O^{DRJ_ETKatq{E$Ze3%LT-nA z4sr+N^N>3scR}uk+ynUnfW4@*Bvx&{=PX zyaVz-kat4PgPae!0P-%#yCD}s-UE3rir|$af*%gM1(I1IVM0A3}Zv`7z`tke@<+2KhPU7m!~ya@RhHhgFFcNI^-LWZ$iEWc?j|_V;~7xF#G_aQ%kJPP?C(CNXCTi)o`d`m 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

L{>| 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 zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;=+0foPK8e@uW0{68g- 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

d9Jl?|VYLfE67)O;$>phvc02`2Kez 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 zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V zfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{As_^V 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%0Db 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

kX&VN^B=K+v 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 z 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

c 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%0A<&vf*Z}+pfxk=L7@VeN`Affa4a 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 p2F7+*a7O6S4uZlFLV|@5p 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�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 z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ 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 z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5)$eu2TUvB~Ad z7q5QV7q8yic13f1v^l(NXk5{b8Mu! zd|+_6xqR!`==Px<6U(=ZP7X~DH@BVBXuoi5cw2M4Slt|MP7aNYt{#|dp5JJ1G-~aQ zTD^U9y?153zOvp?+&eKHH30$y2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBngrwR;Aj8t=M)%n#YRjPYhTdI}$t<}oX1!uPIsrK#NdtGJGp30$L z7uM!27-^1-jbGJLnLjZ(Fg{tS6#f0%1||pko1@!WtBd;kcQyxh^$!kAG+SGWh1L0$ zzIPOhDi4`AIxy0#9+x4eHd}adwX&qYKaaOw(Z6eKXmqkUeotj~Tm_vThvR5^FwmEnYz zN;ziL;?}!NyAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ 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 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAVA=E0;7nJnv`qIIr^;0xt@v}+e73IWssMztM?m^ zh!G(0M+C-kkL&yI|APMgPh$V68Ky=1{4#Ir$6M6XbGD@JbM^HY>tji&TgM{WcezWo ztDEh*J^vp2a(}6JeZWY7009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 I2>cs?A6d?a?f?J) From 65259360ebf8f3aaf410ce9c9f8fc6839f42884b Mon Sep 17 00:00:00 2001 From: Able Date: Sat, 26 Feb 2022 07:47:44 -0600 Subject: [PATCH 11/16] adding time syscall --- ableos/src/wasm_jumploader/host_functions.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ableos/src/wasm_jumploader/host_functions.rs b/ableos/src/wasm_jumploader/host_functions.rs index 1c21f31..83072b5 100644 --- a/ableos/src/wasm_jumploader/host_functions.rs +++ b/ableos/src/wasm_jumploader/host_functions.rs @@ -8,6 +8,7 @@ pub struct HostExternals {} const ADD_FUNC_INDEX: usize = 0; const SEND_SIGNAL_INDEX: usize = 1; +const GET_TIME_INDEX: usize = 2; impl Externals for HostExternals { fn invoke_index( @@ -31,6 +32,17 @@ impl Externals for HostExternals { let ret = RuntimeValue::I32(0); Ok(Some(ret)) } + + GET_TIME_INDEX => { + use core::sync::atomic::Ordering::*; + + x86_64::instructions::interrupts::disable(); + let tick_time = crate::kmain::TICK.load(Relaxed); + x86_64::instructions::interrupts::enable(); + + let ret = RuntimeValue::I64(tick_time.try_into().unwrap()); + Ok(Some(ret)) + } _ => panic!("Unimplemented function at {}", index), } } @@ -41,6 +53,8 @@ impl HostExternals { let (params, ret_ty): (&[ValueType], Option) = match index { ADD_FUNC_INDEX => (&[ValueType::I32, ValueType::I32], Some(ValueType::I32)), SEND_SIGNAL_INDEX => (&[ValueType::I32, ValueType::I32], Some(ValueType::I32)), + GET_TIME_INDEX => (&[], Some(ValueType::I32)), + _ => return false, }; signature.params() == params && signature.return_type() == ret_ty From c21b1a75f505c636fb88772dcc358795d6f78bbc Mon Sep 17 00:00:00 2001 From: Able Date: Mon, 28 Feb 2022 06:48:56 -0600 Subject: [PATCH 12/16] pci cleaned up --- ableos/Cargo.toml | 3 +- ableos/src/devices/id.rs | 12 +++++ ableos/src/devices/mod.rs | 1 + ableos/src/devices/pci_inner.rs | 30 +++++++++++++ ableos/src/scratchpad.rs | 78 +++++++++++++-------------------- 5 files changed, 75 insertions(+), 49 deletions(-) create mode 100644 ableos/src/devices/id.rs diff --git a/ableos/Cargo.toml b/ableos/Cargo.toml index 5f2383f..961bb18 100644 --- a/ableos/Cargo.toml +++ b/ableos/Cargo.toml @@ -19,7 +19,8 @@ run-args = [ # An example gpu used with ableOS "-device", - "virtio-gpu", + # "virtio-gpu", + "ati-vga", # An example disk used with ableOS "-device", diff --git a/ableos/src/devices/id.rs b/ableos/src/devices/id.rs new file mode 100644 index 0000000..6323a5d --- /dev/null +++ b/ableos/src/devices/id.rs @@ -0,0 +1,12 @@ +#[derive(Debug)] +pub enum Vendor { + Unknown = 0, + Ati = 4098, +} + +pub fn match_vendor(id: u16) -> Vendor { + match id { + 4098 => Vendor::Ati, + _ => Vendor::Unknown, + } +} diff --git a/ableos/src/devices/mod.rs b/ableos/src/devices/mod.rs index 132c3f8..5631399 100644 --- a/ableos/src/devices/mod.rs +++ b/ableos/src/devices/mod.rs @@ -1,4 +1,5 @@ pub mod character_devs; +pub mod id; pub mod pci_inner; use alloc::{ diff --git a/ableos/src/devices/pci_inner.rs b/ableos/src/devices/pci_inner.rs index d0f5fc5..c78c9a4 100644 --- a/ableos/src/devices/pci_inner.rs +++ b/ableos/src/devices/pci_inner.rs @@ -1,4 +1,6 @@ //! map the DeviceClass via + +use pci::PortOps; #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum DeviceClass { UnclassifiedDevice = 0, @@ -54,3 +56,31 @@ impl DeviceClass { } } } + +pub struct PciIO {} + +impl PortOps for PciIO { + unsafe fn read8(&self, port: u16) -> u8 { + cpuio::inb(port as u16) + } + + unsafe fn read16(&self, port: u16) -> u16 { + cpuio::inw(port as u16) + } + + unsafe fn read32(&self, port: u16) -> u32 { + cpuio::inl(port as u16) + } + + unsafe fn write8(&self, port: u16, val: u8) { + cpuio::outb(val, port as u16); + } + + unsafe fn write16(&self, port: u16, val: u16) { + cpuio::outw(val, port as u16); + } + + unsafe fn write32(&self, port: u16, val: u32) { + cpuio::outl(val, port as u16); + } +} diff --git a/ableos/src/scratchpad.rs b/ableos/src/scratchpad.rs index 85939ac..6062b35 100644 --- a/ableos/src/scratchpad.rs +++ b/ableos/src/scratchpad.rs @@ -1,18 +1,13 @@ -use core::arch::asm; - -use alloc::string::{String, ToString}; -use cpuio::outb; - -use crate::{absi::colorify, messaging::ProcessMessage, rhai_shell::rhai_shell}; - use { crate::{ - devices::{pci_inner::DeviceClass, Device, DEVICE_TABLE}, - proc::PID, - wasm_jumploader::interp, + devices::{ + id::match_vendor, + pci_inner::{DeviceClass, PciIO}, + Device, DEVICE_TABLE, + }, + rhai_shell::rhai_shell, }, alloc::{format, vec::Vec}, - pci::PortOps, }; /// Experimental scratchpad for testing. @@ -29,7 +24,27 @@ pub fn scratchpad() { let device_table = &mut *DEVICE_TABLE.lock(); for x in dev_list { - let device_name = format!("{:?}-{}", DeviceClass::from_u8(x.id.class), x.id.device_id); + let vendor_id_name = match_vendor(x.id.vendor_id); + use crate::devices::id::Vendor::*; + match vendor_id_name { + Unknown => {} + Ati => unsafe { + x.cspace_access_method.write32(&PciIO {}, x.loc, 0x0260, 1); + + x.cspace_access_method + .write32(&PciIO {}, x.loc, 0x0230, 0x00_ff_0000); + + // 0x0260 + }, + } + + let device_name = format!( + "{:?}-{:?}-{}", + vendor_id_name, + DeviceClass::from_u8(x.id.class), + x.id.device_id + ); + // println!("{}", device_name); device_table .devices @@ -37,45 +52,12 @@ pub fn scratchpad() { } /* - for (key, _value) in device_table.devices.iter() { - debug!("{}", key); - } - */ - // interp(); - // crate::experiments::absi::colorify(); - let message = "Hello, world!"; let xyz = ProcessMessage::new_from_string(PID(123), PID(0), message.to_string()); - // print!("{:?}", xyz); + print!("{:?}", xyz); + */ + rhai_shell(); } - -pub struct PciIO {} - -impl PortOps for PciIO { - unsafe fn read8(&self, port: u16) -> u8 { - cpuio::inb(port as u16) - } - - unsafe fn read16(&self, port: u16) -> u16 { - cpuio::inw(port as u16) - } - - unsafe fn read32(&self, port: u16) -> u32 { - cpuio::inl(port as u16) - } - - unsafe fn write8(&self, port: u16, val: u8) { - cpuio::outb(val, port as u16); - } - - unsafe fn write16(&self, port: u16, val: u16) { - cpuio::outw(val, port as u16); - } - - unsafe fn write32(&self, port: u16, val: u32) { - cpuio::outl(val, port as u16); - } -} From 6c3a67e6b5d6b709e8c1c413ffd7eecea6124ecc Mon Sep 17 00:00:00 2001 From: Able Date: Mon, 28 Feb 2022 08:54:41 -0600 Subject: [PATCH 13/16] seperate the core kernel into its own directory --- .gitignore | 1 + ableos/Cargo.lock | 8 ++ ableos/Cargo.toml | 6 ++ ableos/src/arch/x86_64/interrupts.rs | 2 +- ableos/src/kmain.rs | 14 --- ableos/src/lib.rs | 14 +-- ableos/src/logger.rs | 2 +- ableos/src/messaging/NOTES.md | 0 ableos/src/messaging/mod.rs | 100 ------------------- ableos/src/panic.rs | 22 ---- ableos/src/rhai_shell/mod.rs | 2 +- ableos/src/tests.rs | 3 +- ableos/src/wasm_jumploader/host_functions.rs | 2 +- kernel/Cargo.lock | 16 +++ kernel/Cargo.toml | 8 ++ kernel/src/kernel_time.rs | 10 ++ kernel/src/lib.rs | 25 +++++ kernel/src/messaging.rs | 65 ++++++++++++ kernel/src/panic.rs | 8 ++ kernel/src/proccess.rs | 4 + 20 files changed, 164 insertions(+), 148 deletions(-) delete mode 100644 ableos/src/messaging/NOTES.md delete mode 100644 ableos/src/messaging/mod.rs delete mode 100644 ableos/src/panic.rs create mode 100644 kernel/Cargo.lock create mode 100644 kernel/Cargo.toml create mode 100644 kernel/src/kernel_time.rs create mode 100644 kernel/src/lib.rs create mode 100644 kernel/src/messaging.rs create mode 100644 kernel/src/panic.rs create mode 100644 kernel/src/proccess.rs diff --git a/.gitignore b/.gitignore index 7cc8399..06901ea 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ facepalm/target shadeable/target qprofiler userland/*/target +kernel/target diff --git a/ableos/Cargo.lock b/ableos/Cargo.lock index 9938dab..5f0e17a 100644 --- a/ableos/Cargo.lock +++ b/ableos/Cargo.lock @@ -35,6 +35,7 @@ dependencies = [ "facepalm", "genfs", "hashbrown", + "kernel", "lazy_static", "libwasm", "linked_list_allocator", @@ -270,6 +271,13 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +[[package]] +name = "kernel" +version = "0.1.1" +dependencies = [ + "lazy_static", +] + [[package]] name = "lazy_static" version = "1.4.0" diff --git a/ableos/Cargo.toml b/ableos/Cargo.toml index 961bb18..283ff54 100644 --- a/ableos/Cargo.toml +++ b/ableos/Cargo.toml @@ -49,6 +49,10 @@ test-args = [ ] [dependencies] + + + + linked_list_allocator = "0.9.0" lliw = "0.2.0" # qoi_rs = "*" @@ -81,6 +85,8 @@ version = "0.8.1" default-features = false +[dependencies.kernel] +path = "../kernel" [dependencies.serde] version = "*" diff --git a/ableos/src/arch/x86_64/interrupts.rs b/ableos/src/arch/x86_64/interrupts.rs index 2f6fd55..f16208a 100644 --- a/ableos/src/arch/x86_64/interrupts.rs +++ b/ableos/src/arch/x86_64/interrupts.rs @@ -67,7 +67,7 @@ extern "x86-interrupt" fn double_fault_handler( panic!("EXCEPTION: DOUBLE FAULT\n{:#?}", stack_frame); } extern "x86-interrupt" fn timer_interrupt_handler(_stack_frame: InterruptStackFrame) { - crate::kmain::tick(); + kernel::tick(); unsafe { PICS.lock() .notify_end_of_interrupt(InterruptIndex::Timer.as_u8()); diff --git a/ableos/src/kmain.rs b/ableos/src/kmain.rs index 5e6ab8c..4ce7390 100644 --- a/ableos/src/kmain.rs +++ b/ableos/src/kmain.rs @@ -35,7 +35,6 @@ use { lazy_static! { // TODO: Change this structure to allow for multiple cores loaded - pub static ref TICK: AtomicU64 = AtomicU64::new(0); pub static ref BOOT_CONF: BootConfig = boot_conf::BootConfig::new(); } @@ -107,19 +106,6 @@ pub fn kernel_main() -> ! { sloop() } -/// called by arch specific timers to tick up all kernel related functions -pub fn tick() { - let mut data = TICK.load(Relaxed); - data = data.wrapping_add(1); - - crate::kernel_state::KERNEL_STATE.lock().update_state(); - // let mut scheduler = SCHEDULER.lock(); - // scheduler.bump_exec(); - // drop(scheduler); - - TICK.store(data, Relaxed) -} - pub fn cpu_socket_startup() { let mut cpu_info_socket = SimpleSock::new(); cpu_info_socket.register_protocol("CPU_INFO".to_string()); diff --git a/ableos/src/lib.rs b/ableos/src/lib.rs index c54c348..283e422 100644 --- a/ableos/src/lib.rs +++ b/ableos/src/lib.rs @@ -51,7 +51,6 @@ pub mod kernel_state; pub mod keyboard; pub mod kmain; pub mod logger; -pub mod panic; pub mod proto_filetable; pub mod relib; pub mod scheduler; @@ -74,7 +73,6 @@ pub use graphics::*; pub use kernel_state::*; pub use keyboard::*; pub use logger::*; -pub use panic::*; pub use proto_filetable::*; pub use relib::*; pub use scheduler::*; @@ -82,7 +80,6 @@ pub use utils::*; pub use vga_e::*; pub use wasm::*; -////////////////// pub mod virtio; pub use virtio::*; @@ -91,11 +88,14 @@ pub use alias_table::*; pub mod tests; pub use tests::*; -/*pub mod syscalls; -pub use syscalls::*; -*/ + pub mod scratchpad; pub use scratchpad::*; pub mod filesystem; -pub mod messaging; +/////////////// +/// Kernel /// +///////////// +pub use kernel; +pub use kernel::messaging; +pub use kernel::panic; diff --git a/ableos/src/logger.rs b/ableos/src/logger.rs index 5d31c24..49962ea 100644 --- a/ableos/src/logger.rs +++ b/ableos/src/logger.rs @@ -1,7 +1,7 @@ use core::sync::atomic::Ordering; -use crate::kmain::TICK; use crate::serial_println; +use kernel::TICK; use lliw::{Fg, Reset}; pub use log::{debug, info, trace, warn}; use log::{Level, Metadata, Record}; diff --git a/ableos/src/messaging/NOTES.md b/ableos/src/messaging/NOTES.md deleted file mode 100644 index e69de29..0000000 diff --git a/ableos/src/messaging/mod.rs b/ableos/src/messaging/mod.rs deleted file mode 100644 index ac47f22..0000000 --- a/ableos/src/messaging/mod.rs +++ /dev/null @@ -1,100 +0,0 @@ -use { - crate::{kmain::TICK, proc::PID}, - alloc::string::String, - core::{ - fmt::{Display, Formatter, Result as FmtResult}, - result::Result, - sync::atomic::Ordering::Relaxed, - }, - libwasm::syscalls::time_calls::SecondsTime, - x86_64::instructions::interrupts::{disable, enable}, -}; -#[derive(Debug)] -pub enum MessagingError { - MessageTooLarge, -} - -impl Display for MessagingError { - fn fmt(&self, f: &mut Formatter) -> FmtResult { - match self { - MessagingError::MessageTooLarge => write!(f, "Message too large"), - } - } -} - -/// Not properly implemented -pub fn fetch_time() -> SecondsTime { - disable(); - let time = TICK.load(Relaxed); - enable(); - - SecondsTime { - seconds: time, - milliseconds: 0, - } -} - -pub type MessageSmall = [u8; 2048]; -pub type MessageLarge = [u8; 16384]; - -pub enum Message { - Small(MessageSmall), - Large(MessageLarge), -} - -pub struct ProcessMessage { - pub to_pid: PID, - pub from_pid: PID, - pub message: Message, - pub sender_time: SecondsTime, -} - -impl ProcessMessage { - pub fn new(to_pid: PID, from_pid: PID, message: Message) -> Self { - Self { - to_pid, - from_pid, - message, - sender_time: fetch_time(), - } - } - - pub fn new_from_string( - to_pid: PID, - from_pid: PID, - string: String, - ) -> Result { - let mut mssg = Message::Small([0u8; 2048]); - match string.len() { - 0..=2047 => { - let mut message = [0u8; 2048]; - for (i, c) in string.chars().enumerate() { - message[i] = c as u8; - } - mssg = Message::Small(message); - } - - 2048..=16383 => { - let mut message = [0u8; 16384]; - for (i, c) in string.chars().enumerate() { - message[i] = c as u8; - } - mssg = Message::Large(message); - } - _ => return Err(MessagingError::MessageTooLarge), - } - - Ok(Self { - to_pid, - from_pid, - message: mssg, - sender_time: fetch_time(), - }) - } -} - -pub fn send_sync_message(message: ProcessMessage) {} -pub fn send_async_message(message: ProcessMessage) {} - -pub fn recv_sync_message() {} -pub fn recv_async_message() {} diff --git a/ableos/src/panic.rs b/ableos/src/panic.rs deleted file mode 100644 index 9ae4d7c..0000000 --- a/ableos/src/panic.rs +++ /dev/null @@ -1,22 +0,0 @@ -use {crate::arch::sloop, core::panic::PanicInfo}; - -/// A function to handle a panic in the kernel. -/// # Example -/// ``` -/// use ableos::panic::panic; -/// panic!("This is a panic!"); -/// ``` -/// -/// # Safety -/// This function is unsafe because it does not guarantee that the panic is handled. -#[panic_handler] -fn panic(info: &PanicInfo) -> ! { - error!("{}", info); - // help me use facepalm::start_facepalm; - - sloop() -} - -pub fn test_panic() { - panic!("test panic!"); -} diff --git a/ableos/src/rhai_shell/mod.rs b/ableos/src/rhai_shell/mod.rs index cb9fa0f..8bdfc35 100644 --- a/ableos/src/rhai_shell/mod.rs +++ b/ableos/src/rhai_shell/mod.rs @@ -39,10 +39,10 @@ use x86_64::instructions::interrupts::{disable, enable}; use crate::wasm_jumploader::interp; use crate::{ arch::{shutdown, sloop}, - kmain::{tick, TICK}, systeminfo::{KERNEL_VERSION, RELEASE_TYPE}, KERNEL_STATE, }; +use kernel::TICK; pub fn afetch() { let kstate = KERNEL_STATE.lock(); diff --git a/ableos/src/tests.rs b/ableos/src/tests.rs index bbfca8d..043e7ba 100644 --- a/ableos/src/tests.rs +++ b/ableos/src/tests.rs @@ -10,10 +10,11 @@ use vga::colors::Color16; use y_compositor_protocol::Version; use crate::{ - kmain::{BOOT_CONF, TICK}, + kmain::BOOT_CONF, network::socket::{SimpleSock, Socket, SocketReturns}, num_to_vga16, vga_e, VgaBuffer, SCREEN_BUFFER, }; +use kernel::TICK; pub fn run_tests() { if BOOT_CONF.run_tests { diff --git a/ableos/src/wasm_jumploader/host_functions.rs b/ableos/src/wasm_jumploader/host_functions.rs index 83072b5..13a7d08 100644 --- a/ableos/src/wasm_jumploader/host_functions.rs +++ b/ableos/src/wasm_jumploader/host_functions.rs @@ -37,7 +37,7 @@ impl Externals for HostExternals { use core::sync::atomic::Ordering::*; x86_64::instructions::interrupts::disable(); - let tick_time = crate::kmain::TICK.load(Relaxed); + let tick_time = kernel::TICK.load(Relaxed); x86_64::instructions::interrupts::enable(); let ret = RuntimeValue::I64(tick_time.try_into().unwrap()); diff --git a/kernel/Cargo.lock b/kernel/Cargo.lock new file mode 100644 index 0000000..852bf6c --- /dev/null +++ b/kernel/Cargo.lock @@ -0,0 +1,16 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "kernel" +version = "0.1.1" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" diff --git a/kernel/Cargo.toml b/kernel/Cargo.toml new file mode 100644 index 0000000..8f8ecbd --- /dev/null +++ b/kernel/Cargo.toml @@ -0,0 +1,8 @@ +[package] +edition = "2021" +name = "kernel" +version = "0.1.1" + + +[dependencies] +lazy_static = "*" \ No newline at end of file diff --git a/kernel/src/kernel_time.rs b/kernel/src/kernel_time.rs new file mode 100644 index 0000000..f4f1ed9 --- /dev/null +++ b/kernel/src/kernel_time.rs @@ -0,0 +1,10 @@ +//! Time + +/// An internal structure that is used to keep track of the time +pub struct Time { + /// The number of seconds since the kernel was started + pub seconds: u64, + + /// The number of nanoseconds since the kernel was started + pub nanoseconds: u32, +} diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs new file mode 100644 index 0000000..2a5d693 --- /dev/null +++ b/kernel/src/lib.rs @@ -0,0 +1,25 @@ +#![deny(missing_docs)] +#![no_std] +//! The ableOS kernel. + +pub mod kernel_time; +pub mod messaging; +pub mod proccess; + +// #[cfg(no_std)] +pub mod panic; + +use core::sync::atomic::{AtomicU64, Ordering::Relaxed}; + +/// called by arch specific timers to tick up all kernel related functions +pub fn tick() { + let mut data = TICK.load(Relaxed); + data = data.wrapping_add(1); + + TICK.store(data, Relaxed) +} + +lazy_static::lazy_static! { + /// The number of ticks since the first CPU was started + pub static ref TICK: AtomicU64 = AtomicU64::new(0); +} diff --git a/kernel/src/messaging.rs b/kernel/src/messaging.rs new file mode 100644 index 0000000..4d3535b --- /dev/null +++ b/kernel/src/messaging.rs @@ -0,0 +1,65 @@ +//! Interprocess communication. + +use crate::{kernel_time::Time, proccess::PID}; + +/// 128 Bytes +pub type Tiny = [u8; 128]; + +/// 1 KibiByte +pub type Small = [u8; 1024]; + +/// 65.536 KibiBytes +pub type Medium = [u8; 65536]; + +/// 1MiB +pub type Large = [u8; 1048576]; + +/// 16MiB +pub type Huge = [u8; 16777216]; + +/// An internal message to be held in a process message +pub enum Message { + /// A Tiny message + /// + /// The message is 128 bytes long + Tiny(Tiny), + /// A Small message + /// + /// The message is 1 KiB long + Small(Small), + /// A Medium message + /// + /// The message is 65.536 KiB long + Medium(Medium), + /// A Large message + /// + /// The message is 1 MiB long + Large(Large), + /// A Huge message + /// + /// The message is 16 MiB long + Huge(Huge), +} + +/// A message that can be sent between processes +pub struct ProcessMessage { + /// The sender of the message + pub to_pid: PID, + /// The receiver of the message + pub from_pid: PID, + /// The message + pub message: Message, + /// The time the message was sent + pub sender_time: Time, + /// The time the message was received + pub receiver_time: Time, +} + +#[derive(Debug)] +/// An enum of all possible errors that can occur when sending a message +pub enum MessagingError { + /// The message is too large to be sent + MessageTooLarge, + /// The reciever of the message is not valid + ProcessNonExistant, +} diff --git a/kernel/src/panic.rs b/kernel/src/panic.rs new file mode 100644 index 0000000..e3761be --- /dev/null +++ b/kernel/src/panic.rs @@ -0,0 +1,8 @@ +//! + +use core::panic::PanicInfo; + +#[panic_handler] +fn panic(_info: &PanicInfo) -> ! { + loop {} +} diff --git a/kernel/src/proccess.rs b/kernel/src/proccess.rs new file mode 100644 index 0000000..7077cbd --- /dev/null +++ b/kernel/src/proccess.rs @@ -0,0 +1,4 @@ +//! Platform agnostic process + +/// A process ID +pub type PID = u64; From beba2ae0ad95fef87ee9ab119bd3cca78bbba0ff Mon Sep 17 00:00:00 2001 From: Able Date: Wed, 2 Mar 2022 08:38:22 -0600 Subject: [PATCH 14/16] modularizing the kernel --- ableos/Cargo.lock | 8 +++++++- ableos/src/devices/character_devs/dev_null.rs | 12 +++++++++--- ableos/src/devices/character_devs/dev_unicode.rs | 11 ++++++++++- ableos/src/devices/character_devs/dev_zero.rs | 8 +++++++- ableos/src/devices/character_devs/mod.rs | 2 ++ ableos/src/devices/mod.rs | 2 +- ableos/src/driver_traits/mod.rs | 2 -- kernel/Cargo.lock | 8 +++++++- kernel/Cargo.toml | 9 +++++++-- kernel/src/device_interface/block/mod.rs | 1 + .../src/device_interface/character/mod.rs | 7 +++++++ kernel/src/device_interface/mod.rs | 4 ++++ kernel/src/lib.rs | 16 ++++++++++++---- kernel/src/messaging.rs | 6 +++--- kernel/src/panic.rs | 2 +- kernel/src/{kernel_time.rs => time.rs} | 0 16 files changed, 78 insertions(+), 20 deletions(-) create mode 100644 kernel/src/device_interface/block/mod.rs rename ableos/src/driver_traits/character_device.rs => kernel/src/device_interface/character/mod.rs (67%) create mode 100644 kernel/src/device_interface/mod.rs rename kernel/src/{kernel_time.rs => time.rs} (100%) diff --git a/ableos/Cargo.lock b/ableos/Cargo.lock index 5f0e17a..59af6be 100644 --- a/ableos/Cargo.lock +++ b/ableos/Cargo.lock @@ -273,9 +273,10 @@ checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" [[package]] name = "kernel" -version = "0.1.1" +version = "0.1.2" dependencies = [ "lazy_static", + "versioning", ] [[package]] @@ -775,6 +776,11 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "versioning" +version = "0.1.2" +source = "git+https://git.ablecorp.us/able/versioning#ef472283e6e7a2e395ee56434087b3a6fad53ff2" + [[package]] name = "vga" version = "0.2.7" diff --git a/ableos/src/devices/character_devs/dev_null.rs b/ableos/src/devices/character_devs/dev_null.rs index 405fb2f..cb9dff7 100644 --- a/ableos/src/devices/character_devs/dev_null.rs +++ b/ableos/src/devices/character_devs/dev_null.rs @@ -1,6 +1,4 @@ -use alloc::string::String; - -use crate::character_device::CharacterDevice; +use kernel::device_interface::character::CharacterDevice; #[derive(Debug, Clone, Copy, PartialEq, Eq)] @@ -22,4 +20,12 @@ impl CharacterDevice for DevNull { fn write_char(&mut self, _: char) -> bool { true } + + fn reset(&mut self) { + todo!() + } + + fn initialize(&mut self) -> bool { + todo!() + } } diff --git a/ableos/src/devices/character_devs/dev_unicode.rs b/ableos/src/devices/character_devs/dev_unicode.rs index aa25ca0..0ba0319 100644 --- a/ableos/src/devices/character_devs/dev_unicode.rs +++ b/ableos/src/devices/character_devs/dev_unicode.rs @@ -1,4 +1,4 @@ -use crate::character_device::CharacterDevice; +use kernel::device_interface::character::CharacterDevice; #[derive(Debug)] pub struct DevUnicode { @@ -29,6 +29,15 @@ impl CharacterDevice for DevUnicode { true } + + fn reset(&mut self) { + self.next_write_char = 0x00 as char; + self.next_read_char = 0x00 as char; + } + + fn initialize(&mut self) -> bool { + true + } } fn add1_char(c: char) -> char { diff --git a/ableos/src/devices/character_devs/dev_zero.rs b/ableos/src/devices/character_devs/dev_zero.rs index 09a1ad4..f5cc3b6 100644 --- a/ableos/src/devices/character_devs/dev_zero.rs +++ b/ableos/src/devices/character_devs/dev_zero.rs @@ -1,4 +1,4 @@ -use crate::character_device::CharacterDevice; +use kernel::device_interface::character::CharacterDevice; #[derive(Debug)] pub struct DevZero; @@ -19,4 +19,10 @@ impl CharacterDevice for DevZero { fn write_char(&mut self, _: char) -> bool { true } + + fn reset(&mut self) {} + + fn initialize(&mut self) -> bool { + true + } } diff --git a/ableos/src/devices/character_devs/mod.rs b/ableos/src/devices/character_devs/mod.rs index 061ae6e..9a2f294 100644 --- a/ableos/src/devices/character_devs/mod.rs +++ b/ableos/src/devices/character_devs/mod.rs @@ -1,3 +1,5 @@ pub mod dev_null; pub mod dev_unicode; pub mod dev_zero; + +pub use kernel::device_interface::character::CharacterDevice; diff --git a/ableos/src/devices/mod.rs b/ableos/src/devices/mod.rs index 5631399..ba340d2 100644 --- a/ableos/src/devices/mod.rs +++ b/ableos/src/devices/mod.rs @@ -9,7 +9,7 @@ use alloc::{ use hashbrown::HashMap; use pci::PCIDevice; -use crate::character_device::CharacterDevice; +use kernel::device_interface::character::CharacterDevice; // FIXME: This is a hack to hold a device. // #[derive(Debug)] diff --git a/ableos/src/driver_traits/mod.rs b/ableos/src/driver_traits/mod.rs index ec4063f..b832ebf 100644 --- a/ableos/src/driver_traits/mod.rs +++ b/ableos/src/driver_traits/mod.rs @@ -1,4 +1,2 @@ pub mod graphics; pub mod serial; - -pub mod character_device; diff --git a/kernel/Cargo.lock b/kernel/Cargo.lock index 852bf6c..b2f29bf 100644 --- a/kernel/Cargo.lock +++ b/kernel/Cargo.lock @@ -4,9 +4,10 @@ version = 3 [[package]] name = "kernel" -version = "0.1.1" +version = "0.1.2" dependencies = [ "lazy_static", + "versioning", ] [[package]] @@ -14,3 +15,8 @@ name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "versioning" +version = "0.1.2" +source = "git+https://git.ablecorp.us/able/versioning#ef472283e6e7a2e395ee56434087b3a6fad53ff2" diff --git a/kernel/Cargo.toml b/kernel/Cargo.toml index 8f8ecbd..d2f8b15 100644 --- a/kernel/Cargo.toml +++ b/kernel/Cargo.toml @@ -1,8 +1,13 @@ [package] edition = "2021" name = "kernel" -version = "0.1.1" +version = "0.1.2" [dependencies] -lazy_static = "*" \ No newline at end of file +[dependencies.lazy_static] +version = "1.4.0" +default-features = false + +[dependencies.versioning] +git = "https://git.ablecorp.us/able/versioning" \ No newline at end of file diff --git a/kernel/src/device_interface/block/mod.rs b/kernel/src/device_interface/block/mod.rs new file mode 100644 index 0000000..9d0f028 --- /dev/null +++ b/kernel/src/device_interface/block/mod.rs @@ -0,0 +1 @@ +//! diff --git a/ableos/src/driver_traits/character_device.rs b/kernel/src/device_interface/character/mod.rs similarity index 67% rename from ableos/src/driver_traits/character_device.rs rename to kernel/src/device_interface/character/mod.rs index d128c72..443d12a 100644 --- a/ableos/src/driver_traits/character_device.rs +++ b/kernel/src/device_interface/character/mod.rs @@ -1,3 +1,6 @@ +//! + +/// Character device interface. pub trait CharacterDevice { /// Returns true if the device can be read from. fn can_read(&self) -> bool; @@ -7,4 +10,8 @@ pub trait CharacterDevice { fn read_char(&mut self) -> Option; /// Writes a single character to the device and returns true if the write was successful fn write_char(&mut self, c: char) -> bool; + /// Reset the device to its initial state + fn reset(&mut self); + /// initializes the device, returns true if successful + fn initialize(&mut self) -> bool; } diff --git a/kernel/src/device_interface/mod.rs b/kernel/src/device_interface/mod.rs new file mode 100644 index 0000000..7fe7faa --- /dev/null +++ b/kernel/src/device_interface/mod.rs @@ -0,0 +1,4 @@ +//! Platform Agnostic Device + +pub mod block; +pub mod character; diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index 2a5d693..0d4f130 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -2,15 +2,16 @@ #![no_std] //! The ableOS kernel. -pub mod kernel_time; +pub mod device_interface; pub mod messaging; -pub mod proccess; - -// #[cfg(no_std)] pub mod panic; +pub mod proccess; +pub mod time; use core::sync::atomic::{AtomicU64, Ordering::Relaxed}; +use versioning::Version; + /// called by arch specific timers to tick up all kernel related functions pub fn tick() { let mut data = TICK.load(Relaxed); @@ -23,3 +24,10 @@ lazy_static::lazy_static! { /// The number of ticks since the first CPU was started pub static ref TICK: AtomicU64 = AtomicU64::new(0); } + +/// +pub const KERNEL_VERSION: Version = Version { + major: 0, + minor: 1, + patch: 2, +}; diff --git a/kernel/src/messaging.rs b/kernel/src/messaging.rs index 4d3535b..6584d41 100644 --- a/kernel/src/messaging.rs +++ b/kernel/src/messaging.rs @@ -1,14 +1,14 @@ //! Interprocess communication. -use crate::{kernel_time::Time, proccess::PID}; +use crate::{proccess::PID, time::Time}; /// 128 Bytes pub type Tiny = [u8; 128]; -/// 1 KibiByte +/// 1 KiB pub type Small = [u8; 1024]; -/// 65.536 KibiBytes +/// 65.536 KiB pub type Medium = [u8; 65536]; /// 1MiB diff --git a/kernel/src/panic.rs b/kernel/src/panic.rs index e3761be..0f1323a 100644 --- a/kernel/src/panic.rs +++ b/kernel/src/panic.rs @@ -3,6 +3,6 @@ use core::panic::PanicInfo; #[panic_handler] -fn panic(_info: &PanicInfo) -> ! { +fn panic_handler(_info: &PanicInfo) -> ! { loop {} } diff --git a/kernel/src/kernel_time.rs b/kernel/src/time.rs similarity index 100% rename from kernel/src/kernel_time.rs rename to kernel/src/time.rs From 05ce9f61c729d217f157a2b32631493463c53fe9 Mon Sep 17 00:00:00 2001 From: Able Date: Mon, 7 Mar 2022 12:21:16 -0600 Subject: [PATCH 15/16] commit message --- ableos/src/logger.rs | 2 -- ableos/src/rhai_shell/mod.rs | 2 +- kernel/src/messaging.rs | 2 ++ 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ableos/src/logger.rs b/ableos/src/logger.rs index 49962ea..ee6bdb1 100644 --- a/ableos/src/logger.rs +++ b/ableos/src/logger.rs @@ -6,8 +6,6 @@ use lliw::{Fg, Reset}; pub use log::{debug, info, trace, warn}; use log::{Level, Metadata, Record}; -use crate::arch::drivers::timer::TIMER_INTERRUPT_HERTZ; - struct SimpleLogger; // TODO: Rebuild this to take advantage of sockets // DETAIL: Log to a socket instead of the screen diff --git a/ableos/src/rhai_shell/mod.rs b/ableos/src/rhai_shell/mod.rs index 8bdfc35..d611973 100644 --- a/ableos/src/rhai_shell/mod.rs +++ b/ableos/src/rhai_shell/mod.rs @@ -32,7 +32,7 @@ lazy_static::lazy_static!( ; ); -use alloc::string::{String, ToString}; +use alloc::string::String; use rhai::Engine; use x86_64::instructions::interrupts::{disable, enable}; diff --git a/kernel/src/messaging.rs b/kernel/src/messaging.rs index 6584d41..068919f 100644 --- a/kernel/src/messaging.rs +++ b/kernel/src/messaging.rs @@ -62,4 +62,6 @@ pub enum MessagingError { MessageTooLarge, /// The reciever of the message is not valid ProcessNonExistant, + /// The message Queue is full + TooManyMessages, } From 0379a34a5977836199ef5c259655e7d60c53c7b6 Mon Sep 17 00:00:00 2001 From: Able Date: Fri, 11 Mar 2022 13:51:47 -0600 Subject: [PATCH 16/16] TOML config|moved a ton of boiler plate to prelude --- ableos/Cargo.lock | 70 +++++----- ableos/Cargo.toml | 52 +++---- ableos/assets/kernel.toml | 12 ++ ableos/assets/kernel_config.json | 7 - ableos/src/alias_table/mod.rs | 1 - ableos/src/allocator/aalloc.rs | 5 + ableos/src/allocator/mod.rs | 8 +- ableos/src/arch/x86_64/drivers/allocator.rs | 2 +- ableos/src/arch/x86_64/init.rs | 6 + ableos/src/boot_conf.rs | 40 +++--- ableos/src/devices/id.rs | 9 +- ableos/src/devices/mod.rs | 6 - ableos/src/devices/pci_inner.rs | 129 +++++++----------- ableos/src/experiments/absi.rs | 6 +- ableos/src/experiments/futex.rs | 2 - ableos/src/experiments/info.rs | 1 - ableos/src/experiments/y_compositor/window.rs | 3 - ableos/src/filesystem/mod.rs | 15 +- ableos/src/graphics/mod.rs | 3 +- ableos/src/kernel_state.rs | 1 - ableos/src/kmain.rs | 33 ++--- ableos/src/lib.rs | 13 +- ableos/src/logger.rs | 19 ++- ableos/src/port_io.rs | 16 +++ ableos/src/prelude/mod.rs | 1 + ableos/src/prelude/rust_2021.rs | 8 ++ ableos/src/print.rs | 3 +- ableos/src/proto_filetable/file.rs | 2 - ableos/src/proto_filetable/mod.rs | 5 - ableos/src/relib/clparse/mod.rs | 6 - ableos/src/relib/encoding/bin.rs | 2 - ableos/src/relib/encoding/rle.rs | 3 - ableos/src/relib/network/socket.rs | 4 - ableos/src/rhai_shell/mod.rs | 29 +++- ableos/src/scheduler/capabilities.rs | 2 +- ableos/src/scheduler/mod.rs | 4 +- ableos/src/scheduler/new_sched.rs | 2 - ableos/src/scheduler/proc.rs | 2 - ableos/src/scratchpad.rs | 72 ++-------- ableos/src/tests.rs | 15 +- ableos/src/vga_e.rs | 13 +- ableos/src/wasm/mod.rs | 2 - ableos/src/wasm_jumploader/host_functions.rs | 2 - ableos/src/wasm_jumploader/mod.rs | 1 - kernel/.cargo/config.toml | 2 + kernel/Cargo.toml | 2 + kernel/src/lib.rs | 2 + kernel/src/panic.rs | 6 +- shadeable/src/engine_internals.rs | 6 +- 49 files changed, 300 insertions(+), 355 deletions(-) create mode 100644 ableos/assets/kernel.toml delete mode 100644 ableos/assets/kernel_config.json create mode 100644 ableos/src/port_io.rs create mode 100644 ableos/src/prelude/mod.rs create mode 100644 ableos/src/prelude/rust_2021.rs create mode 100644 kernel/.cargo/config.toml diff --git a/ableos/Cargo.lock b/ableos/Cargo.lock index 59af6be..0d66aa2 100644 --- a/ableos/Cargo.lock +++ b/ableos/Cargo.lock @@ -34,7 +34,7 @@ dependencies = [ "externc-libm", "facepalm", "genfs", - "hashbrown", + "hashbrown 0.11.2", "kernel", "lazy_static", "libwasm", @@ -43,7 +43,6 @@ dependencies = [ "log", "logos", "pc-beeper", - "pci", "pic8259", "picorand", "pretty-hex", @@ -51,10 +50,10 @@ dependencies = [ "rhai", "rkyv", "serde", - "serde_json", "shadeable", "smoltcp", "spin 0.5.2", + "toml", "uart_16550", "unicode-width", "vga", @@ -75,6 +74,12 @@ dependencies = [ "rsdp", ] +[[package]] +name = "ahash" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217" + [[package]] name = "ahash" version = "0.7.6" @@ -247,13 +252,23 @@ dependencies = [ "wasi", ] +[[package]] +name = "hashbrown" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96282e96bfcd3da0d3aa9938bedf1e50df3269b6db08b4876d2da0bb1a0841cf" +dependencies = [ + "ahash 0.3.8", + "autocfg", +] + [[package]] name = "hashbrown" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash", + "ahash 0.7.6", ] [[package]] @@ -265,17 +280,12 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "itoa" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" - [[package]] name = "kernel" version = "0.1.2" dependencies = [ "lazy_static", + "log", "versioning", ] @@ -303,7 +313,7 @@ checksum = "33a33a362ce288760ec6a508b94caaec573ae7d3bbbd91b87aa0bad4456839db" [[package]] name = "libwasm" version = "0.1.0" -source = "git+https://git.ablecorp.us/able/libwasm.git#a89b8fc701ba0196cc9cca9989d9beb93d02a317" +source = "git+https://git.ablecorp.us/able/libwasm.git#dedbb769ba01a4b75992437e52ca9a5c2bb9e0f9" [[package]] name = "linked_list_allocator" @@ -440,14 +450,6 @@ dependencies = [ "x86_64", ] -[[package]] -name = "pci" -version = "0.0.1" -source = "git+https://gitlab.com/robigalia/pci#4e2fddc61825568b1d14d09fdc669389e6c43f02" -dependencies = [ - "bitflags", -] - [[package]] name = "pic8259" version = "0.10.2" @@ -540,7 +542,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49c94fda0280985896ed6d8bf0b43bbb5a7f0e39ccc8728ac907ddb4f06dae94" dependencies = [ - "ahash", + "ahash 0.7.6", "core-error", "instant", "libm", @@ -568,7 +570,7 @@ version = "0.7.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439655b8d657bcb28264da8e5380d55549e34ffc4149bea9e3521890a122a7bd" dependencies = [ - "hashbrown", + "hashbrown 0.11.2", "ptr_meta", "rkyv_derive", "seahash", @@ -600,12 +602,6 @@ dependencies = [ "log", ] -[[package]] -name = "ryu" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" - [[package]] name = "scopeguard" version = "1.1.0" @@ -638,17 +634,6 @@ dependencies = [ "syn", ] -[[package]] -name = "serde_json" -version = "1.0.78" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d23c1ba4cf0efd44be32017709280b32d1cea5c3f1275c3b6d9e8bc54f758085" -dependencies = [ - "itoa", - "ryu", - "serde", -] - [[package]] name = "shadeable" version = "0.1.0" @@ -736,6 +721,15 @@ dependencies = [ "crunchy", ] +[[package]] +name = "toml" +version = "0.5.6" +source = "git+https://github.com/diondokter/toml-rs#c4161aa70202b3992dbec79b76e7a8659713b604" +dependencies = [ + "hashbrown 0.7.2", + "serde", +] + [[package]] name = "ttf-parser" version = "0.14.0" diff --git a/ableos/Cargo.toml b/ableos/Cargo.toml index 283ff54..138e966 100644 --- a/ableos/Cargo.toml +++ b/ableos/Cargo.toml @@ -9,6 +9,9 @@ panic = "abort" [package.metadata.bootimage] run-args = [ + "--nodefaults", + + "-cpu", "Broadwell-v3", @@ -17,28 +20,24 @@ run-args = [ "-smp", "cores=2", - # An example gpu used with ableOS - "-device", - # "virtio-gpu", - "ati-vga", - # An example disk used with ableOS - "-device", - "virtio-blk-pci,drive=drive0,id=virtblk0,num-queues=4", + "-device", #"ati-vga", + "cirrus-vga", + + + + + # "-device", + # "virtio-blk-pci,drive=drive0,id=virtblk0,num-queues=4", # A simple example of a boot image - "-drive", - "file=disk.qcow2,if=none,id=drive0", + # "-drive", + # "file=disk.qcow2,if=none,id=drive0", + # "-device", + # "virtio-rng", - - - "-device", -"virtio-rng", - - -"-qmp", - "unix:../qmp-sock,server,nowait" - + # "-qmp", + # "unix:../qmp-sock,server,nowait" ] test-args = [ @@ -52,7 +51,6 @@ test-args = [ - linked_list_allocator = "0.9.0" lliw = "0.2.0" # qoi_rs = "*" @@ -70,7 +68,7 @@ genfs = "0.1.0" pc-beeper = {git = "https://github.com/AbleOS/pc-beeper"} rhai = "1.5" -pci = {git="https://gitlab.com/robigalia/pci"} +# pci = {git="https://gitlab.com/robigalia/pci"} libwasm = {git="https://git.ablecorp.us:443/able/libwasm.git"} acpi = "4.1.0" @@ -93,10 +91,7 @@ version = "*" default-features = false features = ["derive", "alloc"] -[dependencies.serde_json] -version = "*" -default-features = false -features = ["alloc"] + [dependencies.hashbrown] version = "0.11.2" @@ -118,6 +113,15 @@ git = "https://git.ablecorp.us:443/able/y-compositor-protocol.git" [dependencies.ext2] git = "https://git.ablecorp.us:443/able/ext2-rs.git" + + + +[dependencies.toml] +git = "https://github.com/diondokter/toml-rs" +# version = "0.5.8" +default-features = false + + [dependencies.shadeable] path = "../shadeable" diff --git a/ableos/assets/kernel.toml b/ableos/assets/kernel.toml new file mode 100644 index 0000000..b666058 --- /dev/null +++ b/ableos/assets/kernel.toml @@ -0,0 +1,12 @@ +[boot] +system_processes = [] +user_processes = ["shell"] + +[logging] +enabled = false +level = "Trace" + +[tests] +run_tests = false +run_demos = false +run_shader_tests = false \ No newline at end of file diff --git a/ableos/assets/kernel_config.json b/ableos/assets/kernel_config.json deleted file mode 100644 index 88b0866..0000000 --- a/ableos/assets/kernel_config.json +++ /dev/null @@ -1,7 +0,0 @@ - { - "logging_level": "Trace", - "logger_padding": 10, - "run_tests": false, - "run_demos": false, - "run_shader_tests": false - } \ No newline at end of file diff --git a/ableos/src/alias_table/mod.rs b/ableos/src/alias_table/mod.rs index 36d3d1d..3457b66 100644 --- a/ableos/src/alias_table/mod.rs +++ b/ableos/src/alias_table/mod.rs @@ -1,4 +1,3 @@ -use alloc::string::{String, ToString}; use hashbrown::HashMap; lazy_static::lazy_static! { diff --git a/ableos/src/allocator/aalloc.rs b/ableos/src/allocator/aalloc.rs index 652c74a..f67e60f 100644 --- a/ableos/src/allocator/aalloc.rs +++ b/ableos/src/allocator/aalloc.rs @@ -9,6 +9,11 @@ pub struct AAloc; unsafe impl GlobalAlloc for AAloc { unsafe fn alloc(&self, _layout: Layout) -> *mut u8 { + println!("Allocating memory"); + + println!("{}", _layout.size()); + println!("{}", _layout.align()); + null_mut() } diff --git a/ableos/src/allocator/mod.rs b/ableos/src/allocator/mod.rs index 45a1f21..d580698 100644 --- a/ableos/src/allocator/mod.rs +++ b/ableos/src/allocator/mod.rs @@ -8,13 +8,7 @@ pub const HEAP_MULTIPLIER: usize = 100000; pub const HEAP_BASE: usize = 100; pub const HEAP_SIZE: usize = HEAP_BASE * HEAP_MULTIPLIER; -// X86 alloc should be in arch/drivers/x86/alloc.rs -/* -use crate::arch::drivers::allocator::Dummy; -#[global_allocator] -static ALLOCATOR: Dummy = Dummy; -*/ use linked_list_allocator::LockedHeap; #[global_allocator] @@ -22,5 +16,7 @@ pub static ALLOCATOR: LockedHeap = LockedHeap::empty(); #[alloc_error_handler] fn alloc_error_handler(layout: alloc::alloc::Layout) -> ! { + // error!("allocation error: {:?}", layout); + panic!("allocation error: {:?}", layout) } diff --git a/ableos/src/arch/x86_64/drivers/allocator.rs b/ableos/src/arch/x86_64/drivers/allocator.rs index 2b8c708..353e0e0 100644 --- a/ableos/src/arch/x86_64/drivers/allocator.rs +++ b/ableos/src/arch/x86_64/drivers/allocator.rs @@ -1,5 +1,5 @@ use alloc::alloc::{GlobalAlloc, Layout}; -// use core::alloc::{GlobalAlloc, Layout}; + use crate::allocator::{HEAP_SIZE, HEAP_START}; use core::ptr::null_mut; use x86_64::{ diff --git a/ableos/src/arch/x86_64/init.rs b/ableos/src/arch/x86_64/init.rs index ea10466..75faf68 100644 --- a/ableos/src/arch/x86_64/init.rs +++ b/ableos/src/arch/x86_64/init.rs @@ -5,6 +5,12 @@ use super::{gdt, interrupts}; /// x86_64 initialization pub fn init() { + use crate::network::socket::SimpleSock; + use crate::relib::network::socket::Socket; + + let mut log_socket_id = SimpleSock::new(); + log_socket_id.register_protocol("Logger".to_string()); + let result = logger::init(); match result { Ok(_) => {} diff --git a/ableos/src/boot_conf.rs b/ableos/src/boot_conf.rs index 1678a8c..e711287 100644 --- a/ableos/src/boot_conf.rs +++ b/ableos/src/boot_conf.rs @@ -1,5 +1,4 @@ use log::LevelFilter; -// use rkyv::{Deserialize, Serialize}; use serde::{Deserialize, Serialize}; #[derive(Serialize, Debug, Deserialize)] @@ -19,29 +18,21 @@ pub enum LogLevel { } #[derive(Serialize, Debug, Deserialize)] -pub struct BootConfig { - pub logging_level: LogLevel, - pub logger_padding: usize, - pub run_tests: bool, - pub run_demos: bool, - pub run_shader_tests: bool, +pub struct KernelConfig { + pub boot: BootConfig, + pub logging: LoggingConfig, + pub tests: TestsConfig, } -impl BootConfig { +impl KernelConfig { pub fn new() -> Self { - let data = include_str!("../assets/kernel_config.json"); - - // Parse the string of data into a Person object. This is exactly the - // same function as the one that produced serde_json::Value above, but - // now we are asking it for a Person as output. - let p: BootConfig = serde_json::from_str(data).unwrap(); - // info!("{:?}", p); + let p: KernelConfig = toml::from_str(include_str!("../assets/kernel.toml")).unwrap(); p } pub fn log_level(&self) -> LevelFilter { use LevelFilter::*; - match self.logging_level { + match self.logging.level { LogLevel::Off => Off, LogLevel::Error => Error, LogLevel::Warn => Warn, @@ -51,3 +42,20 @@ impl BootConfig { } } } + +#[derive(Serialize, Debug, Deserialize)] +pub struct LoggingConfig { + pub enabled: bool, + pub level: LogLevel, +} +#[derive(Serialize, Debug, Deserialize)] +pub struct TestsConfig { + pub run_tests: bool, + pub run_demos: bool, + pub run_shader_tests: bool, +} + +#[derive(Serialize, Debug, Deserialize)] +pub struct BootConfig { + pub processes: Vec, +} diff --git a/ableos/src/devices/id.rs b/ableos/src/devices/id.rs index 6323a5d..f2f286d 100644 --- a/ableos/src/devices/id.rs +++ b/ableos/src/devices/id.rs @@ -1,12 +1,15 @@ #[derive(Debug)] pub enum Vendor { Unknown = 0, - Ati = 4098, + + Ati = 1002, } pub fn match_vendor(id: u16) -> Vendor { + use Vendor::*; match id { - 4098 => Vendor::Ati, - _ => Vendor::Unknown, + 1002 => Ati, + + _ => Unknown, } } diff --git a/ableos/src/devices/mod.rs b/ableos/src/devices/mod.rs index ba340d2..fb6d004 100644 --- a/ableos/src/devices/mod.rs +++ b/ableos/src/devices/mod.rs @@ -2,12 +2,7 @@ pub mod character_devs; pub mod id; pub mod pci_inner; -use alloc::{ - boxed::Box, - string::{String, ToString}, -}; use hashbrown::HashMap; -use pci::PCIDevice; use kernel::device_interface::character::CharacterDevice; @@ -15,7 +10,6 @@ use kernel::device_interface::character::CharacterDevice; // #[derive(Debug)] pub enum Device { Character(Box), - Pci(PCIDevice), } unsafe impl Sync for Device {} unsafe impl Send for Device {} diff --git a/ableos/src/devices/pci_inner.rs b/ableos/src/devices/pci_inner.rs index c78c9a4..a85c832 100644 --- a/ableos/src/devices/pci_inner.rs +++ b/ableos/src/devices/pci_inner.rs @@ -1,86 +1,55 @@ //! map the DeviceClass via +//! +//! -use pci::PortOps; -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub enum DeviceClass { - UnclassifiedDevice = 0, - MassStorageController = 0x01, - NetworkController = 0x02, - DisplayController = 0x03, - MultimediaController = 0x04, - MemoryController = 0x05, - BridgeDevice = 0x06, +#[allow(dead_code)] +fn scan_pci_bus() {} - CommunicationController = 0x07, - GenericSystemPeripheral = 0x08, - InputDevice = 0x09, - DockingStation = 0x0a, - Processor = 0x0b, - SerialBusController = 0x0c, - WirelessController = 0x0d, - IntelligentController = 0x0e, - SatelliteCommunicationController = 0x0f, - EncryptionController = 0x10, - SignalProcessingController = 0x11, - - // 14 - // 15 - // 16 - Coprocessor = 40, - // 64 +pub enum Vendors { + ThreeDfxInteractiveInc = 0x121a, + ThreeDLabs = 0x3d3d, + AllianceSemiconductorCorp = 0x1142, + ARKLogicInc = 0xedd8, + ATITechnologiesInc = 0x1002, + AvanceLogicIncALI = 0x1005, + ChipsandTechnologies = 0x102c, + CirrusLogic = 0x1013, + Compaq = 0x0e11, + CyrixCorp = 0x1078, + DiamondMultimediaSystems = 0x1092, + DigitalEquipmentCorp = 0x1011, + Iit = 0x1061, + IntegratedMicroSolutionsInc = 0x10e0, + IntelCorp = 0x8086, + IntergraphicsSystems = 0x10ea, + MacronixInc = 0x10d9, + MatroxGraphicsInc = 0x102b, + MiroComputersProductsAG = 0x1031, + NationalSemiconductorCorp = 0x100b, + NeoMagicCorp = 0x10c8, + Number9ComputerCompany = 0x105d, + NVidiaCorporation = 0x10de, + NVidiaSgsthomson = 0x12d2, + OakTechnologyInc = 0x104e, + QuantumDesignsHKLtd = 0x1098, + Real3D = 0x003d, + Rendition = 0x1163, + S3Inc = 0x5333, + SierraSemiconductor = 0x10a8, + SiliconIntegratedSystemsSiS = 0x1039, + SiliconMotionInc = 0x126f, + STBSystemsInc = 0x10b4, + TexasInstruments = 0x104c, + ToshibaAmericaInfoSystems = 0x1179, + TridentMicrosystems = 0x1023, + TsengLabsInc = 0x100c, + TundraSemiconductorCorp = 0x10e3, + VIATechnologiesInc = 0x1106, + VMWareInc = 0x15ad, + Weitek = 0x100e, + Unknown = 0xffff, } -impl DeviceClass { - pub fn from_u8(val: u8) -> DeviceClass { - match val { - 0x00 => DeviceClass::UnclassifiedDevice, - 0x01 => DeviceClass::MassStorageController, - 0x02 => DeviceClass::NetworkController, - 0x03 => DeviceClass::DisplayController, - 0x04 => DeviceClass::MultimediaController, - 0x05 => DeviceClass::MemoryController, - 0x06 => DeviceClass::BridgeDevice, - 0x07 => DeviceClass::CommunicationController, - 0x08 => DeviceClass::GenericSystemPeripheral, - 0x09 => DeviceClass::InputDevice, - 0x0a => DeviceClass::DockingStation, - 0x0b => DeviceClass::Processor, - 0x0c => DeviceClass::SerialBusController, - 0x0d => DeviceClass::WirelessController, - 0x0e => DeviceClass::IntelligentController, - 0x0f => DeviceClass::SatelliteCommunicationController, - 0x10 => DeviceClass::EncryptionController, - 0x11 => DeviceClass::SignalProcessingController, - 0x40 => DeviceClass::Coprocessor, - _ => DeviceClass::UnclassifiedDevice, - } - } -} - -pub struct PciIO {} - -impl PortOps for PciIO { - unsafe fn read8(&self, port: u16) -> u8 { - cpuio::inb(port as u16) - } - - unsafe fn read16(&self, port: u16) -> u16 { - cpuio::inw(port as u16) - } - - unsafe fn read32(&self, port: u16) -> u32 { - cpuio::inl(port as u16) - } - - unsafe fn write8(&self, port: u16, val: u8) { - cpuio::outb(val, port as u16); - } - - unsafe fn write16(&self, port: u16, val: u16) { - cpuio::outw(val, port as u16); - } - - unsafe fn write32(&self, port: u16, val: u32) { - cpuio::outl(val, port as u16); - } +pub struct PciDevice { + pub vendor: Vendors, } diff --git a/ableos/src/experiments/absi.rs b/ableos/src/experiments/absi.rs index d4aecfb..97c4689 100644 --- a/ableos/src/experiments/absi.rs +++ b/ableos/src/experiments/absi.rs @@ -65,7 +65,7 @@ pub fn colorify(eval: &str) { } } } -use alloc::string::String; + use logos::Logos; #[derive(Logos, Debug, PartialEq)] @@ -85,7 +85,7 @@ pub enum Token { Error, } pub fn colorify_2(eval: &str) { - let mut lexer = Token::lexer(eval); + let lexer = Token::lexer(eval); for token in lexer { use Token::*; match token { @@ -99,7 +99,7 @@ pub fn colorify_2(eval: &str) { kprint!("{}", text); } err => { - error!("Error parsing"); + error!("Error parsing {:?}", err); } } } diff --git a/ableos/src/experiments/futex.rs b/ableos/src/experiments/futex.rs index 13b1ac8..6453a5f 100644 --- a/ableos/src/experiments/futex.rs +++ b/ableos/src/experiments/futex.rs @@ -1,7 +1,5 @@ use core::time::Duration; -use alloc::vec::Vec; - // pub struct Duration {} pub struct AtomicU32(u32); diff --git a/ableos/src/experiments/info.rs b/ableos/src/experiments/info.rs index 901a3d4..3455af3 100644 --- a/ableos/src/experiments/info.rs +++ b/ableos/src/experiments/info.rs @@ -1,4 +1,3 @@ -#![feature(asm)] #![cfg_attr( not(any(target_arch = "x86_64", target_arch = "x86")), allow(dead_code) diff --git a/ableos/src/experiments/y_compositor/window.rs b/ableos/src/experiments/y_compositor/window.rs index 683cfb7..6e4a44f 100644 --- a/ableos/src/experiments/y_compositor/window.rs +++ b/ableos/src/experiments/y_compositor/window.rs @@ -1,8 +1,5 @@ use crate::driver_traits::graphics::Point; -use alloc::string::String; -use alloc::vec::Vec; - pub struct MenuOption { symbol: char, } diff --git a/ableos/src/filesystem/mod.rs b/ableos/src/filesystem/mod.rs index b842d64..9eceb51 100644 --- a/ableos/src/filesystem/mod.rs +++ b/ableos/src/filesystem/mod.rs @@ -1,13 +1,10 @@ -use { - alloc::{format, string::String, vec::Vec}, - ext2::{ - fs::{ - sync::{Inode, Synced}, - Ext2, - }, - sector::{SectorSize, Size1024}, - volume::Volume, +use ext2::{ + fs::{ + sync::{Inode, Synced}, + Ext2, }, + sector::{SectorSize, Size1024}, + volume::Volume, }; fn load_fs() -> Synced>> { diff --git a/ableos/src/graphics/mod.rs b/ableos/src/graphics/mod.rs index 3be4afc..0894ab5 100644 --- a/ableos/src/graphics/mod.rs +++ b/ableos/src/graphics/mod.rs @@ -1,6 +1,6 @@ use crate::vga_e::VGAE; use ab_glyph::{Font, FontRef, Glyph}; -use alloc::{boxed::Box, vec, vec::Vec}; + use shadeable::{evaluate_shader, pixel_format::Rgba64}; use spin; use vga::{colors::Color16, writers::GraphicsWriter}; @@ -126,7 +126,6 @@ impl ScreenBuffer { // TODO force clear pub fn force_redraw(&mut self) { - use shadeable::pixel_format::into_vga_16; VGAE.lock().clear_screen(vga::colors::Color16::Black); } diff --git a/ableos/src/kernel_state.rs b/ableos/src/kernel_state.rs index e4a99bf..78f8d14 100644 --- a/ableos/src/kernel_state.rs +++ b/ableos/src/kernel_state.rs @@ -1,4 +1,3 @@ -use alloc::string::{String, ToString}; use lazy_static::lazy_static; lazy_static! { diff --git a/ableos/src/kmain.rs b/ableos/src/kmain.rs index 4ce7390..8916bb9 100644 --- a/ableos/src/kmain.rs +++ b/ableos/src/kmain.rs @@ -1,15 +1,12 @@ #![allow(clippy::empty_loop)] -use acpi::AcpiTables; use x86_64::instructions::interrupts::{disable, enable}; -use crate::scratchpad; +use crate::{boot_conf::KernelConfig, scratchpad}; use { crate::{ arch::{init, sloop}, - boot_conf, - boot_conf::BootConfig, capabilities::FileAccess, experiments::{ info::master, @@ -20,29 +17,27 @@ use { scheduler::SCHEDULER, VgaBuffer, SCREEN_BUFFER, }, - alloc::{ - format, - string::{String, ToString}, - vec, - }, - core::sync::atomic::{AtomicU64, Ordering::*}, facepalm::start_facepalm, lazy_static::lazy_static, - log::*, shadeable::pixel_format::from_vga_16, vga::colors::Color16, }; lazy_static! { // TODO: Change this structure to allow for multiple cores loaded - pub static ref BOOT_CONF: BootConfig = boot_conf::BootConfig::new(); + pub static ref KERNEL_CONF: KernelConfig = KernelConfig::new(); } /// The main entry point of the kernel #[no_mangle] pub fn kernel_main() -> ! { init::init(); - log::set_max_level(BOOT_CONF.log_level()); + + if KERNEL_CONF.logging.enabled { + log::set_max_level(KERNEL_CONF.log_level()); + } else { + log::set_max_level(log::LevelFilter::Off); + } let mut scheduler = SCHEDULER.lock(); @@ -74,16 +69,6 @@ pub fn kernel_main() -> ! { mode.copy_to_buffer(); } - // TODO: create a scratchpad module - if false { - // Currently not implemented - let acpi_handler = AcpiStruct {}; - let mut table; - unsafe { - table = AcpiTables::search_for_rsdp_bios(acpi_handler); - } - } - start_facepalm(); scratchpad(); @@ -148,7 +133,7 @@ impl acpi::AcpiHandler for AcpiStruct { todo!("map_physical_region"); } - fn unmap_physical_region(region: &acpi::PhysicalMapping) { + fn unmap_physical_region(_region: &acpi::PhysicalMapping) { todo!("unmap_physical_region"); } } diff --git a/ableos/src/lib.rs b/ableos/src/lib.rs index 283e422..b7826ae 100644 --- a/ableos/src/lib.rs +++ b/ableos/src/lib.rs @@ -12,7 +12,8 @@ exclusive_range_pattern, lang_items, naked_functions, - slice_pattern + slice_pattern, + prelude_import )] /// Contains architecture specific code for aarch64. @@ -33,6 +34,7 @@ pub mod arch; #[macro_use] pub mod print; pub mod devices; +pub mod port_io; pub mod rhai_shell; pub mod wasm_jumploader; @@ -43,7 +45,6 @@ pub extern crate log; // Modules // ///////////// pub mod allocator; -pub mod boot_conf; pub mod driver_traits; pub mod experiments; pub mod graphics; @@ -66,7 +67,6 @@ pub extern crate externc_libm as libm; // Re-exports /// //////////////// pub use allocator::*; -pub use boot_conf::*; pub use driver_traits::*; pub use experiments::*; pub use graphics::*; @@ -79,7 +79,7 @@ pub use scheduler::*; pub use utils::*; pub use vga_e::*; pub use wasm::*; - +pub mod boot_conf; pub mod virtio; pub use virtio::*; @@ -99,3 +99,8 @@ pub mod filesystem; pub use kernel; pub use kernel::messaging; pub use kernel::panic; + +pub mod prelude; + +#[prelude_import] +pub use prelude::rust_2021::*; diff --git a/ableos/src/logger.rs b/ableos/src/logger.rs index ee6bdb1..ccbba62 100644 --- a/ableos/src/logger.rs +++ b/ableos/src/logger.rs @@ -1,9 +1,10 @@ use core::sync::atomic::Ordering; +use crate::network::socket::{SimpleSock, Socket}; use crate::serial_println; + use kernel::TICK; use lliw::{Fg, Reset}; -pub use log::{debug, info, trace, warn}; use log::{Level, Metadata, Record}; struct SimpleLogger; @@ -29,7 +30,13 @@ impl log::Log for SimpleLogger { log::Level::Debug => color = (Fg::Blue, "$BLUE$"), log::Level::Trace => color = (Fg::Yellow, "$YELLOW$"), } - + let msg = format!( + "[{}{}$RESET$][$GREEN${}$RESET$]{}\n", + color.1, + record.level(), + time_float, + record.args() + ); serial_println!( "[{}{}{}][{}{}{}] {}", color.0, @@ -40,6 +47,14 @@ impl log::Log for SimpleLogger { Reset, record.args(), ); + + let log_socket_id = SimpleSock::grab_socket("Logger".to_string()); + match log_socket_id { + Some(mut log_socket_id) => { + log_socket_id.write(msg.as_bytes().to_vec()); + } + None => warn!("No socket found for Logger"), + } } } /// Clear the log buffer diff --git a/ableos/src/port_io.rs b/ableos/src/port_io.rs new file mode 100644 index 0000000..15b6d66 --- /dev/null +++ b/ableos/src/port_io.rs @@ -0,0 +1,16 @@ +use cpuio::{inb, inl, outb, outl}; + +pub fn read32(reg: u16) -> u32 { + unsafe { inl(reg) } +} +pub fn read8(reg: u16) -> u8 { + unsafe { inb(reg) } +} + +pub fn write32(reg: u16, val: u32) { + unsafe { outl(val, reg) } +} + +pub fn write8(reg: u16, val: u8) { + unsafe { outb(val, reg) } +} diff --git a/ableos/src/prelude/mod.rs b/ableos/src/prelude/mod.rs new file mode 100644 index 0000000..77dad8e --- /dev/null +++ b/ableos/src/prelude/mod.rs @@ -0,0 +1 @@ +pub mod rust_2021; diff --git a/ableos/src/prelude/rust_2021.rs b/ableos/src/prelude/rust_2021.rs new file mode 100644 index 0000000..dc001f5 --- /dev/null +++ b/ableos/src/prelude/rust_2021.rs @@ -0,0 +1,8 @@ +pub use core::arch::asm; +pub use core::prelude::rust_2021::*; +pub use core::prelude::v1::*; + +pub use crate::print::*; +pub use log::{debug, info, trace, warn}; + +pub use alloc::{boxed::Box, format, string::*, vec, vec::*}; diff --git a/ableos/src/print.rs b/ableos/src/print.rs index 65b0552..f481b0a 100644 --- a/ableos/src/print.rs +++ b/ableos/src/print.rs @@ -19,8 +19,7 @@ impl core::fmt::Write for Stdout { } #[cfg(target_arch = "x86_64")] fn write_str(&mut self, s: &str) -> Result<(), Error> { - use crate::{experiments::absi::colorify_2, kprint}; - // colorify_2(s); + use crate::kprint; kprint!("{}", s); Ok(()) } diff --git a/ableos/src/proto_filetable/file.rs b/ableos/src/proto_filetable/file.rs index 4e0f0be..eb3889e 100644 --- a/ableos/src/proto_filetable/file.rs +++ b/ableos/src/proto_filetable/file.rs @@ -1,7 +1,5 @@ use core::fmt; -use alloc::{string::String, vec, vec::Vec}; - #[derive(Debug, PartialEq, Clone)] pub struct PathRep { pub location: FileLocations, diff --git a/ableos/src/proto_filetable/mod.rs b/ableos/src/proto_filetable/mod.rs index 51103af..030c3a5 100644 --- a/ableos/src/proto_filetable/mod.rs +++ b/ableos/src/proto_filetable/mod.rs @@ -15,11 +15,6 @@ //! The file table is not thread safe. //! The file table is not persistent. -use alloc::{ - string::{String, ToString}, - vec::Vec, -}; - use hashbrown::HashMap; pub mod contain; diff --git a/ableos/src/relib/clparse/mod.rs b/ableos/src/relib/clparse/mod.rs index c71a188..818d27b 100644 --- a/ableos/src/relib/clparse/mod.rs +++ b/ableos/src/relib/clparse/mod.rs @@ -1,9 +1,3 @@ -use alloc::{ - string::{String, ToString}, - vec, - vec::Vec, -}; - /* clparse * A simple command line parser for ableOS diff --git a/ableos/src/relib/encoding/bin.rs b/ableos/src/relib/encoding/bin.rs index 3d2b2d9..ad3cb14 100644 --- a/ableos/src/relib/encoding/bin.rs +++ b/ableos/src/relib/encoding/bin.rs @@ -1,5 +1,3 @@ -use alloc::boxed::Box; - pub struct BinCodeWriter { pub stream: Box, } diff --git a/ableos/src/relib/encoding/rle.rs b/ableos/src/relib/encoding/rle.rs index ef9f767..fcd4e8c 100644 --- a/ableos/src/relib/encoding/rle.rs +++ b/ableos/src/relib/encoding/rle.rs @@ -1,6 +1,3 @@ -use alloc::vec; -use alloc::vec::Vec; - pub fn encode(bytes: &[u8]) -> Vec { let mut encoding; diff --git a/ableos/src/relib/network/socket.rs b/ableos/src/relib/network/socket.rs index 414e0b5..9e35600 100644 --- a/ableos/src/relib/network/socket.rs +++ b/ableos/src/relib/network/socket.rs @@ -1,7 +1,3 @@ -use alloc::string::String; -use alloc::vec; -use alloc::vec::Vec; - pub type Stream = Vec; #[derive(Debug)] diff --git a/ableos/src/rhai_shell/mod.rs b/ableos/src/rhai_shell/mod.rs index d611973..cf7773f 100644 --- a/ableos/src/rhai_shell/mod.rs +++ b/ableos/src/rhai_shell/mod.rs @@ -1,5 +1,3 @@ -use alloc::vec::Vec; - pub fn rhai_shell() { let engine = engine_construction(); let mut scope = rhai::Scope::new(); @@ -32,7 +30,6 @@ lazy_static::lazy_static!( ; ); -use alloc::string::String; use rhai::Engine; use x86_64::instructions::interrupts::{disable, enable}; @@ -84,12 +81,15 @@ fn engine_construction() -> Engine { engine.register_fn("poke", poke_memory); engine.register_fn("sloop", sloop); engine.register_fn("wasm", interp); + engine.register_fn("log_dump", log_dump); + engine } /// Examine a memory pointer pub fn peek_memory(ptr: i64) -> u8 { let ptr: usize = ptr as usize; + println!(">:("); unsafe { *(ptr as *const u8) } } @@ -97,3 +97,26 @@ pub fn poke_memory(ptr: i64, val: u8) { let ptr: usize = ptr as usize; unsafe { *(ptr as *mut u8) = val } } + +pub fn log_dump() { + use crate::network::socket::SimpleSock; + use crate::relib::network::socket::Socket; + let log_socket_id = SimpleSock::grab_socket("Logger".to_string()); + match log_socket_id { + Some(mut log_socket_id) => { + let log = log_socket_id.peek(); + + match log { + crate::network::socket::SocketReturns::ReadOk(ok) => { + for x in ok.iter() { + print!("{}", *x as char); + } + } + + crate::network::socket::SocketReturns::ReadIndexOutOfBounds => todo!(), + crate::network::socket::SocketReturns::WriteOk => todo!(), + } + } + None => warn!("No socket found for Logger"), + } +} diff --git a/ableos/src/scheduler/capabilities.rs b/ableos/src/scheduler/capabilities.rs index 0ba1b87..0a00070 100644 --- a/ableos/src/scheduler/capabilities.rs +++ b/ableos/src/scheduler/capabilities.rs @@ -1,4 +1,4 @@ -use alloc::vec::Vec; +#![allow(missing_docs)] use crate::file::PathRep; diff --git a/ableos/src/scheduler/mod.rs b/ableos/src/scheduler/mod.rs index cf63235..a3b5209 100644 --- a/ableos/src/scheduler/mod.rs +++ b/ableos/src/scheduler/mod.rs @@ -1,4 +1,4 @@ -#![warn(missing_docs)] +// #![warn(missing_docs)] //! The standard ableOS scheduler named //! @@ -6,8 +6,6 @@ //! The scheduler is also responsible for choosing the priority of a process. //! The scheduler is responsible for choosing which process to execute next. -use alloc::{string::ToString, vec::Vec}; - pub mod capabilities; pub mod proc; diff --git a/ableos/src/scheduler/new_sched.rs b/ableos/src/scheduler/new_sched.rs index 1192c3e..cb68144 100644 --- a/ableos/src/scheduler/new_sched.rs +++ b/ableos/src/scheduler/new_sched.rs @@ -1,5 +1,3 @@ -use alloc::{string::ToString, vec::Vec}; - use crate::{ capabilities::Capabilities, kmain::generate_process_pass, diff --git a/ableos/src/scheduler/proc.rs b/ableos/src/scheduler/proc.rs index 1d3955a..ee135a8 100644 --- a/ableos/src/scheduler/proc.rs +++ b/ableos/src/scheduler/proc.rs @@ -1,7 +1,5 @@ //! Process definition and general utilities surrounding them -use alloc::string::String; - use super::{capabilities::Capabilities, Priority}; /// Process Identification diff --git a/ableos/src/scratchpad.rs b/ableos/src/scratchpad.rs index 6062b35..768a0b4 100644 --- a/ableos/src/scratchpad.rs +++ b/ableos/src/scratchpad.rs @@ -1,63 +1,19 @@ -use { - crate::{ - devices::{ - id::match_vendor, - pci_inner::{DeviceClass, PciIO}, - Device, DEVICE_TABLE, - }, - rhai_shell::rhai_shell, - }, - alloc::{format, vec::Vec}, -}; +use acpi::AcpiTables; + +use crate::{kmain::AcpiStruct, rhai_shell::rhai_shell}; /// Experimental scratchpad for testing. pub fn scratchpad() { - let mut dev_list = Vec::new(); - let bus_scan; - unsafe { - bus_scan = pci::scan_bus(&PciIO {}, pci::CSpaceAccessMethod::IO); - } - for dev in bus_scan { - dev_list.push(dev); - } - - let device_table = &mut *DEVICE_TABLE.lock(); - - for x in dev_list { - let vendor_id_name = match_vendor(x.id.vendor_id); - use crate::devices::id::Vendor::*; - match vendor_id_name { - Unknown => {} - Ati => unsafe { - x.cspace_access_method.write32(&PciIO {}, x.loc, 0x0260, 1); - - x.cspace_access_method - .write32(&PciIO {}, x.loc, 0x0230, 0x00_ff_0000); - - // 0x0260 - }, - } - - let device_name = format!( - "{:?}-{:?}-{}", - vendor_id_name, - DeviceClass::from_u8(x.id.class), - x.id.device_id - ); - // println!("{}", device_name); - - device_table - .devices - .insert(device_name.clone(), Device::Pci(x)); - } - - /* - let message = "Hello, world!"; - - let xyz = ProcessMessage::new_from_string(PID(123), PID(0), message.to_string()); - - print!("{:?}", xyz); - */ - + pci_fun(); rhai_shell(); } + +pub fn pci_fun() {} + +pub fn acpi() { + let acpi_handler = AcpiStruct {}; + let _table; + unsafe { + _table = AcpiTables::search_for_rsdp_bios(acpi_handler); + } +} diff --git a/ableos/src/tests.rs b/ableos/src/tests.rs index 043e7ba..07ce440 100644 --- a/ableos/src/tests.rs +++ b/ableos/src/tests.rs @@ -1,8 +1,3 @@ -use alloc::{ - format, - string::{String, ToString}, - vec, -}; use picorand::PicoRandGenerate; use rkyv::{ser::serializers::AllocSerializer, Deserialize}; use shadeable::pixel_format::from_vga_16; @@ -10,14 +5,14 @@ use vga::colors::Color16; use y_compositor_protocol::Version; use crate::{ - kmain::BOOT_CONF, + kmain::KERNEL_CONF, network::socket::{SimpleSock, Socket, SocketReturns}, - num_to_vga16, vga_e, VgaBuffer, SCREEN_BUFFER, + num_to_vga16, VgaBuffer, SCREEN_BUFFER, }; use kernel::TICK; pub fn run_tests() { - if BOOT_CONF.run_tests { + if KERNEL_CONF.tests.run_tests { // quick and dirty testing framework screen_writer_test(); socket_test(); @@ -26,11 +21,11 @@ pub fn run_tests() { socket_test_rng(); } - if BOOT_CONF.run_demos { + if KERNEL_CONF.tests.run_demos { graphics_api_demo(); } - if BOOT_CONF.run_shader_tests { + if KERNEL_CONF.tests.run_shader_tests { shader_tests(); } } diff --git a/ableos/src/vga_e.rs b/ableos/src/vga_e.rs index 3f333ba..440be28 100644 --- a/ableos/src/vga_e.rs +++ b/ableos/src/vga_e.rs @@ -1,13 +1,6 @@ -use shadeable::pixel_format::Rgba64; - -use crate::SCREEN_BUFFER; - -use { - ab_glyph::{Font, FontRef, Glyph}, - vga::{ - colors::Color16, - writers::{Graphics640x480x16, GraphicsWriter}, - }, +use vga::{ + colors::Color16, + writers::{Graphics640x480x16, GraphicsWriter}, }; lazy_static::lazy_static! { diff --git a/ableos/src/wasm/mod.rs b/ableos/src/wasm/mod.rs index 58c4ca0..9d77b9f 100644 --- a/ableos/src/wasm/mod.rs +++ b/ableos/src/wasm/mod.rs @@ -1,5 +1,3 @@ -use alloc::vec::Vec; - /// `NULL a s m` as an array of 4 bytes pub const WASM_BINARY_MAGIC: [u8; 4] = [0x00, 0x61, 0x73, 0x6d]; /// `1 0 0 0` as an array of 4 bytes diff --git a/ableos/src/wasm_jumploader/host_functions.rs b/ableos/src/wasm_jumploader/host_functions.rs index 13a7d08..52140c3 100644 --- a/ableos/src/wasm_jumploader/host_functions.rs +++ b/ableos/src/wasm_jumploader/host_functions.rs @@ -1,4 +1,3 @@ -use alloc::format; use wasmi::{ Error, Externals, FuncInstance, FuncRef, ModuleImportResolver, RuntimeArgs, RuntimeValue, Signature, Trap, ValueType, @@ -54,7 +53,6 @@ impl HostExternals { ADD_FUNC_INDEX => (&[ValueType::I32, ValueType::I32], Some(ValueType::I32)), SEND_SIGNAL_INDEX => (&[ValueType::I32, ValueType::I32], Some(ValueType::I32)), GET_TIME_INDEX => (&[], Some(ValueType::I32)), - _ => return false, }; signature.params() == params && signature.return_type() == ret_ty diff --git a/ableos/src/wasm_jumploader/mod.rs b/ableos/src/wasm_jumploader/mod.rs index e379b01..02c06a4 100644 --- a/ableos/src/wasm_jumploader/mod.rs +++ b/ableos/src/wasm_jumploader/mod.rs @@ -3,7 +3,6 @@ pub mod host_functions; extern crate wasmi; // extern crate wabt; -use alloc::vec::Vec; use genfs::{Fs, OpenOptions}; use wasmi::{ImportsBuilder, ModuleInstance}; diff --git a/kernel/.cargo/config.toml b/kernel/.cargo/config.toml new file mode 100644 index 0000000..0277493 --- /dev/null +++ b/kernel/.cargo/config.toml @@ -0,0 +1,2 @@ +[build] +target = "./json_targets/x86_64-ableos.json" diff --git a/kernel/Cargo.toml b/kernel/Cargo.toml index d2f8b15..7c1c003 100644 --- a/kernel/Cargo.toml +++ b/kernel/Cargo.toml @@ -5,6 +5,8 @@ version = "0.1.2" [dependencies] +log = "0.4.14" + [dependencies.lazy_static] version = "1.4.0" default-features = false diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index 0d4f130..7ed790e 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -1,5 +1,7 @@ #![deny(missing_docs)] #![no_std] +#![feature(prelude_import)] + //! The ableOS kernel. pub mod device_interface; diff --git a/kernel/src/panic.rs b/kernel/src/panic.rs index 0f1323a..74602f6 100644 --- a/kernel/src/panic.rs +++ b/kernel/src/panic.rs @@ -1,8 +1,12 @@ //! - use core::panic::PanicInfo; +// #[macro_use] +// use log; + #[panic_handler] fn panic_handler(_info: &PanicInfo) -> ! { + // error!("{}", _info); + loop {} } diff --git a/shadeable/src/engine_internals.rs b/shadeable/src/engine_internals.rs index 1013c87..960a254 100644 --- a/shadeable/src/engine_internals.rs +++ b/shadeable/src/engine_internals.rs @@ -1,5 +1,5 @@ use crate::pixel_format::{get_a, get_b, get_g, get_r, set_a, set_b, set_g, set_r}; -use crate::pixel_format::{new_rgba64, rgba_div, Rgba64}; +use crate::pixel_format::{rgba_div, Rgba64}; use log::{debug, info}; use rhai::Engine; @@ -7,13 +7,13 @@ use rhai::Engine; pub fn engine_startup() -> Engine { let mut engine = Engine::new(); - // engine.on_print(|x| info!("PRINTED FROM SHADER: {}", x)); + engine.on_print(|x| info!("PRINTED FROM SHADER: {}", x)); // Any function or closure that takes a '&str', an 'Option<&str>' and a 'Position' argument // can be used to override 'debug'. engine.on_debug(|x, src, pos| { let src = src.unwrap_or("unknown"); - // debug!("SHADER DEBUG of {} at {:?}: {}", src, pos, x) + debug!("SHADER DEBUG of {} at {:?}: {}", src, pos, x); }); engine