fn exit_linux(&self, _exit_code: i32) {
        let mut linux_thread = self.lock_linux();
        let clear_child_tid = &mut linux_thread.clear_child_tid;
        // perform futex wake 1
        // ref: http://man7.org/linux/man-pages/man2/set_tid_address.2.html
        if !clear_child_tid.is_null() {
            info!("exit: do futex {:?} wake 1", clear_child_tid);
            clear_child_tid.write(0).unwrap();
            let uaddr = clear_child_tid.as_ptr() as VirtAddr;
            let futex = self.proc().linux().get_futex(uaddr);
            futex.wake(1);
        }
        self.exit();
    }
/// Exit current thread for Linux.
Exit current thread for Linux.
Exit current thread for Linux .
fn exit_linux(&self, _exit_code: i32) {
        let mut linux_thread = self.lock_linux();
        let clear_child_tid = &mut linux_thread.clear_child_tid;
        // perform futex wake 1
        // ref: http://man7.org/linux/man-pages/man2/set_tid_address.2.html
        if !clear_child_tid.is_null() {
            info!("exit: do futex {:?} wake 1", clear_child_tid);
            clear_child_tid.write(0).unwrap();
            let uaddr = clear_child_tid.as_ptr() as VirtAddr;
            let futex = self.proc().linux().get_futex(uaddr);
            futex.wake(1);
        }
        self.exit();
    }
fn exit_linux ( & self , _exit_code : i32 ) { let mut linux_thread = self . lock_linux ( ) ; let clear_child_tid = & mut linux_thread . clear_child_tid ; // perform futex wake 1 // ref: http://man7.org/linux/man-pages/man2/set_tid_address.2.html if ! clear_child_tid . is_null ( ) { info ! ( " " clear_child_tid ) ; clear_child_tid . write ( 0 ) . unwrap ( ) ; let uaddr = clear_child_tid . as_ptr ( ) as VirtAddr ; let futex = self . proc ( ) . linux ( ) . get_futex ( uaddr ) ; futex . wake ( 1 ) ; } self . exit ( ) ; }
Exit current thread for Linux.
Exit current thread for Linux .
&self
_exit_code
i32
&self
_exit_code
i32