On Fri, Feb 19, 2021 at 12:00 AM Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > > On 18/02/2021 20:29, Joel Sherrill wrote: > > > > > > > On Thu, Feb 18, 2021 at 11:32 AM Gedare Bloom <ged...@rtems.org > > <mailto:ged...@rtems.org>> wrote: > > > > On Wed, Feb 17, 2021 at 12:30 PM Sebastian Huber > > <sebastian.hu...@embedded-brains.de > > <mailto:sebastian.hu...@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()? >
supported() is better than implemented() I think, but that should capture the idea of Joel's comment about having a function/macro to check that the requested mode is supported by the schedler. > -- > embedded brains GmbH > Herr Sebastian HUBER > Dornierstr. 4 > 82178 Puchheim > Germany > email: sebastian.hu...@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/ > _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel