From: Andreas Dachsberger <andreas.dachsber...@embedded-brains.de> --- cpukit/include/rtems/score/scheduleredfsmp.h | 120 +++++++++++++++++++++++++++ 1 file changed, 120 insertions(+)
diff --git a/cpukit/include/rtems/score/scheduleredfsmp.h b/cpukit/include/rtems/score/scheduleredfsmp.h index 961fa97f5f..bf759908f0 100644 --- a/cpukit/include/rtems/score/scheduleredfsmp.h +++ b/cpukit/include/rtems/score/scheduleredfsmp.h @@ -30,6 +30,8 @@ extern "C" { * * @ingroup RTEMSScoreSchedulerSMP * + * @brief EDF Priority SMP Scheduler + * * @{ */ @@ -129,8 +131,21 @@ typedef struct { _Scheduler_EDF_SMP_Set_affinity \ } +/** + * @brief Initializes the context of the scheduler control. + * + * @param scheduler The scheduler control. + */ void _Scheduler_EDF_SMP_Initialize( const Scheduler_Control *scheduler ); +/** + * @brief Initializes the node with the given priority. + * + * @param scheduler The scheduler instance. + * @param[out] node The node to initialize. + * @param the_thread The thread of the scheduler node. + * @param priority The priority for the initialization. + */ void _Scheduler_EDF_SMP_Node_initialize( const Scheduler_Control *scheduler, Scheduler_Node *node, @@ -138,36 +153,84 @@ void _Scheduler_EDF_SMP_Node_initialize( Priority_Control priority ); +/** + * @brief Blocks the thread. + * + * @param scheduler The scheduler instance. + * @param[in, out] the_thread The thread to block. + * @param[in, out] node The @a thread's scheduler node. + */ void _Scheduler_EDF_SMP_Block( const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node ); +/** + * @brief Unblocks the thread. + * + * @param scheduler The scheduler instance. + * @param[in, out] the_thread The thread to unblock. + * @param[in, out] node The @a thread's scheduler node. + */ void _Scheduler_EDF_SMP_Unblock( const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node ); +/** + * @brief Updates the priority of the node. + * + * @param scheduler The scheduler instance. + * @param the_thread The thread for the operation. + * @param node The thread's scheduler node. + */ void _Scheduler_EDF_SMP_Update_priority( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Asks for help operation. + * + * @param scheduler The scheduler instance to ask for help. + * @param the_thread The thread needing help. + * @param node The scheduler node. + * + * @retval true Ask for help was successful. + * @retval false Ask for help was not successful. + */ bool _Scheduler_EDF_SMP_Ask_for_help( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Reconsiders help operation. + * + * @param scheduler The scheduler instance to reconsider the help + * request. + * @param the_thread The thread reconsidering a help request. + * @param node The scheduler node. + */ void _Scheduler_EDF_SMP_Reconsider_help_request( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Withdraws node operation. + * + * @param scheduler The scheduler instance to withdraw the node. + * @param the_thread The thread using the node. + * @param node The scheduler node to withdraw. + * @param next_state The next thread scheduler state in case the node is + * scheduled. + */ void _Scheduler_EDF_SMP_Withdraw_node( const Scheduler_Control *scheduler, Thread_Control *the_thread, @@ -175,6 +238,14 @@ void _Scheduler_EDF_SMP_Withdraw_node( Thread_Scheduler_state next_state ); +/** + * @brief Pin thread operation. + * + * @param scheduler The scheduler instance of the specified processor. + * @param the_thread The thread to pin. + * @param node The scheduler node of the thread. + * @param cpu The processor to pin the thread. + */ void _Scheduler_EDF_SMP_Pin( const Scheduler_Control *scheduler, Thread_Control *the_thread, @@ -182,6 +253,14 @@ void _Scheduler_EDF_SMP_Pin( struct Per_CPU_Control *cpu ); +/** + * @brief Unpin thread operation. + * + * @param scheduler The scheduler instance of the specified processor. + * @param the_thread The thread to unpin. + * @param node The scheduler node of the thread. + * @param cpu The processor to unpin the thread. + */ void _Scheduler_EDF_SMP_Unpin( const Scheduler_Control *scheduler, Thread_Control *the_thread, @@ -189,28 +268,69 @@ void _Scheduler_EDF_SMP_Unpin( struct Per_CPU_Control *cpu ); +/** + * @brief Adds processor. + * + * @param[in, out] scheduler The scheduler instance to add the processor to. + * @param idle The idle thread of the processor to add. + */ void _Scheduler_EDF_SMP_Add_processor( const Scheduler_Control *scheduler, Thread_Control *idle ); +/** + * @brief Removes an idle thread from the given cpu. + * + * @param scheduler The scheduler instance. + * @param cpu The cpu control to remove from @a scheduler. + * + * @return The idle thread of the processor. + */ Thread_Control *_Scheduler_EDF_SMP_Remove_processor( const Scheduler_Control *scheduler, struct Per_CPU_Control *cpu ); +/** + * @brief Performs the yield of a thread. + * + * @param scheduler The scheduler instance. + * @param[in, out] the_thread The thread that performed the yield operation. + * @param node The scheduler node of @a the_thread. + */ void _Scheduler_EDF_SMP_Yield( const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node ); +/** + * @brief Starts an idle thread. + * + * @param scheduler The scheduler instance. + * @param[in, out] the_thread An idle thread. + * @param cpu The cpu for the operation. + */ void _Scheduler_EDF_SMP_Start_idle( const Scheduler_Control *scheduler, Thread_Control *idle, struct Per_CPU_Control *cpu ); +/** + * @brief Checks if the processor set of the scheduler is the subset of the affinity set. + * + * Default implementation of the set affinity scheduler operation. + * + * @param scheduler This parameter is unused. + * @param thread This parameter is unused. + * @param node This parameter is unused. + * @param affinity The new processor affinity set for the thread. + * + * @retval true The processor set of the scheduler is a subset of the affinity set. + * @retval false The processor set of the scheduler is not a subset of the affinity set. + */ bool _Scheduler_EDF_SMP_Set_affinity( const Scheduler_Control *scheduler, Thread_Control *thread, -- 2.16.4 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel