1 use core::{ 2 ptr::null_mut, 3 sync::atomic::{compiler_fence, Ordering}, 4 }; 5 6 use crate::{ 7 arch::asm::current::current_pcb, 8 kdebug, 9 mm::{ 10 set_INITIAL_PROCESS_ADDRESS_SPACE, ucontext::AddressSpace, INITIAL_PROCESS_ADDRESS_SPACE, 11 }, 12 }; 13 14 pub mod abi; 15 pub mod c_adapter; 16 pub mod exec; 17 pub mod fork; 18 pub mod initial_proc; 19 pub mod pid; 20 pub mod preempt; 21 pub mod process; 22 pub mod syscall; 23 24 pub fn process_init() { 25 unsafe { 26 compiler_fence(Ordering::SeqCst); 27 current_pcb().address_space = null_mut(); 28 kdebug!("To create address space for INIT process."); 29 // test_buddy(); 30 set_INITIAL_PROCESS_ADDRESS_SPACE( 31 AddressSpace::new(true).expect("Failed to create address space for INIT process."), 32 ); 33 kdebug!("INIT process address space created."); 34 compiler_fence(Ordering::SeqCst); 35 current_pcb().set_address_space(INITIAL_PROCESS_ADDRESS_SPACE()); 36 compiler_fence(Ordering::SeqCst); 37 }; 38 } 39