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