xref: /DragonOS/kernel/src/process/fork.rs (revision 66f67c6a95b8aad85cfd2146a86e5e3e6a3568e7)
1*66f67c6aSlogin use crate::{include::bindings::bindings::{process_control_block, CLONE_SIGHAND}, kdebug, libs::{refcount::{refcount_inc, RefCount}, ffi_convert::FFIBind2Rust}, arch::x86_64::asm::current::current_pcb};
2*66f67c6aSlogin 
3*66f67c6aSlogin #[no_mangle]
4*66f67c6aSlogin pub extern "C" fn process_copy_sighand(clone_flags: u64, pcb: *mut process_control_block) -> i32 {
5*66f67c6aSlogin     kdebug!("process_copy_sighand");
6*66f67c6aSlogin     if(clone_flags & (CLONE_SIGHAND as u64)) != 0{
7*66f67c6aSlogin         let r = RefCount::convert_mut(unsafe{&mut (*((current_pcb().sighand))).count}).unwrap();
8*66f67c6aSlogin        refcount_inc(r);
9*66f67c6aSlogin     }
10*66f67c6aSlogin     0
11*66f67c6aSlogin }
12*66f67c6aSlogin 
13*66f67c6aSlogin #[no_mangle]
14*66f67c6aSlogin pub extern "C" fn process_copy_signal(clone_flags: u64, pcb: *mut process_control_block) -> i32 {
15*66f67c6aSlogin     kdebug!("process_copy_signal");
16*66f67c6aSlogin     0
17*66f67c6aSlogin }
18*66f67c6aSlogin 
19*66f67c6aSlogin #[no_mangle]
20*66f67c6aSlogin pub extern "C" fn process_exit_signal(pcb: *mut process_control_block){
21*66f67c6aSlogin     // todo: 回收进程的信号结构体
22*66f67c6aSlogin }
23*66f67c6aSlogin 
24*66f67c6aSlogin #[no_mangle]
25*66f67c6aSlogin pub extern "C" fn process_exit_sighand(pcb: *mut process_control_block){
26*66f67c6aSlogin     // todo: 回收进程的sighand结构体
27*66f67c6aSlogin }
28