forked from AbleOS/ableos
shuffling
This commit is contained in:
parent
48f0ef9699
commit
1cead2eccf
|
@ -1,3 +1,5 @@
|
|||
use core::panic::PanicInfo;
|
||||
|
||||
use crate::{
|
||||
arch::{drivers::vga::WRITER, gdt},
|
||||
image::mono_bitmap::bruh,
|
||||
|
@ -75,9 +77,8 @@ extern "x86-interrupt" fn double_fault_handler(
|
|||
// NOTE(able): ignore this always is 0
|
||||
_error_code: u64,
|
||||
) -> ! {
|
||||
bsod(&stack_frame, BSODSource::DoubleFault);
|
||||
|
||||
panic!("EXCEPTION: DOUBLE FAULT\n{:#?}", stack_frame);
|
||||
bsod(BSODSource::DoubleFault(&stack_frame));
|
||||
// panic!("EXCEPTION: DOUBLE FAULT\n{:#?}", stack_frame);
|
||||
}
|
||||
|
||||
#[naked]
|
||||
|
@ -198,23 +199,28 @@ pub fn reset_pit_for_cpu() {
|
|||
set_pit_2(1000);
|
||||
set_pit_3(1000);
|
||||
}
|
||||
|
||||
fn bsod(stack_frame: &InterruptStackFrame, src: BSODSource) {
|
||||
pub fn bsod(src: BSODSource) -> ! {
|
||||
let mut mode = SCREEN_BUFFER.lock();
|
||||
|
||||
mode.force_redraw();
|
||||
/*
|
||||
for y in 0..480 {
|
||||
for x in 0..640 {
|
||||
mode.set_pixel(x, y, 0x0000ff00);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
let mut x = 1;
|
||||
let mut y = 0;
|
||||
|
||||
let src1 = match src {
|
||||
BSODSource::DoubleFault(_) => "DoubleFault",
|
||||
BSODSource::Panic(_) => "Panic",
|
||||
};
|
||||
|
||||
let st = format!(
|
||||
"We fucked up ඞ : {:?}\nThe following qr code will link you to the\nwiki which hopefully solves your problems",
|
||||
src
|
||||
"We fucked up ඞ : {}\nThe following qr code will link you to the\nwiki which hopefully solves your problems",
|
||||
src1
|
||||
);
|
||||
|
||||
for current in st.chars() {
|
||||
|
@ -238,7 +244,11 @@ fn bsod(stack_frame: &InterruptStackFrame, src: BSODSource) {
|
|||
// let sf = format!("https://git.ablecorp.us/able/ableos/wiki/Double-Faults");
|
||||
|
||||
let sd = match src {
|
||||
BSODSource::DoubleFault => "https://git.ablecorp.us/able/ableos/wiki/Double-Faults",
|
||||
BSODSource::DoubleFault(_) => "https://git.ablecorp.us/able/ableos/wiki/Double-Faults",
|
||||
BSODSource::Panic(_) => {
|
||||
//
|
||||
"https://git.ablecorp.us/able/ableos/wiki/"
|
||||
}
|
||||
};
|
||||
|
||||
let code = QrCode::new(sd).unwrap();
|
||||
|
@ -254,23 +264,20 @@ fn bsod(stack_frame: &InterruptStackFrame, src: BSODSource) {
|
|||
y += 1;
|
||||
x = 0;
|
||||
} else {
|
||||
if x == 0 {
|
||||
if current == '█' {
|
||||
mode.draw_filled_rect(x, y * 7, x + 6, (y * 7) + 7, 0xffff0000);
|
||||
}
|
||||
} else {
|
||||
if current == '█' {
|
||||
mode.draw_filled_rect(x * 6, y * 7, (x * 6) + 6, (y * 7) + 7, 0xffff0000);
|
||||
}
|
||||
if current == '█' {
|
||||
mode.draw_filled_rect(x * 6, y * 7, (x * 6) + 6, (y * 7) + 7, 0xffffff00);
|
||||
}
|
||||
}
|
||||
x += 1;
|
||||
}
|
||||
|
||||
mode.copy_to_buffer();
|
||||
|
||||
loop {}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum BSODSource {
|
||||
DoubleFault,
|
||||
pub enum BSODSource<'a> {
|
||||
DoubleFault(&'a InterruptStackFrame),
|
||||
Panic(&'a PanicInfo<'a>),
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ pub struct BinaryData {
|
|||
pub enum HandleResource {
|
||||
Channel,
|
||||
Socket,
|
||||
|
||||
BinaryData,
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ pub fn kernel_main() -> ! {
|
|||
x86_64::instructions::interrupts::without_interrupts(|| {
|
||||
let mut scheduler = SCHEDULER.lock();
|
||||
// comment this out to resume normal use
|
||||
scheduler.enqueue_spawn(traceloop);
|
||||
// scheduler.enqueue_spawn(traceloop);
|
||||
|
||||
scheduler.enqueue_spawn(scratchpad);
|
||||
});
|
||||
|
|
|
@ -70,6 +70,7 @@ pub mod allocator;
|
|||
pub mod channels;
|
||||
pub mod handle;
|
||||
pub mod ipc;
|
||||
pub mod panic;
|
||||
mod unicode_utils;
|
||||
pub mod vga_e;
|
||||
|
||||
|
@ -81,7 +82,7 @@ pub use experiments::*;
|
|||
pub use graphics::*;
|
||||
pub use kernel;
|
||||
pub use kernel::messaging;
|
||||
pub use kernel::panic;
|
||||
// pub use kernel::panic;
|
||||
pub use kernel_state::*;
|
||||
pub use keyboard::*;
|
||||
pub use logger::*;
|
||||
|
|
11
ableos/src/panic.rs
Normal file
11
ableos/src/panic.rs
Normal file
|
@ -0,0 +1,11 @@
|
|||
use core::panic::PanicInfo;
|
||||
use log::error;
|
||||
|
||||
use crate::arch::interrupts::{bsod, BSODSource};
|
||||
|
||||
#[panic_handler]
|
||||
fn panic_handler(info: &PanicInfo) -> ! {
|
||||
error!("{}", info);
|
||||
|
||||
bsod(BSODSource::Panic(info));
|
||||
}
|
|
@ -75,7 +75,9 @@ pub fn scratchpad() {
|
|||
|
||||
let axel = axel::parse(axel_raw.to_string());
|
||||
|
||||
software_int();
|
||||
// software_int();
|
||||
|
||||
unsafe { asm!("int 5") }
|
||||
|
||||
// let xyz = pci::brute_force_scan();
|
||||
// for dev in xyz {
|
||||
|
|
|
@ -13,7 +13,7 @@ pub mod allocator;
|
|||
pub mod arch;
|
||||
pub mod device_interface;
|
||||
pub mod messaging;
|
||||
pub mod panic;
|
||||
// pub mod panic;
|
||||
pub mod proccess;
|
||||
pub mod syscalls;
|
||||
pub mod time;
|
||||
|
|
|
@ -6,5 +6,6 @@ use log::error;
|
|||
#[panic_handler]
|
||||
fn panic_handler(info: &PanicInfo) -> ! {
|
||||
error!("{}", info);
|
||||
|
||||
loop {}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue