Need help understand how the scheduler table entries work

Gedare Bloom gedare at rtems.org
Mon Aug 10 15:34:39 UTC 2020


On Mon, Aug 10, 2020 at 9:10 AM Richi Dubey <richidubey at gmail.com> wrote:
>
> Hi,
>
> I want your help to figure out how the table entries for a scheduler work.
>
> For STRONG_APA scheduler, the flow is :
> link
> -------------------------------------------------------------------------------------------------------
>   #define RTEMS_SCHEDULER_TABLE_STRONG_APA( name, obj_name ) \
>     { \
>       &SCHEDULER_STRONG_APA_CONTEXT_NAME( name ).Base.Base.Base, \
>       SCHEDULER_STRONG_APA_ENTRY_POINTS, \
>       RTEMS_ARRAY_SIZE( \
>         SCHEDULER_STRONG_APA_CONTEXT_NAME( name ).Ready \
>       ) - 1, \
>       ( obj_name ) \
>       SCHEDULER_CONTROL_IS_NON_PREEMPT_MODE_SUPPORTED( false ) \
>     }
>
> -------------------------------------------------------------------------------------------------------
> which is used for:
> link
> -------------------------------------------------------------------------------------------------------
>
> #ifdef CONFIGURE_SCHEDULER_STRONG_APA
>   #ifndef CONFIGURE_SCHEDULER_NAME
>     #define CONFIGURE_SCHEDULER_NAME rtems_build_name( 'M', 'A', 'P', 'A' )
>   #endif
>
>   #ifndef CONFIGURE_SCHEDULER_TABLE_ENTRIES
>     #define CONFIGURE_SCHEDULER \
>       RTEMS_SCHEDULER_STRONG_APA( \
>         dflt, \
>         CONFIGURE_MAXIMUM_PRIORITY + 1 \
>       )
>
>     #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
>       RTEMS_SCHEDULER_TABLE_STRONG_APA( dflt, CONFIGURE_SCHEDULER_NAME )
>   #endif
> #endif
> -------------------------------------------------------------------------------------------------------
>
> which is eventually used for:
>
> link
> -------------------------------------------------------------------------------------------------------
> const Scheduler_Control _Scheduler_Table[] = {
>   CONFIGURE_SCHEDULER_TABLE_ENTRIES
> };
>
> -------------------------------------------------------------------------------------------------------
>
> I do not understand what the Scheduler_Table[] or the SCHEDULER_TABLE_ENTRIES should contain.

The type definition of the _Scheduler_Table[] is Scheduler_Control.
This structure is defined in
cpukit/include/rtems/score/scheduler.h:269

> I need help with this because I have to change the RTEMS_SCHEDULER_TABLE_STRONG_APA since I am changing some of the variables in the Scheduler_strong_APA_Context.
>
There is not really anything to change about it. You specialize the
scheduler by the Scheduler_Context and Scheduler_Operations
structures. You still just pass through the context base to the
scheduler table.

> Thank you,
> Richi.
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list