forked from koniifer/ableos
Merge pull request '🫡 Major Cleanup' (#19) from theoddgarlic/ableos:major-cleanup into master
Reviewed-on: https://git.ablecorp.us:443/able/ableos/pulls/19
This commit is contained in:
commit
6ba5f35654
11
.gitignore
vendored
11
.gitignore
vendored
|
@ -1,11 +1,6 @@
|
||||||
repbuild/target
|
userland/root_fs/mnt/
|
||||||
ableos/target
|
|
||||||
aos_wasm_stress_test/target
|
|
||||||
facepalm/target
|
|
||||||
shadeable/target
|
|
||||||
userland/*/target
|
|
||||||
kernel/target
|
|
||||||
userland/root_fs/mnt/*
|
|
||||||
target/
|
target/
|
||||||
.gdb_history
|
.gdb_history
|
||||||
!*/.gitkeep
|
!*/.gitkeep
|
||||||
|
__pycache__/
|
||||||
|
debug.log
|
||||||
|
|
Binary file not shown.
|
@ -30,7 +30,7 @@ run-args = [
|
||||||
|
|
||||||
|
|
||||||
"-hdb",
|
"-hdb",
|
||||||
"../img.ext2",
|
"../userland/root_fs/ext2.img",
|
||||||
|
|
||||||
|
|
||||||
# "-qmp",
|
# "-qmp",
|
||||||
|
|
Binary file not shown.
|
@ -10,8 +10,8 @@ const BLOCK_SIZE: usize = 1024;
|
||||||
const BLOCK_COUNT: usize = 512;
|
const BLOCK_COUNT: usize = 512;
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub struct MemoryRegion {
|
pub struct MemoryRegion {
|
||||||
start: usize,
|
_start: usize,
|
||||||
end: usize,
|
_end: usize,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub struct AAlloc {
|
pub struct AAlloc {
|
||||||
|
@ -36,8 +36,8 @@ impl AAlloc {
|
||||||
};
|
};
|
||||||
|
|
||||||
aalloc.add_region(MemoryRegion {
|
aalloc.add_region(MemoryRegion {
|
||||||
start: 0x00100000,
|
_start: 0x00100000,
|
||||||
end: 0x00EFFFFF,
|
_end: 0x00EFFFFF,
|
||||||
});
|
});
|
||||||
debug!("{}", aalloc);
|
debug!("{}", aalloc);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// #![allow(clippy::print_literal)]
|
// #![allow(clippy::print_literal)]
|
||||||
use super::{drivers::serial, gdt, interrupts};
|
use super::{gdt, interrupts};
|
||||||
use crate::{logger, serial_println, TERM};
|
use crate::{logger, serial_println, TERM};
|
||||||
|
|
||||||
/// x86_64 initialization
|
/// x86_64 initialization
|
||||||
|
|
|
@ -1,17 +1,10 @@
|
||||||
use core::panic::PanicInfo;
|
use core::panic::PanicInfo;
|
||||||
|
|
||||||
use crate::{
|
use crate::{arch::gdt, rhai_shell::KEYBUFF, VgaBuffer, SCREEN_BUFFER};
|
||||||
arch::gdt, image::mono_bitmap::bruh, kernel_state::KERNEL_STATE, print, println,
|
|
||||||
rhai_shell::KEYBUFF, VgaBuffer, SCREEN_BUFFER,
|
|
||||||
};
|
|
||||||
use cpuio::outb;
|
use cpuio::outb;
|
||||||
use pic8259::ChainedPics;
|
use pic8259::ChainedPics;
|
||||||
use qrcode::{
|
use qrcode::QrCode;
|
||||||
render::{string, unicode},
|
|
||||||
QrCode,
|
|
||||||
};
|
|
||||||
use spin::Lazy;
|
use spin::Lazy;
|
||||||
use vga::colors::Color16;
|
|
||||||
use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};
|
use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};
|
||||||
|
|
||||||
use super::sloop;
|
use super::sloop;
|
||||||
|
@ -156,8 +149,7 @@ extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: InterruptStac
|
||||||
// warn!("ArrowKeys are unsupported currently");
|
// warn!("ArrowKeys are unsupported currently");
|
||||||
}
|
}
|
||||||
|
|
||||||
kc => {
|
_kc => {
|
||||||
|
|
||||||
// trace!("Unprintable key: {kc:?}"),
|
// trace!("Unprintable key: {kc:?}"),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,12 +1,6 @@
|
||||||
use core::fmt::Display;
|
|
||||||
|
|
||||||
use alloc::collections::VecDeque;
|
use alloc::collections::VecDeque;
|
||||||
use kernel::proccess::PID;
|
|
||||||
|
|
||||||
use crate::{arch::generate_process_pass, handle::Handle};
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|
||||||
pub struct ChannelPermission {
|
pub struct ChannelPermission {
|
||||||
pub owner: bool,
|
pub owner: bool,
|
||||||
pub producer: bool,
|
pub producer: bool,
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
// Copyright (c) 2021 trashbyte
|
// Copyright (c) 2021 trashbyte
|
||||||
// See LICENSE.txt for full license
|
// See LICENSE.txt for full license
|
||||||
|
|
||||||
#![feature(asm)]
|
|
||||||
|
|
||||||
extern crate alloc;
|
extern crate alloc;
|
||||||
use alloc::{format, string::String, vec::Vec};
|
use alloc::{format, string::String, vec::Vec};
|
||||||
use core::fmt::{Display, Error, Formatter};
|
use core::fmt::{Display, Error, Formatter};
|
||||||
|
@ -175,10 +173,10 @@ unsafe fn pci_config_read(bus: u8, device: u8, func: u8, offset: u8) -> u32 {
|
||||||
((bus << 16) | (device << 11) | (func << 8) | (offset & 0xfc) | 0x80000000) as u32;
|
((bus << 16) | (device << 11) | (func << 8) | (offset & 0xfc) | 0x80000000) as u32;
|
||||||
|
|
||||||
// write address
|
// write address
|
||||||
Port::<u32>::new(0xCF8).write(address);
|
Port::<u32>::new(0xCF8).write(address);
|
||||||
|
|
||||||
// read data
|
// read data
|
||||||
Port::<u32>::new(0xCFC).read()
|
Port::<u32>::new(0xCFC).read()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
|
@ -192,11 +190,10 @@ unsafe fn pci_config_write(bus: u8, device: u8, func: u8, offset: u8, value: u32
|
||||||
((bus << 16) | (device << 11) | (func << 8) | (offset & 0xfc) | 0x80000000) as u32;
|
((bus << 16) | (device << 11) | (func << 8) | (offset & 0xfc) | 0x80000000) as u32;
|
||||||
|
|
||||||
// write address
|
// write address
|
||||||
Port::<u32>::new(0xCF8).write(address);
|
Port::<u32>::new(0xCF8).write(address);
|
||||||
|
|
||||||
// write data
|
// write data
|
||||||
Port::<u32>::new(0xCFC).write(value);
|
Port::<u32>::new(0xCFC).write(value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_header_type(bus: u8, device: u8, function: u8) -> u8 {
|
fn get_header_type(bus: u8, device: u8, function: u8) -> u8 {
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
//! A handle is a u128 with a set of permissions
|
//! A handle is a u128 with a set of permissions
|
||||||
//! and a resource connected to it
|
//! and a resource connected to it
|
||||||
|
|
||||||
use crate::Path;
|
use crate::arch::generate_process_pass;
|
||||||
use crate::{arch::generate_process_pass, channels::Channel};
|
|
||||||
use core::fmt::Display;
|
use core::fmt::Display;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct BinaryData {
|
pub struct BinaryData {
|
||||||
name: String,
|
_name: String,
|
||||||
data: Vec<u8>,
|
_data: Vec<u8>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Eq, Hash, PartialEq, Clone, Copy)]
|
#[derive(Debug, Eq, Hash, PartialEq, Clone, Copy)]
|
||||||
|
|
|
@ -1,12 +1,8 @@
|
||||||
use crate::arch::interrupts::InterruptIndex;
|
use crate::arch::interrupts::InterruptIndex;
|
||||||
use crate::arch::interrupts::PICS;
|
use crate::arch::interrupts::PICS;
|
||||||
use crate::ps2_mouse::{Mouse, MouseState};
|
use crate::ps2_mouse::{Mouse, MouseState};
|
||||||
use crate::vga_e::VGAE;
|
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use log::info;
|
|
||||||
use spin::Mutex;
|
use spin::Mutex;
|
||||||
use vga::colors::Color16;
|
|
||||||
use vga::writers::GraphicsWriter;
|
|
||||||
use x86_64::instructions::port::PortReadOnly;
|
use x86_64::instructions::port::PortReadOnly;
|
||||||
use x86_64::structures::idt::InterruptStackFrame;
|
use x86_64::structures::idt::InterruptStackFrame;
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ pub struct ChannelPermission {
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Channel {
|
pub struct Channel {
|
||||||
pub public: bool,
|
pub public: bool,
|
||||||
name: String,
|
_name: String,
|
||||||
inner: VecDeque<ChannelMessage>,
|
inner: VecDeque<ChannelMessage>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ impl Channel {
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
public,
|
public,
|
||||||
name: name.into(),
|
_name: name.into(),
|
||||||
inner: deq,
|
inner: deq,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +1,14 @@
|
||||||
#![allow(clippy::empty_loop)]
|
#![allow(clippy::empty_loop)]
|
||||||
|
|
||||||
use core::sync::atomic::{AtomicU64, Ordering};
|
use core::sync::atomic::AtomicU64;
|
||||||
|
|
||||||
use crate::arch::drivers::sysinfo::master;
|
use crate::arch::{drivers::sysinfo::master, init, sloop};
|
||||||
use crate::ipc::channel::ChannelMessage;
|
use crate::relib::network::socket::{SimpleSock, Socket};
|
||||||
use crate::ipc::{self, IPC};
|
|
||||||
use crate::scheduler::SCHEDULER;
|
|
||||||
use crate::time::fetch_time;
|
|
||||||
use crate::{
|
use crate::{
|
||||||
arch::{init, sloop},
|
boot_conf::KernelConfig, scheduler::SCHEDULER, scratchpad, systeminfo::RELEASE_TYPE, TERM,
|
||||||
relib::network::socket::{SimpleSock, Socket},
|
|
||||||
scratchpad,
|
|
||||||
};
|
};
|
||||||
use crate::{boot_conf::KernelConfig, systeminfo::RELEASE_TYPE};
|
|
||||||
use crate::{hardware, wasm_jumploader, SectionType, TERM};
|
|
||||||
use genfs::{Fs, OpenOptions};
|
|
||||||
use kernel::KERNEL_VERSION;
|
use kernel::KERNEL_VERSION;
|
||||||
use libwasm::syscalls::time_calls::get_time;
|
|
||||||
use qrcode::render::unicode;
|
|
||||||
use qrcode::QrCode;
|
|
||||||
use spin::Lazy;
|
use spin::Lazy;
|
||||||
use x86_64::instructions::interrupts::{disable, enable};
|
|
||||||
|
|
||||||
// TODO: Change this structure to allow for multiple cores loaded
|
// TODO: Change this structure to allow for multiple cores loaded
|
||||||
pub static KERNEL_CONF: Lazy<KernelConfig> = Lazy::new(KernelConfig::new);
|
pub static KERNEL_CONF: Lazy<KernelConfig> = Lazy::new(KernelConfig::new);
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
use crate::kmain::KERNEL_CONF;
|
use crate::{kmain::KERNEL_CONF, time::fetch_time};
|
||||||
use crate::network::socket::{SimpleSock, Socket};
|
use lliw::Fg;
|
||||||
use crate::time::fetch_time;
|
use log::{Level, LevelFilter, Metadata, Record, SetLoggerError};
|
||||||
use alloc::borrow::ToOwned;
|
|
||||||
use lliw::{Fg, Reset};
|
|
||||||
use log::{Level, Metadata, Record};
|
|
||||||
use log::{LevelFilter, SetLoggerError};
|
|
||||||
|
|
||||||
static LOGGER: SimpleLogger = SimpleLogger;
|
static LOGGER: SimpleLogger = SimpleLogger;
|
||||||
// TODO: Rebuild this to take advantage of sockets
|
// TODO: Rebuild this to take advantage of sockets
|
||||||
|
@ -19,7 +15,6 @@ impl log::Log for SimpleLogger {
|
||||||
x86_64::instructions::interrupts::without_interrupts(|| {
|
x86_64::instructions::interrupts::without_interrupts(|| {
|
||||||
if self.enabled(record.metadata()) {
|
if self.enabled(record.metadata()) {
|
||||||
let time_float = fetch_time();
|
let time_float = fetch_time();
|
||||||
use log::Level::*;
|
|
||||||
use Fg::*;
|
use Fg::*;
|
||||||
|
|
||||||
let color = match record.level() {
|
let color = match record.level() {
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
use crate::{
|
use crate::relib::encoding::rle::{decode, encode};
|
||||||
graphics::SCREEN_BUFFER,
|
use crate::vga_e::VGAE;
|
||||||
relib::encoding::rle::{decode, encode},
|
|
||||||
vga_e::VGAE,
|
|
||||||
VgaBuffer,
|
|
||||||
};
|
|
||||||
use shadeable::pixel_format::new_rgba64;
|
|
||||||
use vga::writers::GraphicsWriter;
|
use vga::writers::GraphicsWriter;
|
||||||
|
|
||||||
pub fn bruh() {
|
pub fn bruh() {
|
||||||
|
|
|
@ -1,12 +1,6 @@
|
||||||
use crate::arch::drivers::sysinfo::master;
|
use crate::arch::{drivers::sysinfo::master, shutdown, sloop};
|
||||||
use crate::filesystem::FILE_SYSTEM;
|
use crate::systeminfo::{KERNEL_VERSION, RELEASE_TYPE};
|
||||||
use crate::time::fetch_time;
|
use crate::{filesystem::FILE_SYSTEM, time::fetch_time, KERNEL_STATE};
|
||||||
use crate::wasm_jumploader::interp;
|
|
||||||
use crate::{
|
|
||||||
arch::{shutdown, sloop},
|
|
||||||
systeminfo::{KERNEL_VERSION, RELEASE_TYPE},
|
|
||||||
KERNEL_STATE,
|
|
||||||
};
|
|
||||||
use genfs::{Fs, OpenOptions};
|
use genfs::{Fs, OpenOptions};
|
||||||
use kernel::allocator::ALLOCATOR;
|
use kernel::allocator::ALLOCATOR;
|
||||||
use rhai::Engine;
|
use rhai::Engine;
|
||||||
|
|
|
@ -1,34 +1,15 @@
|
||||||
use core::fmt::Error;
|
|
||||||
|
|
||||||
// use crate::aalloc::aalloc;
|
|
||||||
use crate::arch::interrupts::{reset_pit_for_cpu, set_pit_2};
|
use crate::arch::interrupts::{reset_pit_for_cpu, set_pit_2};
|
||||||
use crate::arch::{generate_process_pass, shutdown};
|
use crate::{
|
||||||
use crate::channels::{Channel, ChannelPermission};
|
arch::shutdown, filesystem::FILE_SYSTEM, rhai_shell::KEYBUFF, vterm::Term,
|
||||||
use crate::devices::pci;
|
wasm_jumploader::run_program,
|
||||||
use crate::filesystem::FILE_SYSTEM;
|
};
|
||||||
use crate::handle::Handle;
|
|
||||||
use crate::image::mono_bitmap::bruh;
|
|
||||||
use crate::ipc::IPC;
|
|
||||||
use crate::rhai_shell::shell;
|
|
||||||
use crate::rhai_shell::KEYBUFF;
|
|
||||||
use crate::unicode_utils::LAMBDA;
|
|
||||||
use crate::vterm::Term;
|
|
||||||
use crate::wasm_jumploader::run_program;
|
|
||||||
use crate::{vgai, SCREEN_BUFFER};
|
|
||||||
use acpi::{AcpiTables, PlatformInfo};
|
use acpi::{AcpiTables, PlatformInfo};
|
||||||
use alloc::collections::{vec_deque, VecDeque};
|
use cpuio::{inb, outb};
|
||||||
use cpuio::inb;
|
|
||||||
use cpuio::outb;
|
|
||||||
use ext2::fs::sync::{DirectoryEntry, Synced};
|
use ext2::fs::sync::{DirectoryEntry, Synced};
|
||||||
use ext2::fs::Ext2;
|
use ext2::{fs::Ext2, sector::Size1024};
|
||||||
use ext2::sector::Size1024;
|
use genfs::{Fs, OpenOptions};
|
||||||
use ext2::sys::inode;
|
|
||||||
use genfs::OpenOptions;
|
|
||||||
use genfs::{DirEntry, Fs};
|
|
||||||
use kernel::proccess::PID;
|
|
||||||
use kernel::software_int;
|
|
||||||
use spin::Lazy;
|
use spin::Lazy;
|
||||||
use vga::writers::GraphicsWriter;
|
|
||||||
|
|
||||||
// TODO: move to a better place
|
// TODO: move to a better place
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||||
|
@ -49,8 +30,8 @@ impl acpi::AcpiHandler for AcpiStruct {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub static TERM: Lazy<spin::Mutex<Term>> = Lazy::new(|| spin::Mutex::new(Term::new()));
|
pub static TERM: Lazy<spin::Mutex<Term>> = Lazy::new(|| spin::Mutex::new(Term::new()));
|
||||||
#[derive(Debug)]
|
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
pub struct Path {
|
pub struct Path {
|
||||||
pub path: Vec<String>,
|
pub path: Vec<String>,
|
||||||
}
|
}
|
||||||
|
@ -156,10 +137,12 @@ pub fn command_parser(user: String, command: String) {
|
||||||
let bin_name = iter.next().unwrap();
|
let bin_name = iter.next().unwrap();
|
||||||
|
|
||||||
match bin_name {
|
match bin_name {
|
||||||
"rhai" => {
|
// note: able asked for rhaish to stay in the repo but will be removed
|
||||||
drop(fs);
|
// in the future so just comment it out for now
|
||||||
shell();
|
// "rhai" => {
|
||||||
}
|
// drop(fs);
|
||||||
|
// shell();
|
||||||
|
// }
|
||||||
"list" | "ls" => {
|
"list" | "ls" => {
|
||||||
for dir_entry in list_files_in_dir(fs, current_path) {
|
for dir_entry in list_files_in_dir(fs, current_path) {
|
||||||
println!("{}", dir_entry.file_name_string());
|
println!("{}", dir_entry.file_name_string());
|
||||||
|
@ -172,7 +155,7 @@ pub fn command_parser(user: String, command: String) {
|
||||||
options.read(true);
|
options.read(true);
|
||||||
let file = {
|
let file = {
|
||||||
let path = format!("/home/{user}/bins/{bin_name}.wasm");
|
let path = format!("/home/{user}/bins/{bin_name}.wasm");
|
||||||
if let Ok(file ) = fs.open(&path.as_bytes(), &options) {
|
if let Ok(file) = fs.open(&path.as_bytes(), &options) {
|
||||||
file
|
file
|
||||||
} else {
|
} else {
|
||||||
let path = format!("/shared/bins/{bin_name}.wasm");
|
let path = format!("/shared/bins/{bin_name}.wasm");
|
||||||
|
@ -213,7 +196,7 @@ pub fn sound(n_frequency: u32) {
|
||||||
|
|
||||||
set_pit_2(div);
|
set_pit_2(div);
|
||||||
|
|
||||||
//And play the sound using the PC speaker
|
// And play the sound using the PC speaker
|
||||||
tmp = inb(0x61);
|
tmp = inb(0x61);
|
||||||
if tmp != (tmp | 3) {
|
if tmp != (tmp | 3) {
|
||||||
outb(tmp | 3, 0x61);
|
outb(tmp | 3, 0x61);
|
||||||
|
@ -229,7 +212,7 @@ pub fn sound_off() {
|
||||||
reset_pit_for_cpu();
|
reset_pit_for_cpu();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn list_files_in_dir(fs: &Synced<Ext2<Size1024, Vec<u8>>>, path: &[u8]) -> Vec<DirectoryEntry> {
|
pub fn list_files_in_dir(fs: &Synced<Ext2<Size1024, Vec<u8>>>, _path: &[u8]) -> Vec<DirectoryEntry> {
|
||||||
let mut entry_list = vec![];
|
let mut entry_list = vec![];
|
||||||
|
|
||||||
let dirr = fs.read_dir(b"/").unwrap();
|
let dirr = fs.read_dir(b"/").unwrap();
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#![allow(dead_code)]
|
||||||
|
|
||||||
pub const CONSOLE: &str = "\u{E795}";
|
pub const CONSOLE: &str = "\u{E795}";
|
||||||
pub const POWER_SIGN: &str = "\u{23FB}";
|
pub const POWER_SIGN: &str = "\u{23FB}";
|
||||||
pub const LAMBDA: &str = "λ";
|
pub const LAMBDA: &str = "λ";
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
use vga::{
|
use vga::{colors::Color16, writers::Graphics640x480x16};
|
||||||
colors::Color16,
|
|
||||||
writers::{Graphics640x480x16, GraphicsWriter},
|
|
||||||
};
|
|
||||||
|
|
||||||
pub static VGAE_BUFF_OFFSET_X: spin::Mutex<u8> = spin::Mutex::new(0);
|
pub static VGAE_BUFF_OFFSET_X: spin::Mutex<u8> = spin::Mutex::new(0);
|
||||||
pub static VGAE_BUFF_OFFSET_Y: spin::Mutex<u8> = spin::Mutex::new(0);
|
pub static VGAE_BUFF_OFFSET_Y: spin::Mutex<u8> = spin::Mutex::new(0);
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
use vga::writers::{Graphics640x480x16, GraphicsWriter};
|
|
||||||
|
|
||||||
pub enum Color {
|
pub enum Color {
|
||||||
/// Represents the color `Black (0x0)`.
|
/// Represents the color `Black (0x0)`.
|
||||||
Black = 0x0,
|
Black = 0x0,
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
//! <https://docs.oasis-open.org/virtio/virtio/v1.1/csprd01/virtio-v1.1-csprd01.html#x1-20001>
|
//! <https://docs.oasis-open.org/virtio/virtio/v1.1/csprd01/virtio-v1.1-csprd01.html#x1-20001>
|
||||||
|
|
||||||
pub struct VirtioDevice {
|
pub struct VirtioDevice {
|
||||||
status: VirtioDeviceStatus,
|
_status: VirtioDeviceStatus,
|
||||||
}
|
}
|
||||||
|
|
||||||
use crate::devices::pci::PciDeviceInfo;
|
use crate::devices::pci::PciDeviceInfo;
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
|
use crate::vga_e::VGAE;
|
||||||
use vga::{colors::Color16, writers::GraphicsWriter};
|
use vga::{colors::Color16, writers::GraphicsWriter};
|
||||||
|
|
||||||
use crate::{
|
|
||||||
hardware::{MOUSE, _MOUSE},
|
|
||||||
vga_e::VGAE,
|
|
||||||
};
|
|
||||||
const TERM_MINUS_ONE_LINE: usize = 4720;
|
const TERM_MINUS_ONE_LINE: usize = 4720;
|
||||||
const CURSOR_COLOR: Color16 = Color16::Cyan;
|
// const CURSOR_COLOR: Color16 = Color16::Cyan;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Term {
|
pub struct Term {
|
||||||
|
|
|
@ -44,8 +44,8 @@ pub enum SectionType {
|
||||||
|
|
||||||
pub struct Section {
|
pub struct Section {
|
||||||
/// The section type
|
/// The section type
|
||||||
stype: SectionType,
|
_stype: SectionType,
|
||||||
section_size: u8,
|
_section_size: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A wasm type
|
/// A wasm type
|
||||||
|
|
|
@ -2,9 +2,7 @@ pub mod host_functions;
|
||||||
|
|
||||||
use crate::{filesystem::FILE_SYSTEM, wasm_jumploader::host_functions::HostExternals};
|
use crate::{filesystem::FILE_SYSTEM, wasm_jumploader::host_functions::HostExternals};
|
||||||
use genfs::{Fs, OpenOptions};
|
use genfs::{Fs, OpenOptions};
|
||||||
use wasmi::{
|
use wasmi::{ImportsBuilder, ModuleInstance};
|
||||||
ImportsBuilder, MemoryDescriptor, ModuleImportResolver, ModuleInstance, StackRecycler,
|
|
||||||
};
|
|
||||||
|
|
||||||
pub fn interp() {
|
pub fn interp() {
|
||||||
trace!("Interpreting...");
|
trace!("Interpreting...");
|
||||||
|
@ -114,13 +112,9 @@ pub fn run_program(program: &[u8]) {
|
||||||
|
|
||||||
// .expect("failed to instantiate wasm module")
|
// .expect("failed to instantiate wasm module")
|
||||||
|
|
||||||
use wasmi::GlobalRef;
|
|
||||||
match instance {
|
match instance {
|
||||||
Ok(inst) => {
|
Ok(inst) => {
|
||||||
let mut instance = inst.assert_no_start();
|
let instance = inst.assert_no_start();
|
||||||
|
|
||||||
let abc = instance.globals().capacity();
|
|
||||||
|
|
||||||
let mut is_driver = false;
|
let mut is_driver = false;
|
||||||
let _is_program = false;
|
let _is_program = false;
|
||||||
let mut has_driver_entry = false;
|
let mut has_driver_entry = false;
|
||||||
|
|
BIN
ext2-rs/ext2.img
BIN
ext2-rs/ext2.img
Binary file not shown.
|
@ -3,7 +3,6 @@
|
||||||
#![deny(missing_docs)]
|
#![deny(missing_docs)]
|
||||||
#![feature(
|
#![feature(
|
||||||
min_specialization,
|
min_specialization,
|
||||||
const_fn_trait_bound,
|
|
||||||
step_trait,
|
step_trait,
|
||||||
associated_type_defaults
|
associated_type_defaults
|
||||||
)]
|
)]
|
||||||
|
|
|
@ -5,11 +5,8 @@
|
||||||
#![allow(missing_docs)]
|
#![allow(missing_docs)]
|
||||||
|
|
||||||
use alloc::alloc::{GlobalAlloc, Layout};
|
use alloc::alloc::{GlobalAlloc, Layout};
|
||||||
use core::{
|
use core::{fmt::Display, ptr::null_mut};
|
||||||
fmt::Display,
|
use log::{debug, info};
|
||||||
ptr::{self, null_mut},
|
|
||||||
};
|
|
||||||
use log::{debug, info, trace};
|
|
||||||
|
|
||||||
// const HEAP_START: usize = 600_000_000;
|
// const HEAP_START: usize = 600_000_000;
|
||||||
const HEAP_START: usize = 0x00100000;
|
const HEAP_START: usize = 0x00100000;
|
||||||
|
|
|
@ -18,10 +18,7 @@ pub mod proccess;
|
||||||
pub mod syscalls;
|
pub mod syscalls;
|
||||||
pub mod time;
|
pub mod time;
|
||||||
|
|
||||||
use core::{
|
use core::arch::asm;
|
||||||
arch::asm,
|
|
||||||
sync::atomic::{AtomicU64, Ordering::Relaxed},
|
|
||||||
};
|
|
||||||
use versioning::Version;
|
use versioning::Version;
|
||||||
|
|
||||||
/// The number of ticks since the first CPU was started
|
/// The number of ticks since the first CPU was started
|
||||||
|
|
11
numb.txt
11
numb.txt
|
@ -1,11 +0,0 @@
|
||||||
|
|
||||||
331568558747636239054653976632901246101
|
|
||||||
48288905519904217305554229999719318010
|
|
||||||
277368580504891661412569302316981896415
|
|
||||||
18566809782801922287076338139767918931
|
|
||||||
23103957219706234160452062792550873334
|
|
||||||
62880938080142049725728912049836558493
|
|
||||||
282131992488267708548782739606642367699
|
|
||||||
273527083064630779890783156924010103478
|
|
||||||
95848032043557003344400482128815557376
|
|
||||||
247727778155602114333610564115402907812
|
|
|
@ -36,6 +36,7 @@ impl<T> ExpectOrOverflow for Option<T> {
|
||||||
|
|
||||||
macro_rules! impl_as {
|
macro_rules! impl_as {
|
||||||
($ty:ty) => {
|
($ty:ty) => {
|
||||||
|
#[allow(unconditional_recursion)] // idk why
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
impl As for $ty {
|
impl As for $ty {
|
||||||
fn as_u16(self) -> u16 {
|
fn as_u16(self) -> u16 {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![cfg(feature="image")]
|
#![cfg(feature = "image")]
|
||||||
|
|
||||||
use crate::render::{Canvas, Pixel};
|
use crate::render::{Canvas, Pixel};
|
||||||
use crate::types::Color;
|
use crate::types::Color;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
//! let svg_xml = code.render::<svg::Color>().build();
|
//! let svg_xml = code.render::<svg::Color>().build();
|
||||||
//! println!("{}", svg_xml);
|
//! println!("{}", svg_xml);
|
||||||
|
|
||||||
#![cfg(feature="svg")]
|
#![cfg(feature = "svg")]
|
||||||
|
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
//! UTF-8 rendering, with 2 pixels per symbol.
|
//! UTF-8 rendering, with 2 pixels per symbol.
|
||||||
|
|
||||||
use alloc::{
|
|
||||||
string::String,
|
|
||||||
vec::{self, Vec},
|
|
||||||
};
|
|
||||||
|
|
||||||
use crate::render::{Canvas as RenderCanvas, Color, Pixel};
|
use crate::render::{Canvas as RenderCanvas, Color, Pixel};
|
||||||
|
use alloc::{string::String, vec::Vec};
|
||||||
|
|
||||||
const CODEPAGE: [&str; 4] = [" ", "\u{2584}", "\u{2580}", "\u{2588}"];
|
const CODEPAGE: [&str; 4] = [" ", "\u{2584}", "\u{2580}", "\u{2588}"];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue