[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