Need help understand how the scheduler table entries work

Gedare Bloom gedare at rtems.org
Tue Aug 11 13:09:24 UTC 2020


On Tue, Aug 11, 2020 at 12:42 AM Richi Dubey <richidubey at gmail.com> wrote:
>
> This really helped. Thank you.
>
>> 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.
>
> I understand. The Ready queue per priority that was used earlier (link) has to be removed. Hence the question.
>
Hopefully, you have got to know that is just to find the maximum
priority in setting up the table entry.

> Thank you.
>
> On Mon, Aug 10, 2020 at 9:04 PM Gedare Bloom <gedare at rtems.org> wrote:
>>
>> 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