summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/src/tasks.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cpukit/rtems/src/tasks.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/cpukit/rtems/src/tasks.c b/cpukit/rtems/src/tasks.c
index 70ec7d6928..8906805164 100644
--- a/cpukit/rtems/src/tasks.c
+++ b/cpukit/rtems/src/tasks.c
@@ -114,26 +114,21 @@ User_extensions_routine _RTEMS_tasks_Switch_extension(
asr = &api->Signal;
_ISR_Disable( level );
-
- signal_set = asr->signals_posted;
-
- if ( signal_set ) {
- /* if ( _ASR_Are_signals_pending( asr ) ) {
-
- signal_set = asr->signals_posted; */
+ signal_set = asr->signals_posted;
asr->signals_posted = 0;
- _ISR_Enable( level );
+ _ISR_Enable( level );
- asr->nest_level += 1;
- rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
- (*asr->handler)( signal_set );
+ if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
+ return;
- asr->nest_level -= 1;
- rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
- }
- else
- _ISR_Enable( level );
+ asr->nest_level += 1;
+ rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
+
+ (*asr->handler)( signal_set );
+
+ asr->nest_level -= 1;
+ rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
}