1 use alloc::sync::Arc; 2 use system_error::SystemError; 3 4 use crate::process::{ 5 fork::CloneFlags, 6 kthread::{KernelThreadCreateInfo, KernelThreadMechanism}, 7 Pid, 8 }; 9 10 impl KernelThreadMechanism { 11 /// 伪造trapframe,创建内核线程 12 /// 13 /// ## 返回值 14 /// 15 /// 返回创建的内核线程的pid 16 pub fn __inner_create( 17 info: &Arc<KernelThreadCreateInfo>, 18 clone_flags: CloneFlags, 19 ) -> Result<Pid, SystemError> { 20 unimplemented!("KernelThreadMechanism::__inner_create") 21 } 22 } 23 24 /// 内核线程引导函数的第一阶段 25 /// 26 /// 当内核线程开始执行时,会先执行这个函数,这个函数会将伪造的trapframe中的数据弹出,然后跳转到第二阶段 27 /// 28 /// 跳转之后,指向Box<KernelThreadClosure>的指针将传入到stage2的函数 29 // #[naked] 30 // pub(super) unsafe extern "C" fn kernel_thread_bootstrap_stage1() { 31 // todo!() 32 // } 33 pub(super) unsafe extern "C" fn kernel_thread_bootstrap_stage1() { 34 // 这个函数要是naked的,只是因为现在还没有实现,而naked func不能打`unimplemented!()` 35 // 所以先写成了普通函数 36 unimplemented!("kernel_thread_bootstrap_stage1") 37 } 38