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