From 9693d83bde0416764f8324fe366e0916a6f4546b Mon Sep 17 00:00:00 2001 From: Garen Tyler Date: Thu, 9 Nov 2023 20:55:46 -0700 Subject: [PATCH] finish arch --- kernel/rustkernel/src/arch/mod.rs | 7 ++++++- kernel/rustkernel/src/arch/riscv/mod.rs | 3 +-- .../rustkernel/src/{mem => arch/riscv}/virtual_memory.rs | 2 +- kernel/rustkernel/src/fs/file.rs | 2 +- kernel/rustkernel/src/io/pipe.rs | 6 ++---- kernel/rustkernel/src/lib.rs | 6 +++--- kernel/rustkernel/src/mem/mod.rs | 1 - kernel/rustkernel/src/proc/process.rs | 6 +++--- kernel/rustkernel/src/syscall.rs | 3 +-- 9 files changed, 18 insertions(+), 18 deletions(-) rename kernel/rustkernel/src/{mem => arch/riscv}/virtual_memory.rs (99%) diff --git a/kernel/rustkernel/src/arch/mod.rs b/kernel/rustkernel/src/arch/mod.rs index 31b402b..7fc8fb9 100644 --- a/kernel/rustkernel/src/arch/mod.rs +++ b/kernel/rustkernel/src/arch/mod.rs @@ -1,5 +1,5 @@ #[cfg(target_arch = "riscv64")] -pub mod riscv; +mod riscv; #[cfg(target_arch = "riscv64")] pub use riscv::hardware; @@ -43,6 +43,11 @@ pub mod mem { } } +pub mod virtual_memory { + #[cfg(target_arch = "riscv64")] + pub use super::riscv::virtual_memory::{kvminit as init, kvminithart as inithart, copyin, copyinstr, copyout, mappages, uvmalloc, uvmcopy, uvmcreate, uvmdealloc, uvmfree, uvmunmap}; +} + pub mod power { #[cfg(target_arch = "riscv64")] pub use super::riscv::power::shutdown; diff --git a/kernel/rustkernel/src/arch/riscv/mod.rs b/kernel/rustkernel/src/arch/riscv/mod.rs index b4c90d2..c4f97c2 100644 --- a/kernel/rustkernel/src/arch/riscv/mod.rs +++ b/kernel/rustkernel/src/arch/riscv/mod.rs @@ -7,8 +7,7 @@ pub mod plic; pub mod power; pub mod start; pub mod trap; - -pub use mem::make_satp; +pub mod virtual_memory; /// Previous mode pub const MSTATUS_MPP_MASK: u64 = 3 << 11; diff --git a/kernel/rustkernel/src/mem/virtual_memory.rs b/kernel/rustkernel/src/arch/riscv/virtual_memory.rs similarity index 99% rename from kernel/rustkernel/src/mem/virtual_memory.rs rename to kernel/rustkernel/src/arch/riscv/virtual_memory.rs index 2c641d8..bfabde4 100644 --- a/kernel/rustkernel/src/mem/virtual_memory.rs +++ b/kernel/rustkernel/src/arch/riscv/virtual_memory.rs @@ -1,3 +1,4 @@ +use super::{asm, mem::{make_satp, pte2pa}, plic::PLIC, power::QEMU_POWER}; use crate::{ arch::{ self, @@ -6,7 +7,6 @@ use crate::{ round_down_page, round_up_page, Pagetable, PagetableEntry, KERNEL_BASE, PAGE_SIZE, PHYSICAL_END, PTE_R, PTE_U, PTE_V, PTE_W, PTE_X, TRAMPOLINE, VIRTUAL_MAX, }, - riscv::{asm, make_satp, mem::pte2pa, plic::PLIC, power::QEMU_POWER}, }, mem::{ kalloc::{kalloc, kfree}, diff --git a/kernel/rustkernel/src/fs/file.rs b/kernel/rustkernel/src/fs/file.rs index c197d3f..1243921 100644 --- a/kernel/rustkernel/src/fs/file.rs +++ b/kernel/rustkernel/src/fs/file.rs @@ -3,7 +3,7 @@ use crate::{ fs::{log, stat::Stat}, io::pipe::Pipe, - mem::virtual_memory::copyout, + arch::virtual_memory::copyout, proc::process::Process, sync::{sleeplock::Sleeplock, spinlock::Spinlock}, }; diff --git a/kernel/rustkernel/src/io/pipe.rs b/kernel/rustkernel/src/io/pipe.rs index 7cf16a3..731040e 100644 --- a/kernel/rustkernel/src/io/pipe.rs +++ b/kernel/rustkernel/src/io/pipe.rs @@ -1,9 +1,7 @@ use crate::{ fs::file::{filealloc, fileclose, File, FileType}, - mem::{ - kalloc::{kalloc, kfree}, - virtual_memory::{copyin, copyout}, - }, + mem::kalloc::{kalloc, kfree}, + arch::virtual_memory::{copyin, copyout}, proc::{process::Process, scheduler::wakeup}, sync::spinlock::Spinlock, }; diff --git a/kernel/rustkernel/src/lib.rs b/kernel/rustkernel/src/lib.rs index 5f261ed..cc0f9fa 100644 --- a/kernel/rustkernel/src/lib.rs +++ b/kernel/rustkernel/src/lib.rs @@ -59,8 +59,8 @@ pub unsafe fn main() -> ! { console::consoleinit(); mem::kalloc::kinit(); println!("\nxv6 kernel is booting"); - mem::virtual_memory::kvminit(); - mem::virtual_memory::kvminithart(); + arch::virtual_memory::init(); + arch::virtual_memory::inithart(); proc::process::procinit(); arch::trap::inithart(); arch::interrupt::init(); @@ -75,7 +75,7 @@ pub unsafe fn main() -> ! { while !STARTED { core::hint::spin_loop(); } - mem::virtual_memory::kvminithart(); + arch::virtual_memory::inithart(); arch::trap::inithart(); arch::interrupt::inithart(); } diff --git a/kernel/rustkernel/src/mem/mod.rs b/kernel/rustkernel/src/mem/mod.rs index edd2990..8049126 100644 --- a/kernel/rustkernel/src/mem/mod.rs +++ b/kernel/rustkernel/src/mem/mod.rs @@ -1,5 +1,4 @@ pub mod kalloc; -pub mod virtual_memory; #[no_mangle] pub unsafe extern "C" fn memset(dst: *mut u8, data: i32, max_bytes: u32) -> *mut u8 { diff --git a/kernel/rustkernel/src/proc/process.rs b/kernel/rustkernel/src/proc/process.rs index ea137dc..26b32e9 100644 --- a/kernel/rustkernel/src/proc/process.rs +++ b/kernel/rustkernel/src/proc/process.rs @@ -10,6 +10,9 @@ use crate::{ arch::{ mem::{Pagetable, PAGE_SIZE, PTE_R, PTE_W, PTE_X, TRAMPOLINE, TRAPFRAME}, trap::InterruptBlocker, + virtual_memory::{ + copyout, mappages, uvmalloc, uvmcopy, uvmcreate, uvmdealloc, uvmfree, uvmunmap, + }, }, fs::{ file::{fileclose, filedup, File, Inode}, @@ -19,9 +22,6 @@ use crate::{ mem::{ kalloc::{kalloc, kfree}, memset, - virtual_memory::{ - copyout, mappages, uvmalloc, uvmcopy, uvmcreate, uvmdealloc, uvmfree, uvmunmap, - }, }, sync::spinlock::Spinlock, uprintln, diff --git a/kernel/rustkernel/src/syscall.rs b/kernel/rustkernel/src/syscall.rs index 719a7dc..0f088a2 100644 --- a/kernel/rustkernel/src/syscall.rs +++ b/kernel/rustkernel/src/syscall.rs @@ -1,12 +1,11 @@ use crate::{ - arch::{clock::CLOCK_TICKS, power::shutdown}, + arch::{clock::CLOCK_TICKS, power::shutdown, virtual_memory::{copyin, copyinstr}}, fs::{ self, file::{self, File}, log::LogOperation, stat::KIND_DIR, }, - mem::virtual_memory::{copyin, copyinstr}, println, proc::process::Process, string::strlen,