> > During system startup the application configuration defines which > processor is available to RTEMS. Every configured and present processor > gets an idle thread assigned which is managed by a scheduler. This is > the starting point of the system. If someone calls > rtems_scheduler_remove_processor(), then a processor gets removed from a > scheduler instance. This processor still has to execute code. For this a > idle thread is used. This idle thread is not managed by a scheduler. If > someone uses rtems_scheduler_add_processor() this idle thread is again > controlled by a scheduler.
This makes sense. Thanks. On Thu, Jul 16, 2020 at 9:17 PM Sebastian Huber < sebastian.hu...@embedded-brains.de> wrote: > On 15/07/2020 14:55, Richi Dubey wrote: > > > On Wed, Jul 15, 2020 at 5:57 PM Richi Dubey <richidu...@gmail.com > > <mailto:richidu...@gmail.com>> wrote: > > > > Hi, > > > > I had a small question. The scheduler struct inside percpu.h looks > > like: > > > > ------------------------------------------------------------------------------------------------------ > > struct { > > /** > > * @brief The scheduler control of the scheduler owning this > > processor. > > * > > * This pointer is NULL in case this processor is currently > > not used by a > > * scheduler instance. > > */ > > const struct _Scheduler_Control *control; > > > > /** > > * @brief The scheduler context of the scheduler owning this > > processor. > > * > > * This pointer is NULL in case this processor is currently > > not used by a > > * scheduler instance. > > */ > > const struct Scheduler_Context *context; > > > > /** > > * @brief The idle thread for this processor in case it is > > online and > > * currently not used by a scheduler instance. > > */ > > struct _Thread_Control *idle_if_online_and_unused; > > } Scheduler; > > > > ------------------------------------------------------------------------------------------------------ > > So, does this mean a CPU when active is always either executing an > > idle thread and is not being used by a scheduler (so has a thread > > attribute in the idle_if_online_and_unused), or is used by a > > scheduler and is executing a task ( which can not be an idle > > task)? Another equivalent question is do we have an idle scheduler > > node, like we have idle predefined threads that run on a CPU? > > > During system startup the application configuration defines which > processor is available to RTEMS. Every configured and present processor > gets an idle thread assigned which is managed by a scheduler. This is > the starting point of the system. If someone calls > rtems_scheduler_remove_processor(), then a processor gets removed from a > scheduler instance. This processor still has to execute code. For this a > idle thread is used. This idle thread is not managed by a scheduler. If > someone uses rtems_scheduler_add_processor() this idle thread is again > controlled by a scheduler. > >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel