pub fn dequeue_signal(current_task: &mut CurrentTask) {
    let task = current_task.task_arc_clone();
    let mut signal_state = task.signals.write();

    let mask = signal_state.mask;
    if let Some(siginfo) = signal_state.take_next_allowed_by_mask(mask) {
        let sigaction = task.signal_actions.get(siginfo.signal);
        match action_for_signal(&siginfo, sigaction) {
            DeliveryAction::CallHandler => {
                dispatch_signal_handler(current_task, &mut signal_state, siginfo, sigaction);
            }

            DeliveryAction::Ignore => {}

            action => not_implemented!("Unimplemented signal delivery action {:?}", action),
        };
    }
}
/// Dequeues and handles a pending signal for `current_task`.
Dequeues and handles a pending signal for `current_task`.
Dequeues and handles a pending signal for ` current_task ` .
pub fn dequeue_signal(current_task: &mut CurrentTask) {
    let task = current_task.task_arc_clone();
    let mut signal_state = task.signals.write();
    let mask = signal_state.mask;
    if let Some(siginfo) = signal_state.take_next_allowed_by_mask(mask) {
        let sigaction = task.signal_actions.get(siginfo.signal);
        match action_for_signal(&siginfo, sigaction) {
            DeliveryAction::CallHandler => {
                dispatch_signal_handler(current_task, &mut signal_state, siginfo, sigaction);
            }
            DeliveryAction::Ignore => {}
            action => not_implemented!("Unimplemented signal delivery action {:?}", action),
        };
    }
}
pub fn dequeue_signal ( current_task : & mut CurrentTask ) { let task = current_task . task_arc_clone ( ) ; let mut signal_state = task . signals . write ( ) ; let mask = signal_state . mask ; if let Some ( siginfo ) = signal_state . take_next_allowed_by_mask ( mask ) { let sigaction = task . signal_actions . get ( siginfo . signal ) ; match action_for_signal ( & siginfo , sigaction ) { DeliveryAction :: CallHandler => { dispatch_signal_handler ( current_task , & mut signal_state , siginfo , sigaction ) ; } DeliveryAction :: Ignore => { } action => not_implemented ! ( " " action ) , } ; } }
Dequeues and handles a pending signal for `current_task`.
Dequeues and handles a pending signal for ` current_task ` .
current_task
&mut CurrentTask
current_task
&mut CurrentTask