From f6a97f59925e0f6f880fdc5ce9e94a84e5db2998 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 16 Feb 2021 08:15:10 +0100 Subject: rtems: Simplify signal handling Remove superfluous ASR_Information::signals_posted. Move code out of trivial inline functions. Update #4244. --- cpukit/rtems/src/signalcatch.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'cpukit/rtems/src/signalcatch.c') diff --git a/cpukit/rtems/src/signalcatch.c b/cpukit/rtems/src/signalcatch.c index e4ff15fd40..8ee22e5ec1 100644 --- a/cpukit/rtems/src/signalcatch.c +++ b/cpukit/rtems/src/signalcatch.c @@ -22,7 +22,6 @@ #endif #include -#include #include #include @@ -41,12 +40,19 @@ rtems_status_code rtems_signal_catch( executing = _Thread_State_acquire_for_executing( &lock_context ); api = executing->API_Extensions[ THREAD_API_RTEMS ]; asr = &api->Signal; + asr->handler = asr_handler; + asr->mode_set = mode_set; - if ( asr_handler != NULL ) { - asr->mode_set = mode_set; - asr->handler = asr_handler; - } else { - _ASR_Initialize( asr ); + if ( asr_handler == NULL ) { + Chain_Node *node; + + asr->signals_pending = 0; + node = &api->Signal_action.Node; + + if ( !_Chain_Is_node_off_chain( node ) ) { + _Chain_Extract_unprotected( node ); + _Chain_Set_off_chain( node ); + } } _Thread_State_release( executing, &lock_context ); -- cgit v1.2.3