Change io crate & add a small shell
This commit is contained in:
39
src/main.rs
39
src/main.rs
@@ -5,7 +5,7 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
// #![warn(clippy::pedantic)]
|
||||
#![allow(static_mut_refs)]
|
||||
#![allow(static_mut_refs, internal_features)]
|
||||
#![feature(
|
||||
riscv_ext_intrinsics,
|
||||
str_from_raw_parts,
|
||||
@@ -13,14 +13,13 @@
|
||||
derive_const,
|
||||
const_cmp,
|
||||
const_trait_impl,
|
||||
trait_alias
|
||||
trait_alias,
|
||||
prelude_import,
|
||||
slice_index_methods
|
||||
)]
|
||||
|
||||
use core::sync::atomic::AtomicBool;
|
||||
|
||||
use alloc::boxed::Box;
|
||||
use embedded_alloc::LlffHeap as Heap;
|
||||
use log::info;
|
||||
|
||||
use crate::{
|
||||
drivers::{keyboard::KBD_DRIVER, mouse::MOUSE_DRIVER},
|
||||
@@ -28,12 +27,16 @@ use crate::{
|
||||
pci::scan_virtio_devices,
|
||||
riscv::enable_supervisor_interrupt,
|
||||
scheduler::{SCHEDULER, idle},
|
||||
user::{proc2, test},
|
||||
vga::Vga,
|
||||
virtio::input::init_plic_pci,
|
||||
virtual_fs::init_file_system,
|
||||
};
|
||||
|
||||
mod prelude;
|
||||
#[allow(unused_imports)]
|
||||
#[prelude_import]
|
||||
pub use prelude::*;
|
||||
|
||||
extern crate alloc;
|
||||
mod boot;
|
||||
mod critical_section;
|
||||
@@ -55,7 +58,6 @@ mod syscall;
|
||||
mod time;
|
||||
mod tty;
|
||||
mod uart;
|
||||
mod user;
|
||||
mod vga;
|
||||
mod virtio;
|
||||
mod virtual_console;
|
||||
@@ -83,23 +85,6 @@ pub extern "C" fn supervisor_mode_entry() {
|
||||
SCHEDULER.lock().init();
|
||||
}
|
||||
|
||||
info!("Hello World !");
|
||||
// unsafe { Vga.draw_string(10, 10, "Hello World !", Color::WHITE, Color::BLACK) };
|
||||
|
||||
// let binding = Box::leak(Box::new(["coucou".as_bytes()]));
|
||||
SCHEDULER
|
||||
.lock()
|
||||
.create_process(Box::new(test), "proc1", 0, core::ptr::null());
|
||||
SCHEDULER
|
||||
.lock()
|
||||
.create_process(Box::new(proc2), "proc2", 0, core::ptr::null());
|
||||
|
||||
SCHEDULER
|
||||
.lock()
|
||||
.create_process_from_file("/usr/bin/test_pic", 0, core::ptr::null());
|
||||
|
||||
enable_supervisor_interrupt();
|
||||
|
||||
unsafe {
|
||||
let (pci_keyboard, pci_mouse) = scan_virtio_devices();
|
||||
let (pci_keyboard, pci_mouse) = (pci_keyboard.unwrap(), pci_mouse.unwrap());
|
||||
@@ -121,5 +106,11 @@ pub extern "C" fn supervisor_mode_entry() {
|
||||
init_plic_pci(pci_keyboard.irq);
|
||||
init_plic_pci(pci_mouse.irq);
|
||||
}
|
||||
|
||||
SCHEDULER
|
||||
.lock()
|
||||
.create_process_from_file("/usr/bin/agetty", 0, core::ptr::null());
|
||||
enable_supervisor_interrupt();
|
||||
|
||||
idle(0, core::ptr::null());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user