From 85e0d45d3c18e0b79f8c96ee88fa88b0ef045418 Mon Sep 17 00:00:00 2001 From: csd4ni3l <96988024+csd4ni3l@users.noreply.github.com> Date: Mon, 11 May 2026 19:09:20 +0200 Subject: [PATCH] Add correct framebuffer mapping, so Doom works again, remove unneded code, add cooperative scheduling on syscalls determined by the reschedule flag, make serial console automatically clear and be a single render, make process_scancodes push to all processes, add a user-facing framebuffer to be mapped, automatically swap buffers inside timer interrupt, update all submodules --- assets/helloworld.elf | Bin 49672 -> 866376 bytes build_doomgeneric.sh | 2 +- kernel/src/arch/arch.rs | 8 +- kernel/src/arch/syscall.rs | 342 ++++++++++++++++------ kernel/src/arch/x86_64/elf.rs | 4 +- kernel/src/arch/x86_64/interrupts.rs | 15 +- kernel/src/arch/x86_64/syscall.rs | 143 ++++++--- kernel/src/arch/x86_64/usermode.rs | 7 +- kernel/src/driver/elf/loader.rs | 82 +----- kernel/src/driver/elf/mod.rs | 2 - kernel/src/driver/elf/program.rs | 51 ++-- kernel/src/driver/elf/reloc.rs | 32 -- kernel/src/driver/elf/section.rs | 91 ------ kernel/src/driver/graphics/framebuffer.rs | 114 +++++--- kernel/src/driver/keyboard.rs | 8 +- kernel/src/driver/serial.rs | 65 ++-- kernel/src/driver/timer.rs | 11 + kernel/src/main.rs | 12 +- kernel/src/mm/address_space.rs | 2 +- kernel/src/task/context.rs | 34 +++ kernel/src/task/process.rs | 20 +- kernel/src/task/scheduler.rs | 110 ++++++- user/apps/doomgeneric | 2 +- user/init | 2 +- user/libxunil | 2 +- 25 files changed, 695 insertions(+), 466 deletions(-) delete mode 100644 kernel/src/driver/elf/reloc.rs delete mode 100644 kernel/src/driver/elf/section.rs diff --git a/assets/helloworld.elf b/assets/helloworld.elf index fd8c74117f86f61487418343dcb2c855006c7f79..bb6ee7d009674f0045078019800ddabed109fcff 100755 GIT binary patch literal 866376 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

rleU@+Nf1k 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

xN(* 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

# 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 } #[cfg(target_arch = "x86_64")] -pub fn enter_usermode(user_rip: u64, user_rsp: u64) { - enter_usermode_x86_64(user_rip, user_rsp); +pub fn enter_usermode(user_rip: u64, user_rsp: u64, should_swapgs: bool) { + enter_usermode_x86_64(user_rip, user_rsp, should_swapgs); } #[cfg(target_arch = "x86_64")] -pub fn run_elf(file_bytes: &[u8]) { - run_elf_x86_64(file_bytes); +pub fn run_elf(file_bytes: &[u8], should_swapgs: bool) { + run_elf_x86_64(file_bytes, should_swapgs); } pub fn get_allocator<'a>() -> &'static impl GlobalAlloc { diff --git a/kernel/src/arch/syscall.rs b/kernel/src/arch/syscall.rs index 5449393..2a8d7ef 100644 --- a/kernel/src/arch/syscall.rs +++ b/kernel/src/arch/syscall.rs @@ -1,28 +1,27 @@ #![allow(dead_code)] -use core::{ - alloc::{GlobalAlloc, Layout}, - ptr::null_mut, -}; - +use alloc::vec; use x86_64::{ - VirtAddr, + PhysAddr, VirtAddr, instructions::interrupts, - structures::paging::{FrameAllocator, Mapper, Page, PageTableFlags, Size4KiB}, + structures::paging::{FrameAllocator, Mapper, Page, PageTableFlags, PhysFrame, Size4KiB}, }; use crate::{ - arch::arch::{FRAME_ALLOCATOR, get_allocator, infinite_idle, sleep}, + arch::arch::{FRAME_ALLOCATOR, run_elf, sleep}, driver::{ fs::vfs::{vfs_close, vfs_lseek, vfs_open, vfs_read}, - graphics::framebuffer::with_framebuffer, + graphics::framebuffer::{FRAMEBUFFER, USER_FB_BASE, with_framebuffer}, keyboard::{KeyboardEvent, process_scancodes}, timer::TIMER, }, mm::usercopy::{copy_cstr_from_user, copy_to_user}, - print, println, - task::scheduler::{SCHEDULER, current_pid}, - util::align_up, + print, + task::{ + process::ProcessState, + scheduler::{SCHEDULER, current_pid}, + }, + util::{align_down, align_up}, }; const READ: usize = 0; @@ -51,43 +50,61 @@ const SLEEP: usize = 909090; // zzz haha pub const MAP_FRAMEBUFFER: usize = 5555; pub const FRAMEBUFFER_SWAP: usize = 6666; -pub unsafe fn malloc(size: usize, align: usize) -> *mut u8 { - let align = if align < 1 { - 1 - } else { - align.next_power_of_two() - }; - let layout = match Layout::from_size_align(size, align) { - Ok(l) => l, - Err(_) => return null_mut(), - }; - - unsafe { GlobalAlloc::alloc(get_allocator(), layout) } -} - -pub unsafe fn free(ptr: *mut u8, size: usize, align: usize) { - if ptr.is_null() { - // very important, do not double free - return; - } - - let align = if align < 1 { - 1 - } else { - align.next_power_of_two() - }; - - if let Ok(layout) = Layout::from_size_align(size.max(1), align.max(1)) { - unsafe { GlobalAlloc::dealloc(get_allocator(), ptr, layout) } - } -} - -pub unsafe fn memset(ptr: *mut u8, val: u8, count: usize) { - unsafe { core::ptr::write_bytes(ptr, val, count) }; -} - fn map_framebuffer() -> isize { - 0 + let pid = current_pid().unwrap_or(0); + if pid == 0 { + return -1; + } + + let framebuffer = FRAMEBUFFER.lock(); + let fb = match framebuffer.as_ref() { + Some(fb) => fb, + None => return -1, + }; + + let struct_phys = fb.meta.struct_phys; + let buf_phys = fb.meta.buf_phys; + let buf_size = (fb.meta.buf_len * size_of::()) as u64; + let pixel_map_start = align_down(buf_phys, 4096); + let pixel_map_end = align_up(buf_phys + buf_size, 4096); + drop(framebuffer); + + let mut frame_allocator = FRAME_ALLOCATOR.lock(); + + SCHEDULER + .with_process(pid, |process| { + let address_space = match process.address_space.as_mut() { + Some(a) => a, + None => return -1, + }; + + let mut map_page = |virt: u64, phys: u64| unsafe { + let frame = PhysFrame::::containing_address(PhysAddr::new(phys)); + let page = Page::::containing_address(VirtAddr::new(virt)); + address_space + .mapper + .map_to( + page, + frame, + PageTableFlags::PRESENT + | PageTableFlags::WRITABLE + | PageTableFlags::USER_ACCESSIBLE + | PageTableFlags::NO_EXECUTE, + &mut *frame_allocator, + ) + .unwrap() + .flush(); + }; + + map_page(USER_FB_BASE, struct_phys); + + for offset in (0..pixel_map_end - pixel_map_start).step_by(4096) { + map_page(USER_FB_BASE + 0x1000 + offset, pixel_map_start + offset); + } + + 0 + }) + .unwrap_or(-1) } fn read(ptr: isize, size: isize, nmemb: isize, fd: isize) -> isize { @@ -102,19 +119,22 @@ fn read(ptr: isize, size: isize, nmemb: isize, fd: isize) -> isize { let to_read = vfs_read(fd as i64, len as usize); if let Some(read_ptr) = to_read { - let address_space = process.address_space.as_mut().unwrap(); - if copy_to_user( - &mut address_space.mapper, - ptr as *mut u8, - read_ptr.0, - read_ptr.1, - ) - .is_err() - { - return -1; - }; + if let Some(address_space) = process.address_space.as_mut() { + if copy_to_user( + &mut address_space.mapper, + ptr as *mut u8, + read_ptr.0, + read_ptr.1, + ) + .is_err() + { + return -1; + }; - return (read_ptr.1 as isize) / size; + return (read_ptr.1 as isize) / size; + } else { + return -1; + } } else { return -1; } @@ -130,7 +150,7 @@ fn open(path: isize, mode: isize) -> isize { SCHEDULER .with_process(pid, |process| { - let address_space = process.address_space.as_mut().unwrap(); + let address_space = process.address_space.as_mut().ok_or::(-1)?; let path = copy_cstr_from_user(&mut address_space.mapper, path as *const u8, 256)?; let mode = copy_cstr_from_user(&mut address_space.mapper, mode as *const u8, 16)?; @@ -159,18 +179,21 @@ fn kbd_read(user_ptr: *mut KeyboardEvent, max_events: isize) -> isize { return SCHEDULER .with_process(pid as u64, |process| { let to_copy = (max_events as usize).min(process.kbd_buffer.len()); - let address_space = process.address_space.as_mut().unwrap(); - if let Ok(_) = copy_to_user( - &mut address_space.mapper, - user_ptr as *mut u8, - process.kbd_buffer.as_ptr() as *const u8, - to_copy * size_of::(), - ) { - process.kbd_buffer.drain(0..to_copy); - return to_copy as isize; + if let Some(address_space) = process.address_space.as_mut() { + if let Ok(_) = copy_to_user( + &mut address_space.mapper, + user_ptr as *mut u8, + process.kbd_buffer.as_ptr() as *const u8, + to_copy * size_of::(), + ) { + process.kbd_buffer.drain(0..to_copy); + return to_copy as isize; + } else { + return -1; + }; } else { return -1; - }; + } }) .unwrap_or(-1); } @@ -214,23 +237,26 @@ pub unsafe fn sbrk(increment: isize) -> isize { // TODO: do not use x86_64 only let virt_addr = VirtAddr::new(addr); let page = Page::::containing_address(virt_addr); - let address_space = process.address_space.as_mut().unwrap(); - unsafe { - address_space - .mapper - .map_to( - page, - frame, - PageTableFlags::PRESENT - | PageTableFlags::WRITABLE - | PageTableFlags::USER_ACCESSIBLE - | PageTableFlags::NO_EXECUTE, - &mut *frame_allocator, - ) - .unwrap() - .flush(); + if let Some(address_space) = process.address_space.as_mut() { + unsafe { + address_space + .mapper + .map_to( + page, + frame, + PageTableFlags::PRESENT + | PageTableFlags::WRITABLE + | PageTableFlags::USER_ACCESSIBLE + | PageTableFlags::NO_EXECUTE, + &mut *frame_allocator, + ) + .unwrap() + .flush(); - core::ptr::write_bytes(virt_addr.as_mut_ptr::(), 0, 4096); + core::ptr::write_bytes(virt_addr.as_mut_ptr::(), 0, 4096); + } + } else { + return -1; } } else { return -1; @@ -246,6 +272,86 @@ pub unsafe fn sbrk(increment: isize) -> isize { .unwrap_or(-1); } +pub fn exec(arg0: isize) -> isize { + let pid = current_pid().unwrap_or(0); + if pid == 0 { + return -1; + } + + let path = match SCHEDULER.with_process(pid, |process| { + let address_space = process.address_space.as_mut().ok_or::(-1)?; + copy_cstr_from_user(&mut address_space.mapper, arg0 as *const u8, 256) + }) { + Some(Ok(p)) => p, + _ => return -1, + }; + + let fd = vfs_open(path.as_str(), "r"); + if fd < 0 { + return -1; + } + + const SEEK_SET: i32 = 0; + const SEEK_CUR: i32 = 1; + const SEEK_END: i32 = 2; + + if vfs_lseek(fd, 0, SEEK_END) < 0 { + vfs_close(fd); + return -1; + } + let size = vfs_lseek(fd, 0, SEEK_CUR); + if size <= 0 { + vfs_close(fd); + return -1; + } + if vfs_lseek(fd, 0, SEEK_SET) < 0 { + vfs_close(fd); + return -1; + } + + let mut buf = vec![0u8; size as usize]; + let mut off = 0usize; + + while off < buf.len() { + let want = buf.len() - off; + let Some((src, n)) = vfs_read(fd, want) else { + break; + }; + if n == 0 { + break; + } + unsafe { + core::ptr::copy_nonoverlapping(src, buf.as_mut_ptr().add(off), n); + } + off += n; + } + + vfs_close(fd); + + if off != buf.len() { + return -1; + } + + run_elf(&buf, true); + 0 +} + +pub fn set_reschedule(should_reschedule: bool) { + let pid = current_pid().unwrap_or(0); + + if pid == 0 { + return; + } + + let mut scheduler = SCHEDULER.lock(); + + if let Some(process) = scheduler.processes.get_mut(&pid) { + process.should_reschedule = should_reschedule; + } + + drop(scheduler); +} + #[unsafe(no_mangle)] pub unsafe extern "C" fn syscall_dispatch( num: usize, @@ -257,6 +363,25 @@ pub unsafe extern "C" fn syscall_dispatch( arg5: isize, ) -> isize { interrupts::enable(); + + set_reschedule(match num { + BRK => false, + READ => true, + WRITE => false, + OPEN => true, + CLOSE => true, + LSEEK => true, + EXIT => true, + SLEEP => true, + CLOCK_GETTIME => false, + MAP_FRAMEBUFFER => false, + KBD_READ => true, + FRAMEBUFFER_SWAP => true, + GETPID => false, + EXECVE => true, + _ => false, + }); + match num { BRK => unsafe { sbrk(arg0) }, READ => read(arg0, arg1, arg2, arg3) as isize, @@ -275,27 +400,60 @@ pub unsafe extern "C" fn syscall_dispatch( } } - with_framebuffer(|fb| fb.swap()); 0 } OPEN => open(arg0, arg1), CLOSE => close(arg0), LSEEK => vfs_lseek(arg0 as i64, arg1 as i64, arg2 as i32) as isize, EXIT => { - println!("Program exit: {}", arg0); - with_framebuffer(|fb| fb.swap()); - infinite_idle(); + let pid = current_pid().unwrap_or(0); + if pid == 0 { + return 0; + } + + let next_pid = { + let mut sched = SCHEDULER.lock(); + + sched.processes.remove(&pid); + + sched + .processes + .iter() + .find_map(|(other, proc)| { + if *other != pid && matches!(proc.state, ProcessState::Ready) { + Some(*other) + } else { + None + } + }) + .unwrap_or(0) + }; + + if next_pid != 0 { + SCHEDULER.switch_to(next_pid, false); + } + + crate::arch::arch::infinite_idle(); } SLEEP => { sleep(arg0 as u64); 0 } + EXECVE => exec(arg0), CLOCK_GETTIME => TIMER.now().elapsed() as isize, MAP_FRAMEBUFFER => map_framebuffer(), KBD_READ => kbd_read(arg0 as *mut KeyboardEvent, arg1), + GETPID => { + let pid = current_pid().unwrap_or(0); + + match pid { + 0 => return -1, + _ => return pid as isize, + } + } FRAMEBUFFER_SWAP => { with_framebuffer(|fb| { - fb.swap(); + fb.present(); }); 0 } diff --git a/kernel/src/arch/x86_64/elf.rs b/kernel/src/arch/x86_64/elf.rs index 525a171..025f3f9 100644 --- a/kernel/src/arch/x86_64/elf.rs +++ b/kernel/src/arch/x86_64/elf.rs @@ -9,7 +9,7 @@ use crate::{ println, task::scheduler::SCHEDULER, }; -pub fn run_elf_x86_64(file_bytes: &[u8]) { +pub fn run_elf_x86_64(file_bytes: &[u8], should_swapgs: bool) { let stack_base: u64 = 0x0000_7fff_0000_0000; let page_count = 4096; // 16 mib let page_size = 0x1000u64; @@ -57,7 +57,7 @@ pub fn run_elf_x86_64(file_bytes: &[u8]) { process.address_space = Some(address_space) }); - SCHEDULER.run_process(process_pid, entry_point); + SCHEDULER.switch_to(process_pid, should_swapgs); } else { return; }; diff --git a/kernel/src/arch/x86_64/interrupts.rs b/kernel/src/arch/x86_64/interrupts.rs index 21728fa..1177381 100644 --- a/kernel/src/arch/x86_64/interrupts.rs +++ b/kernel/src/arch/x86_64/interrupts.rs @@ -1,6 +1,11 @@ +use core::sync::atomic::Ordering; + use crate::{ arch::x86_64::{gdt, mouse::mouse_interrupt}, - driver::{keyboard::push_scancode, mouse::MOUSE, timer::TIMER}, + driver::{ + graphics::framebuffer::with_framebuffer, keyboard::push_scancode, mouse::MOUSE, + serial::with_serial_console, timer::TIMER, + }, println, }; use lazy_static::lazy_static; @@ -95,6 +100,14 @@ pub extern "x86-interrupt" fn invalid_opcode_handler(stack_frame: InterruptStack extern "x86-interrupt" fn timer_interrupt_handler(_stack_frame: InterruptStackFrame) { TIMER.interrupt(); + let t = TIMER.interrupt_count.load(Ordering::Relaxed); + if t % 60 == 0 { + with_framebuffer(|fb| { + with_serial_console(|serial_console| serial_console.render(fb)); + fb.present(); + }); + } + unsafe { PICS.lock() .notify_end_of_interrupt(InterruptIndex::Timer.as_u8()); diff --git a/kernel/src/arch/x86_64/syscall.rs b/kernel/src/arch/x86_64/syscall.rs index e1d9eb0..ec89269 100644 --- a/kernel/src/arch/x86_64/syscall.rs +++ b/kernel/src/arch/x86_64/syscall.rs @@ -2,7 +2,10 @@ use core::arch::asm; use x86_64::instructions::tlb::flush_all; -use crate::arch::x86_64::gdt::{GDT, TSS}; +use crate::{ + arch::x86_64::gdt::{GDT, TSS}, + task::scheduler::{SCHEDULER, current_pid}, +}; const IA32_EFER: u32 = 0xC0000080; const IA32_EFER_SCE: u64 = 1; // system call enable bit @@ -10,6 +13,7 @@ const IA32_STAR: u32 = 0xC0000081; const IA32_LSTAR: u32 = 0xC0000082; const IA32_FMASK: u32 = 0xC0000084; const IA32_KERNEL_GS_BASE: u32 = 0xC0000102; +const IA32_GS_BASE: u32 = 0xC0000101; #[repr(C)] pub struct PerCpuData { @@ -69,6 +73,8 @@ pub fn init_syscalls() { wrmsr(IA32_FMASK, 1 << 9); // Mask interupts during syscalls + wrmsr(IA32_GS_BASE, 0); + let kernel_cs = (GDT.1.0.0 & !0b11) as u64; let user_ds = (GDT.1.3.0 & !0b11) as u64; @@ -79,57 +85,124 @@ pub fn init_syscalls() { } } +#[unsafe(no_mangle)] +unsafe extern "C" fn check_and_reschedule() -> usize { + let pid = current_pid().unwrap_or(0); + + if pid == 0 { + return 0; + } + + let should = SCHEDULER + .with_process(pid, |process| process.should_reschedule) + .unwrap_or(false); + + if !should { + return 0; + } + + let next_task = SCHEDULER.next_task(); + + if next_task == pid { + return 0; + } + + SCHEDULER.switch_to(next_task, false); + + 1 +} + #[unsafe(naked)] #[unsafe(no_mangle)] unsafe extern "C" fn syscall_entry() { core::arch::naked_asm!( r#" - .intel_syntax noprefix - swapgs - - // save user stack mov gs:[0], rsp - - // use kernel stack mov rsp, gs:[8] - push r11 - push rcx - push rax - push rdi - push rsi - push rdx - push r10 - push r8 - push r9 + sub rsp, 128 - mov rdi, rax - mov rsi, [rsp + 40] - mov rdx, [rsp + 32] - mov rcx, [rsp + 24] - mov r8, [rsp + 16] - mov r9, [rsp + 8] - push qword ptr [rsp] + mov qword ptr [rsp + 0], r15 + mov qword ptr [rsp + 8], r14 + mov qword ptr [rsp + 16], r13 + mov qword ptr [rsp + 24], r12 + mov qword ptr [rsp + 32], r11 + mov qword ptr [rsp + 40], r10 + mov qword ptr [rsp + 48], r9 + mov qword ptr [rsp + 56], r8 + mov qword ptr [rsp + 64], rsi + mov qword ptr [rsp + 72], rdi + mov qword ptr [rsp + 80], rbp + mov qword ptr [rsp + 88], rdx + mov qword ptr [rsp + 96], rcx + mov qword ptr [rsp + 104], rbx + mov qword ptr [rsp + 112], rax + mov rax, qword ptr gs:[0] + mov qword ptr [rsp + 120], rax + + mov rbx, rsp // rbx = frame base + + // ctx_save(frame) + mov rdi, rbx + lea rsp, [rbx - 8] + call ctx_save + mov rsp, rbx + + // syscall_dispatch(num,arg0..arg5) + mov rdi, qword ptr [rbx + 112] + mov rsi, qword ptr [rbx + 72] + mov rdx, qword ptr [rbx + 64] + mov rcx, qword ptr [rbx + 88] + mov r8, qword ptr [rbx + 40] + mov r9, qword ptr [rbx + 56] + + lea rsp, [rbx - 24] // rsp%16==8 before call + mov rax, qword ptr [rbx + 48] + mov qword ptr [rsp + 0], rax call syscall_dispatch + mov rsp, rbx - add rsp, 8 // fix alignment + // save return value into frame (so normal restore uses it) + mov qword ptr [rbx + 112], rax - pop r9 - pop r8 - pop r10 - pop rdx - pop rsi - pop rdi - add rsp, 8 + // ctx_save(frame) again so saved_ctx.rax reflects return value + mov rdi, rbx + lea rsp, [rbx - 8] + call ctx_save + mov rsp, rbx - pop rcx - pop r11 + // maybe switch tasks (this should not return if it switches) + lea rsp, [rbx - 8] + call check_and_reschedule + mov rsp, rbx - mov rsp, gs:[0] + test rax, rax + jnz .done + // restore registers from frame + mov rax, qword ptr [rsp + 112] + mov rbx, qword ptr [rsp + 104] + mov rcx, qword ptr [rsp + 96] + mov rdx, qword ptr [rsp + 88] + mov rbp, qword ptr [rsp + 80] + mov rdi, qword ptr [rsp + 72] + mov rsi, qword ptr [rsp + 64] + mov r8, qword ptr [rsp + 56] + mov r9, qword ptr [rsp + 48] + mov r10, qword ptr [rsp + 40] + mov r11, qword ptr [rsp + 32] // rflags — sysretq loads RFLAGS from r11 + mov r12, qword ptr [rsp + 24] + mov r13, qword ptr [rsp + 16] + mov r14, qword ptr [rsp + 8] + mov r15, qword ptr [rsp + 0] + // don't restore rsp from frame — use the user rsp we saved in gs:[0] + mov rsp, qword ptr gs:[0] swapgs - sysretq"#, + sysretq + .done: + ud2 + "#, ); } diff --git a/kernel/src/arch/x86_64/usermode.rs b/kernel/src/arch/x86_64/usermode.rs index c28afc3..80386b3 100644 --- a/kernel/src/arch/x86_64/usermode.rs +++ b/kernel/src/arch/x86_64/usermode.rs @@ -10,7 +10,7 @@ fn with_rpl3(ss: SegmentSelector) -> u64 { } // entry point and stack -pub fn enter_usermode_x86_64(user_rip: u64, user_rsp: u64) -> ! { +pub fn enter_usermode_x86_64(user_rip: u64, user_rsp: u64, should_swapgs: bool) -> ! { let user_cs = with_rpl3(user_code_selector()); let user_ss = with_rpl3(user_data_selector()); @@ -22,8 +22,11 @@ pub fn enter_usermode_x86_64(user_rip: u64, user_rsp: u64) -> ! { let rflags: u64 = 0x202; unsafe { + core::arch::asm!("cli"); + if should_swapgs { + core::arch::asm!("swapgs"); + } core::arch::asm!( - "cli", "push {user_ss}", "push {user_rsp}", "push {rflags}", diff --git a/kernel/src/driver/elf/loader.rs b/kernel/src/driver/elf/loader.rs index 8659b79..b98387e 100644 --- a/kernel/src/driver/elf/loader.rs +++ b/kernel/src/driver/elf/loader.rs @@ -2,17 +2,10 @@ use core::ptr::null; use x86_64::structures::paging::OffsetPageTable; -use crate::{ - arch::syscall::{malloc, memset}, - driver::elf::{ - header::{ - ET_DYN, ET_EXEC, ET_REL, Elf64Ehdr, Elf64Rel, Elf64Shdr, SHF_ALLOC, SHT_NOBITS, SHT_REL, - }, - program::load_program, - reloc::elf_do_reloc, - section::elf_sheader, - validation::validate_elf, - }, +use crate::driver::elf::{ + header::{ET_DYN, ET_EXEC, ET_REL, Elf64Ehdr}, + program::load_program, + validation::validate_elf, }; pub fn load_file(mapper: &mut OffsetPageTable, elf_bytes: &[u8]) -> (*const u8, u64) { @@ -37,70 +30,3 @@ pub fn load_file(mapper: &mut OffsetPageTable, elf_bytes: &[u8]) -> (*const u8, _ => return (null(), 0), }; } - -// TODO: make ET_REL work -pub unsafe fn elf_load_stage1(hdr: *const Elf64Ehdr) { - let shdr = unsafe { elf_sheader(hdr) } as *mut Elf64Shdr; - let mut i: u16 = 0; - let shnum = unsafe { (*hdr).e_shnum }; - - while i < shnum { - let section: &mut Elf64Shdr = unsafe { &mut *(shdr.add(i as usize)) }; - - if section.sh_type == SHT_NOBITS { - if section.sh_size == 0 { - continue; - } - - if (section.sh_flags & SHF_ALLOC) != 1 { - let mem = - unsafe { malloc(section.sh_size as usize, section.sh_addralign as usize) }; - - if mem.is_null() { - continue; // handle OOM - } - - unsafe { - // zero the memory - memset(mem, 0, section.sh_size as usize); - } - section.sh_offset = mem.addr() as u64; - } - } - - i += 1; - } -} - -pub unsafe fn elf_load_stage2(hdr: *const Elf64Ehdr) -> i8 { - let shdr = unsafe { elf_sheader(hdr) } as *mut Elf64Shdr; - let mut i: u16 = 0; - let mut idx: u64; - let shnum = unsafe { (*hdr).e_shnum }; - - while i < shnum { - let section: &mut Elf64Shdr = unsafe { &mut *(shdr.add(i as usize)) }; - - if section.sh_type == SHT_REL { - idx = 0; - while idx < section.sh_size / section.sh_entsize { - let reltab: *const Elf64Rel = unsafe { - ((hdr as *const u8).add(section.sh_offset as usize) as *const Elf64Rel) - .add(idx as usize) - }; - - let result: i8 = unsafe { elf_do_reloc(hdr, reltab, section) }; - - if result == -1 { - return -1; - } - - idx += 1; - } - } - - i += 1; - } - - return 0; -} diff --git a/kernel/src/driver/elf/mod.rs b/kernel/src/driver/elf/mod.rs index 55fbb13..d9afbad 100644 --- a/kernel/src/driver/elf/mod.rs +++ b/kernel/src/driver/elf/mod.rs @@ -1,6 +1,4 @@ mod header; pub mod loader; mod program; -mod reloc; -mod section; pub mod validation; diff --git a/kernel/src/driver/elf/program.rs b/kernel/src/driver/elf/program.rs index 4c61239..4da1486 100644 --- a/kernel/src/driver/elf/program.rs +++ b/kernel/src/driver/elf/program.rs @@ -1,7 +1,4 @@ -use core::{ - ffi::CStr, - ptr::{null, null_mut}, -}; +use core::ptr::{null, null_mut}; use alloc::vec::Vec; use x86_64::{ @@ -12,7 +9,7 @@ use x86_64::{ }; use crate::{ - arch::{arch::FRAME_ALLOCATOR, syscall::memset}, + arch::arch::FRAME_ALLOCATOR, driver::elf::header::{ DT_JMPREL, DT_NEEDED, DT_NULL, DT_PLTREL, DT_PLTRELSZ, DT_RELA, DT_RELASZ, DT_STRSZ, DT_STRTAB, DT_SYMTAB, Elf64Dyn, Elf64Ehdr, Elf64Phdr, Elf64Rela, Elf64Sym, PF_X, @@ -123,29 +120,29 @@ pub unsafe fn load_program( } } -fn cstr_from_strtab( - strtab_ptr: *const u8, - strtab_size: u64, - off: u32, -) -> Option<&'static core::ffi::CStr> { - let off = off as u64; - if strtab_ptr.is_null() || off >= strtab_size { - return None; - } +// fn cstr_from_strtab( +// strtab_ptr: *const u8, +// strtab_size: u64, +// off: u32, +// ) -> Option<&'static core::ffi::CStr> { +// let off = off as u64; +// if strtab_ptr.is_null() || off >= strtab_size { +// return None; +// } - let mut i = off; +// let mut i = off; - while i < strtab_size { - let b = unsafe { *strtab_ptr.add(i as usize) }; - if b == 0 { - let start = unsafe { strtab_ptr.add(off as usize) } as *const core::ffi::c_char; - return Some(unsafe { CStr::from_ptr(start as *const i8) }); - } - i += 1; - } +// while i < strtab_size { +// let b = unsafe { *strtab_ptr.add(i as usize) }; +// if b == 0 { +// let start = unsafe { strtab_ptr.add(off as usize) } as *const core::ffi::c_char; +// return Some(unsafe { CStr::from_ptr(start as *const i8) }); +// } +// i += 1; +// } - None -} +// None +// } pub fn dyn_get_symaddr( strtab_ptr: *const u8, @@ -159,7 +156,7 @@ pub fn dyn_get_symaddr( return Ok(load_bias + sym.st_value); } - let name = cstr_from_strtab(strtab_ptr, strtab_size, idx as u32); + // let name = cstr_from_strtab(strtab_ptr, strtab_size, idx as u32); let bind = sym.st_info >> 4; if bind == STB_WEAK { Ok(0) } else { Err(()) } @@ -340,7 +337,7 @@ pub fn load_segment_to_memory( core::ptr::copy_nonoverlapping(src, dst, file_size as usize); if mem_size > file_size { - memset( + core::ptr::write_bytes( dst.add(file_size as usize), 0, (mem_size - file_size) as usize, diff --git a/kernel/src/driver/elf/reloc.rs b/kernel/src/driver/elf/reloc.rs deleted file mode 100644 index fbf9986..0000000 --- a/kernel/src/driver/elf/reloc.rs +++ /dev/null @@ -1,32 +0,0 @@ -use crate::driver::elf::{ - header::{Elf64Ehdr, Elf64Rel, Elf64Shdr, R_X86_64_64}, - section::{elf_get_symval, elf_section}, -}; - -pub unsafe fn elf_do_reloc( - hdr: *const Elf64Ehdr, - rel: *const Elf64Rel, - reltab: *mut Elf64Shdr, -) -> i8 { - let target = unsafe { elf_section(hdr, (*reltab).sh_info as usize) }; - let addr = unsafe { (hdr as *const u8).add((*target).sh_offset as usize) }; - let reference = unsafe { addr.add((*rel).r_offset as usize) as *mut u64 }; - - let symval; - - if unsafe { ((*rel).r_info) >> 32 } != 0 { - symval = unsafe { elf_get_symval(hdr, (*reltab).sh_link as u64, (*rel).r_info >> 32) }; - if symval == 1 { - return -1; - } - - match unsafe { ((*rel).r_info & 0xffff_ffff) as u32 } { - x if x == R_X86_64_64 as u32 => unsafe { *reference = symval.wrapping_add(*reference) }, - _ => return -1, - } - - return symval as i8; - } - - return 0; -} diff --git a/kernel/src/driver/elf/section.rs b/kernel/src/driver/elf/section.rs deleted file mode 100644 index 64aa46a..0000000 --- a/kernel/src/driver/elf/section.rs +++ /dev/null @@ -1,91 +0,0 @@ -use crate::driver::elf::header::{Elf64Ehdr, Elf64Shdr, Elf64Sym, SHN_ABS, SHN_UNDEF, STB_WEAK}; -use core::ffi::CStr; - -// TODO: make ET_REL work - -pub unsafe fn elf_sheader(hdr: *const Elf64Ehdr) -> *const Elf64Shdr { - unsafe { (hdr as *const u8).add((*hdr).e_shoff as usize) as *const Elf64Shdr } -} - -pub unsafe fn elf_section(hdr: *const Elf64Ehdr, idx: usize) -> *const Elf64Shdr { - unsafe { elf_sheader(hdr).add(idx) } -} - -pub unsafe fn elf_str_table(hdr: *const Elf64Ehdr) -> *const u8 { - if unsafe { (*hdr).e_shstrndx == SHN_UNDEF } { - return core::ptr::null(); - } - - let shdr = unsafe { elf_section(hdr, (*hdr).e_shstrndx as usize) }; - - unsafe { (hdr as *const u8).add((*shdr).sh_offset as usize) } -} - -fn elf_lookup_string<'a>(hdr: *const Elf64Ehdr, offset: usize) -> &'a str { - let strtab: *const u8 = unsafe { elf_str_table(hdr) }; - let mut len = 0; - - let start = unsafe { strtab.add(offset) }; - - unsafe { - while *start.add(len) != 0 { - len += 1; - } - core::str::from_raw_parts(start, len) - } -} - -pub fn elf_lookup_symbol(name: &CStr) -> *const u8 { - return core::ptr::null(); -} - -pub unsafe fn elf_get_symval(hdr: *const Elf64Ehdr, table: u64, idx: u64) -> u64 { - if table == SHN_UNDEF as u64 || idx == SHN_UNDEF as u64 { - return 0; - } - - let symtab: *const Elf64Shdr = unsafe { elf_section(hdr, table as usize) }; - - if unsafe { (*symtab).sh_entsize == 0 } { - return 255; // TODO: replace with error - } - - let symtab_entries: u64 = unsafe { (*symtab).sh_size / (*symtab).sh_entsize }; - - if idx >= symtab_entries { - return 255; // TODO: replace with error - } - - let symaddr = unsafe { (hdr as *const u8).add((*symtab).sh_offset as usize) }; - let sym_table = symaddr as *const Elf64Sym; - let symbol: &Elf64Sym = unsafe { &*sym_table.add(idx as usize) }; - - if symbol.st_shndx == SHN_UNDEF { - // the symbol is external - let strtab: *const Elf64Shdr = unsafe { elf_section(hdr, (*symtab).sh_link as usize) }; - let name_pointer: *const u8 = unsafe { - (hdr as *const u8) - .add((*strtab).sh_offset as usize) - .add((*symbol).st_name as usize) - }; - let name = unsafe { CStr::from_ptr(name_pointer as *const core::ffi::c_char) }; - - let target = elf_lookup_symbol(name); - if target == core::ptr::null() { - if (symbol.st_info >> 4) == STB_WEAK { - return 0; // Weak symbol initialized as 0 - } else { - return 255; // // TODO: replace with error Undefined External Symbol - } - } else { - return target as u64; - } - } else if symbol.st_shndx == SHN_ABS { - return symbol.st_value; // absolute symbol easy - } else { - let target: *const Elf64Shdr = unsafe { elf_section(hdr, symbol.st_shndx as usize) }; - return unsafe { - ((hdr as *const u8).add((symbol.st_value + (*target).sh_offset) as usize)) as u64 - }; - } -} diff --git a/kernel/src/driver/graphics/framebuffer.rs b/kernel/src/driver/graphics/framebuffer.rs index cd13306..69138f4 100644 --- a/kernel/src/driver/graphics/framebuffer.rs +++ b/kernel/src/driver/graphics/framebuffer.rs @@ -1,18 +1,35 @@ -use alloc::vec; -use alloc::vec::Vec; use limine::framebuffer::Framebuffer as LimineFramebuffer; use spin::Mutex; #[cfg(target_arch = "x86_64")] use x86_64::instructions::interrupts::without_interrupts; +use x86_64::structures::paging::{FrameAllocator, PhysFrame, Size4KiB}; + +use crate::arch::arch::FRAME_ALLOCATOR; + +#[repr(C)] +pub struct UserFrameBuffer { + pub buf_virt: *mut u32, + pub width: usize, + pub height: usize, + pub pitch: usize, +} pub struct Framebuffer { addr: *mut u32, - back_buffer: Vec, pub width: usize, pub height: usize, pitch: usize, - back_buffer_len: usize, + pub user_fb: UserFrameBuffer, + pub meta: FramebufferMeta, +} + +pub const USER_FB_BASE: u64 = 0x0000_7F00_0000_0000; + +pub struct FramebufferMeta { + pub buf_phys: u64, + pub buf_len: usize, + pub struct_phys: u64, } impl Framebuffer { @@ -20,15 +37,53 @@ impl Framebuffer { let width = limine_fb.width() as usize; let height = limine_fb.height() as usize; let pitch = limine_fb.pitch() as usize / 4; - let back_buffer_len = width * height; + let buf_len = pitch * height; + let byte_len = buf_len * core::mem::size_of::(); + let pixel_frames = (byte_len + 4095) / 4096; + + let mut fa = FRAME_ALLOCATOR.lock(); + + let struct_frame: PhysFrame = + fa.allocate_frame().expect("framebuffer struct frame"); + let struct_phys = struct_frame.start_address().as_u64(); + let struct_virt = (struct_phys + fa.hhdm_offset) as *mut UserFrameBuffer; + + let first_pixel_frame: PhysFrame = + fa.allocate_frame().expect("framebuffer pixel frame 0"); + let buf_phys = first_pixel_frame.start_address().as_u64(); + for _ in 1..pixel_frames { + fa.allocate_frame().expect("framebuffer pixel frame"); + } + let buf_virt_kernel = (buf_phys + fa.hhdm_offset) as *mut u32; + drop(fa); + + unsafe { core::ptr::write_bytes(buf_virt_kernel, 0, buf_len) }; + + unsafe { + struct_virt.write(UserFrameBuffer { + buf_virt: (USER_FB_BASE + 0x1000) as *mut u32, + width, + height, + pitch, + }); + } Framebuffer { addr: limine_fb.addr().cast::(), - back_buffer: vec![0u32; width * height], width, height, pitch, - back_buffer_len, + user_fb: UserFrameBuffer { + buf_virt: buf_virt_kernel, + width, + height, + pitch, + }, + meta: FramebufferMeta { + buf_phys, + buf_len, + struct_phys, + }, } } @@ -37,13 +92,11 @@ impl Framebuffer { if x >= self.width || y >= self.height { return; } - - let idx = y.saturating_mul(self.pitch).saturating_add(x); - if idx >= self.back_buffer_len { + let idx = y * self.pitch + x; + if idx >= self.meta.buf_len { return; } - - self.back_buffer[idx] = color; + unsafe { self.user_fb.buf_virt.add(idx).write(color) }; } #[inline(always)] @@ -51,47 +104,30 @@ impl Framebuffer { if y >= self.height || x >= self.width || len == 0 { return; } - let max_len = self.width - x; - let len = core::cmp::min(len, max_len); + let len = core::cmp::min(len, self.width - x); let start = y * self.pitch + x; - let end = start + len; unsafe { - self.back_buffer.get_unchecked_mut(start..end).fill(color); + let slice = core::slice::from_raw_parts_mut(self.user_fb.buf_virt.add(start), len); + slice.fill(color); } } - pub fn swap(&mut self) { + pub fn present(&mut self) { unsafe { - core::ptr::copy_nonoverlapping( - self.back_buffer.as_ptr(), - self.addr, - self.back_buffer_len, - ); - } - } - - pub unsafe fn load_from_ptr( - &mut self, - src_ptr: *const u32, - src_width: usize, - src_height: usize, - ) { - let h = core::cmp::min(src_height, self.height); - let w = core::cmp::min(src_width, self.width); - - for y in 0..h { - let src_row = unsafe { src_ptr.add(y * src_width) }; - let dst_row = unsafe { self.back_buffer.as_mut_ptr().add(y * self.pitch) }; - unsafe { core::ptr::copy_nonoverlapping(src_row, dst_row, w) }; + core::ptr::copy_nonoverlapping(self.user_fb.buf_virt, self.addr, self.meta.buf_len); } } pub fn clear(&mut self, color: u32) { - self.back_buffer.fill(color); + unsafe { + let slice = core::slice::from_raw_parts_mut(self.user_fb.buf_virt, self.meta.buf_len); + slice.fill(color); + } } } unsafe impl Send for Framebuffer {} +unsafe impl Send for UserFrameBuffer {} pub static FRAMEBUFFER: Mutex> = Mutex::new(None); diff --git a/kernel/src/driver/keyboard.rs b/kernel/src/driver/keyboard.rs index def764f..f587364 100644 --- a/kernel/src/driver/keyboard.rs +++ b/kernel/src/driver/keyboard.rs @@ -65,11 +65,11 @@ pub fn process_scancodes() { }; if let Some(kbd_event) = process_scancode(scancode) { - let pid = current_pid().unwrap_or(0); - if pid == 0 { - continue; + let mut scheduler = SCHEDULER.lock(); + for process in scheduler.processes.values_mut() { + process.kbd_buffer.push(kbd_event); } - SCHEDULER.with_process(pid, |process| process.kbd_buffer.push(kbd_event)); + drop(scheduler); } } } diff --git a/kernel/src/driver/serial.rs b/kernel/src/driver/serial.rs index bca1bf6..2b77598 100644 --- a/kernel/src/driver/serial.rs +++ b/kernel/src/driver/serial.rs @@ -1,6 +1,7 @@ use crate::driver::graphics::font_render::render_text; use crate::driver::graphics::framebuffer::Framebuffer; use crate::{driver::graphics::base::rgb, util::serial_print}; +use alloc::string::String; use core::fmt::{self, Write}; use spin::Mutex; @@ -16,61 +17,53 @@ pub struct ConsoleWriter<'a> { impl Write for ConsoleWriter<'_> { fn write_str(&mut self, s: &str) -> fmt::Result { serial_print(s); - self.console.render_text(self.fb, s, 2, false); + self.console.print(s, self.fb); Ok(()) } } pub struct SerialConsole { - start_x: usize, - pub current_x: usize, - current_y: usize, + text: String, + font_size: usize, + dirty: bool, } impl SerialConsole { - pub fn new(start_x: usize, start_y: usize) -> SerialConsole { + pub fn new() -> SerialConsole { SerialConsole { - start_x, - current_x: start_x, - current_y: start_y, + text: String::new(), + font_size: 2, + dirty: false, } } - pub fn render_text( - &mut self, - fb: &mut Framebuffer, - text: &str, - font_size: usize, - should_center: bool, - ) { - let (new_x, new_y) = render_text( - fb, - if should_center { - self.current_x - (text.len() - text.matches('\n').count()) * (font_size * 4) - } else { - self.current_x - }, - self.current_y, - text, - font_size, - rgb(255, 255, 255), - self.start_x, - ); - self.current_x = new_x; - self.current_y = new_y; + pub fn print(&mut self, text: &str, fb: &mut Framebuffer) { + let max_height = fb.height / (12 * self.font_size); + if self.text.split('\n').count() > max_height { + self.clear(); + } + self.text.push_str(text); + self.dirty = true; } - pub fn clear(&mut self, start_x: usize, start_y: usize) { - self.start_x = start_x; - self.current_x = start_x; - self.current_y = start_y; + pub fn render(&mut self, fb: &mut Framebuffer) { + if self.dirty { + fb.clear(rgb(0, 0, 0)); + self.dirty = false; + render_text(fb, 0, 0, &self.text, self.font_size, rgb(255, 255, 255), 0); + } + } + + pub fn clear(&mut self) { + self.dirty = true; + self.text.clear(); } } pub static SERIAL_CONSOLE: Mutex> = Mutex::new(None); -pub fn init_serial_console(start_x: usize, start_y: usize) { - *SERIAL_CONSOLE.lock() = Some(SerialConsole::new(start_x, start_y)); +pub fn init_serial_console() { + *SERIAL_CONSOLE.lock() = Some(SerialConsole::new()); } pub fn with_serial_console(f: F) { diff --git a/kernel/src/driver/timer.rs b/kernel/src/driver/timer.rs index 393086e..ab150cd 100644 --- a/kernel/src/driver/timer.rs +++ b/kernel/src/driver/timer.rs @@ -27,6 +27,17 @@ impl Timer { } pub fn interrupt(&self) { + let mut scheduler = without_interrupts(|| SCHEDULER.lock()); + for process in scheduler.processes.values_mut() { + if let Some(wake_tick) = process.info.wake_tick { + if self.interrupt_count.load(Ordering::Relaxed) >= wake_tick { + process.info.wake_tick = None; + process.state = crate::task::process::ProcessState::Ready; + } + } + } + drop(scheduler); + self.interrupt_count.fetch_add(1, Ordering::Relaxed); } diff --git a/kernel/src/main.rs b/kernel/src/main.rs index 0b648f5..0d293e2 100644 --- a/kernel/src/main.rs +++ b/kernel/src/main.rs @@ -1,7 +1,7 @@ #![no_std] #![no_main] #![feature(abi_x86_interrupt)] -#![feature(str_from_raw_parts)] +#![feature(naked_functions_rustic_abi)] extern crate alloc; use core::fmt::Write; @@ -17,7 +17,6 @@ pub mod task; pub mod util; use crate::arch::arch::{infinite_idle, init, kernel_crash, run_elf}; -use crate::driver::elf::loader::load_file; use crate::driver::graphics::base::rgb; use crate::driver::graphics::framebuffer::{init_framebuffer, with_framebuffer}; use crate::driver::keyboard::init_keyboard; @@ -118,7 +117,7 @@ unsafe extern "C" fn kmain() -> ! { } } - init_serial_console(0, 0); + init_serial_console(); init_keyboard(); @@ -128,9 +127,7 @@ unsafe extern "C" fn kmain() -> ! { println!("Could not get date at boot. Will default to 0.") } - with_framebuffer(|fb| fb.swap()); - - run_elf(INIT_ELF_BYTES); + run_elf(INIT_ELF_BYTES, false); loop {} } @@ -141,7 +138,7 @@ fn rust_panic(_info: &core::panic::PanicInfo) -> ! { fb.clear(rgb(180, 0, 0)); with_serial_console(|console| { - console.clear(5, 5); + console.clear(); let mut writer = ConsoleWriter { fb: &mut fb, @@ -151,7 +148,6 @@ fn rust_panic(_info: &core::panic::PanicInfo) -> ! { let _ = writer.write_str("KERNEL PANIC\n\n"); let _ = writer.write_fmt(core::format_args!("{}", _info)); - fb.swap(); }); }); diff --git a/kernel/src/mm/address_space.rs b/kernel/src/mm/address_space.rs index 7031921..3e0cc35 100644 --- a/kernel/src/mm/address_space.rs +++ b/kernel/src/mm/address_space.rs @@ -58,6 +58,6 @@ impl AddressSpace { } } -unsafe fn physical_to_virt_pointer(phys_addr: PhysAddr, hhdm_offset: u64) -> *mut u64 { +pub unsafe fn physical_to_virt_pointer(phys_addr: PhysAddr, hhdm_offset: u64) -> *mut u64 { (hhdm_offset + phys_addr.as_u64()) as *mut u64 } diff --git a/kernel/src/task/context.rs b/kernel/src/task/context.rs index e69de29..a5dc2b7 100644 --- a/kernel/src/task/context.rs +++ b/kernel/src/task/context.rs @@ -0,0 +1,34 @@ +use crate::task::scheduler::{SCHEDULER, current_pid}; + +#[repr(C)] +#[derive(Clone, Copy)] +pub struct UserContext { + //general purpose data regs + pub r15: u64, + pub r14: u64, + pub r13: u64, + pub r12: u64, + pub r11: u64, // rflags + pub r10: u64, + pub r9: u64, + pub r8: u64, + pub rsi: u64, + pub rdi: u64, + pub rbp: u64, + pub rdx: u64, + pub rcx: u64, // rip + pub rbx: u64, + pub rax: u64, + pub rsp: u64, // user rsp +} + +#[unsafe(no_mangle)] +pub extern "C" fn ctx_save(regs: *const UserContext) { + if let Some(pid) = current_pid() { + let mut guard = SCHEDULER.lock(); + if let Some(process) = guard.processes.get_mut(&pid) { + let saved_ctx = unsafe { core::ptr::read(regs) }; + process.saved_ctx = Some(saved_ctx); + } + } +} diff --git a/kernel/src/task/process.rs b/kernel/src/task/process.rs index 2223db9..8375cd6 100644 --- a/kernel/src/task/process.rs +++ b/kernel/src/task/process.rs @@ -1,6 +1,8 @@ use alloc::vec::Vec; -use crate::{driver::keyboard::KeyboardEvent, mm::address_space::AddressSpace}; +use crate::{ + driver::keyboard::KeyboardEvent, mm::address_space::AddressSpace, task::context::UserContext, +}; pub enum ProcessState { Ready, @@ -9,6 +11,12 @@ pub enum ProcessState { Zombie, } +pub struct ProcessInfo { + pub exit_code: usize, + pub parent: usize, + pub wake_tick: Option, +} + pub struct Process { pub pid: u64, pub state: ProcessState, @@ -17,7 +25,10 @@ pub struct Process { pub heap_end: u64, pub kbd_buffer: Vec, pub address_space: Option, + pub saved_ctx: Option, + pub should_reschedule: bool, pub user_entry: u64, + pub info: ProcessInfo, } impl Process { pub fn new( @@ -35,7 +46,14 @@ impl Process { heap_end, kbd_buffer: Vec::new(), address_space: None, + saved_ctx: None, + should_reschedule: false, user_entry, + info: ProcessInfo { + exit_code: 0, + parent: 0, + wake_tick: None, + }, } } } diff --git a/kernel/src/task/scheduler.rs b/kernel/src/task/scheduler.rs index 8a7d0de..9ebbdc3 100644 --- a/kernel/src/task/scheduler.rs +++ b/kernel/src/task/scheduler.rs @@ -1,9 +1,16 @@ use core::sync::atomic::{AtomicU64, Ordering}; -use alloc::collections::btree_map::BTreeMap; +use alloc::{collections::btree_map::BTreeMap, vec::Vec}; use x86_64::instructions::interrupts::without_interrupts; -use crate::{arch::arch::enter_usermode, task::process::Process, util::Locked}; +use crate::{ + arch::arch::enter_usermode, + task::{ + context::UserContext, + process::{Process, ProcessState}, + }, + util::Locked, +}; pub static CURRENT_PID: AtomicU64 = AtomicU64::new(0); @@ -45,14 +52,76 @@ impl Locked { Some(pid) } - pub fn run_process(&self, pid: u64, entry_point: *const u8) { - let stack_top = { - let guard = without_interrupts(|| self.lock()); - guard.processes[&pid].stack_top + pub fn next_task(&self) -> u64 { + if let Some(previous_pid) = current_pid() { + let mut guard = without_interrupts(|| self.lock()); + + if let Some(process) = guard.processes.get_mut(&previous_pid) { + if matches!(process.state, ProcessState::Running) { + process.state = ProcessState::Ready; + } + } + + let ready_pids: Vec = guard + .processes + .iter() + .filter(|(_, process)| matches!(process.state, ProcessState::Ready)) + .map(|(&pid, _)| pid) + .collect(); + + if ready_pids.is_empty() { + return previous_pid; + } + + let current_index = ready_pids.iter().position(|&pid| pid == previous_pid); + + return match current_index { + Some(i) => { + let next_index = (i + 1) % ready_pids.len(); + ready_pids[next_index] + } + None => ready_pids[0], + }; + } else { + panic!("Could not get current PID when switching to next task") + }; + } + + pub fn switch_to(&self, pid: u64, should_swapgs: bool) { + let (ctx_opt, entry, stack_top) = { + let mut guard = without_interrupts(|| self.lock()); + + if let Some(previous_pid) = current_pid() { + if let Some(old_process) = guard.processes.get_mut(&previous_pid) { + if matches!(old_process.state, ProcessState::Running) { + old_process.state = ProcessState::Ready; + } + } else { + // no previous process + } + } + + let new_process = guard.processes.get_mut(&pid).expect("Cant get new process"); + new_process.state = ProcessState::Running; + if let Some(address_space) = new_process.address_space.as_mut() { + address_space.use_address_space(); + }; + + ( + new_process.saved_ctx, + new_process.user_entry, + new_process.stack_top, + ) }; set_current_pid(Some(pid)); - enter_usermode(entry_point as u64, (stack_top & !0xF) - 8); + + match ctx_opt { + Some(saved_ctx) => unsafe { + run_next((&saved_ctx) as *const UserContext, saved_ctx.rsp) + }, + None => enter_usermode(entry as u64, (stack_top & !0xF) - 8, should_swapgs), + } } pub fn with_process(&self, index: u64, f: F) -> Option @@ -66,3 +135,30 @@ impl Locked { } pub static SCHEDULER: Locked = Locked::new(Scheduler::new()); + +#[unsafe(naked)] +#[unsafe(no_mangle)] +unsafe fn run_next(ctx: *const UserContext, user_rsp: u64) { + core::arch::naked_asm!( + "mov gs:[0], rsi", // store new user rsp + "mov rsp, rdi", + "mov r15, qword ptr [rsp + 0]", + "mov r14, qword ptr [rsp + 8]", + "mov r13, qword ptr [rsp + 16]", + "mov r12, qword ptr [rsp + 24]", + "mov r11, qword ptr [rsp + 32]", // rflags + "mov r10, qword ptr [rsp + 40]", + "mov r9, qword ptr [rsp + 48]", + "mov r8, qword ptr [rsp + 56]", + "mov rsi, qword ptr [rsp + 64]", + "mov rdi, qword ptr [rsp + 72]", + "mov rbp, qword ptr [rsp + 80]", + "mov rdx, qword ptr [rsp + 88]", + "mov rcx, qword ptr [rsp + 96]", // rip + "mov rbx, qword ptr [rsp + 104]", + "mov rax, qword ptr [rsp + 112]", + "mov rsp, qword ptr [rsp + 120]", // user rsp + "swapgs", + "sysretq", + ); +} diff --git a/user/apps/doomgeneric b/user/apps/doomgeneric index 8a1cf38..703b2e6 160000 --- a/user/apps/doomgeneric +++ b/user/apps/doomgeneric @@ -1 +1 @@ -Subproject commit 8a1cf38d710cb47b110bf9ed21a548f386bc2a5f +Subproject commit 703b2e6e219044c815bef1d2900f7b4f2924d94f diff --git a/user/init b/user/init index 3fe910f..4690716 160000 --- a/user/init +++ b/user/init @@ -1 +1 @@ -Subproject commit 3fe910f33af9fe1bfbd01aeff6abdaae847f54b8 +Subproject commit 469071622757e58287d1c3fc9fe12d505951f89d diff --git a/user/libxunil b/user/libxunil index 222374a..da6f056 160000 --- a/user/libxunil +++ b/user/libxunil @@ -1 +1 @@ -Subproject commit 222374a639d73bfdfc54b2a87136c6704b16d76c +Subproject commit da6f056359e682655623723873c54f7f4c59bcdb