1
0
Fork 0
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:
able 2022-08-01 19:56:36 +00:00
commit 6ba5f35654
36 changed files with 69 additions and 173 deletions

11
.gitignore vendored
View file

@ -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.

View file

@ -30,7 +30,7 @@ run-args = [
"-hdb", "-hdb",
"../img.ext2", "../userland/root_fs/ext2.img",
# "-qmp", # "-qmp",

View file

Binary file not shown.

View file

@ -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);
} }

View file

@ -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

View file

@ -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:?}"),
} }
}; };

View file

@ -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,

View file

@ -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};
@ -196,7 +194,6 @@ unsafe fn pci_config_write(bus: u8, device: u8, func: u8, offset: u8, value: u32
// 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 {

View file

@ -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)]

View file

@ -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;

View file

@ -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,
} }
} }

View file

@ -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);

View file

@ -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() {

View file

@ -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() {

View file

@ -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;

View file

@ -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();

View file

@ -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 = "λ";

View file

@ -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);

View file

@ -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,

View file

@ -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;

View file

@ -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 {

View file

@ -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

View file

@ -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;

View file

Binary file not shown.

View file

@ -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
)] )]

BIN
img.ext2

Binary file not shown.

View file

@ -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;

View file

@ -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

View file

@ -1,11 +0,0 @@
331568558747636239054653976632901246101
48288905519904217305554229999719318010
277368580504891661412569302316981896415
18566809782801922287076338139767918931
23103957219706234160452062792550873334
62880938080142049725728912049836558493
282131992488267708548782739606642367699
273527083064630779890783156924010103478
95848032043557003344400482128815557376
247727778155602114333610564115402907812

View file

@ -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 {

View file

@ -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;

View file

@ -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;

View file

@ -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}"];