xref: /DragonOS/kernel/src/arch/riscv64/process/kthread.rs (revision 81294aa2e6b257f0de5e3c28c3f3c89798330836)
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