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