[PATCH 11/13] rtems: New errors for rtems_signal_catch()

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Feb 19 07:00:53 UTC 2021


On 18/02/2021 20:29, Joel Sherrill wrote:

>
>
> On Thu, Feb 18, 2021 at 11:32 AM Gedare Bloom <gedare at rtems.org 
> <mailto:gedare at rtems.org>> wrote:
>
>     On Wed, Feb 17, 2021 at 12:30 PM Sebastian Huber
>     <sebastian.huber at embedded-brains.de
>     <mailto:sebastian.huber at embedded-brains.de>> wrote:
>     >
>     > Ensure that no invalid modes are set during ASR processing.
>     >
>     > Update #4244.
>     > ---
>     >  cpukit/rtems/src/signalcatch.c | 27 +++++++++++++++++++++++++++
>     >  1 file changed, 27 insertions(+)
>     >
>     > diff --git a/cpukit/rtems/src/signalcatch.c
>     b/cpukit/rtems/src/signalcatch.c
>     > index 8ee22e5ec1..da56d26dc5 100644
>     > --- a/cpukit/rtems/src/signalcatch.c
>     > +++ b/cpukit/rtems/src/signalcatch.c
>     > @@ -22,7 +22,10 @@
>     >  #endif
>     >
>     >  #include <rtems/rtems/signalimpl.h>
>     > +#include <rtems/rtems/modesimpl.h>
>     >  #include <rtems/rtems/tasksdata.h>
>     > +#include <rtems/score/schedulerimpl.h>
>     > +#include <rtems/score/smpimpl.h>
>     >  #include <rtems/score/threadimpl.h>
>     >
>     >  RTEMS_STATIC_ASSERT( RTEMS_DEFAULT_MODES == 0,
>     _ASR_Create_mode_set );
>     > @@ -37,7 +40,31 @@ rtems_status_code rtems_signal_catch(
>     >    ASR_Information    *asr;
>     >    ISR_lock_Context    lock_context;
>     >
>     > +#if defined(RTEMS_SMP) || CPU_ENABLE_ROBUST_THREAD_DISPATCH == TRUE
>     > +  if (
>     > +    _Modes_Get_interrupt_level( mode_set ) != 0
>     > +#if CPU_ENABLE_ROBUST_THREAD_DISPATCH == FALSE
>     > +      && _SMP_Need_inter_processor_interrupts()
>     > +#endif
>     > +  ) {
>     > +    return RTEMS_NOT_IMPLEMENTED;
>     > +  }
>     > +#endif
>     > +
>     >    executing = _Thread_State_acquire_for_executing( &lock_context );
>     > +
>     > +#if defined(RTEMS_SMP)
>     add a brief comment here, the logic a little complicated with
>     double-negatives, e.g.,
>     /* Check for non-preempt mode requested with a scheduler that does not
>     support non-preemption */
>
>
> I think I have seen a very similar check in other places. Can this 
> combination
> of logic be turned into a macro which has a better name?
What about _Modes_Is_preempt_mode_implemented() and 
_Modes_Is_interrupt_level_implemented()?

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/



More information about the devel mailing list