From: Andreas Dachsberger <andreas.dachsber...@embedded-brains.de> --- cpukit/include/rtems/score/schedulersimplesmp.h | 88 ++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 2 deletions(-)
diff --git a/cpukit/include/rtems/score/schedulersimplesmp.h b/cpukit/include/rtems/score/schedulersimplesmp.h index 647d4af9d3..eeb07d848e 100644 --- a/cpukit/include/rtems/score/schedulersimplesmp.h +++ b/cpukit/include/rtems/score/schedulersimplesmp.h @@ -1,9 +1,9 @@ /** * @file * - * @brief Simple SMP Scheduler API - * * @ingroup RTEMSScoreSchedulerSMPSimple + * + * @brief Simple SMP Scheduler API */ /* @@ -32,6 +32,8 @@ extern "C" { * * @ingroup RTEMSScoreSchedulerSMP * + * @brief Simple Priority SMP Scheduler + * * The Simple Priority SMP Scheduler allocates a processor for the processor * count highest priority ready threads. The thread priority and position in * the ready chain are the only information to determine the scheduling @@ -85,8 +87,21 @@ typedef struct { SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY \ } +/** + * @brief Initializes the scheduler's context. + * + * @param scheduler The scheduler instance to initialize the context of. + */ void _Scheduler_simple_SMP_Initialize( const Scheduler_Control *scheduler ); +/** + * @brief Initializes the node with the given attributes. + * + * @param scheduler The scheduler instance. + * @param[out] node The node to initialize. + * @param the_thread The user of the node, if RTEMS_SMP is defined. + * @param priority The priority of the node to initialize. + */ void _Scheduler_simple_SMP_Node_initialize( const Scheduler_Control *scheduler, Scheduler_Node *node, @@ -94,36 +109,84 @@ void _Scheduler_simple_SMP_Node_initialize( Priority_Control priority ); +/** + * @brief Blocks a thread. + * + * @param scheduler The scheduler instance. + * @param[in, out] thread The thread to block. + * @param[in, out] node The scheduler node of @a thread. + */ void _Scheduler_simple_SMP_Block( const Scheduler_Control *scheduler, Thread_Control *thread, Scheduler_Node *node ); +/** + * @brief Unblocks a thread. + * + * @param scheduler The scheduler instance. + * @param[in, out] thread The thread to unblock. + * @param[in, out] node The scheduler node of @a thread. + */ void _Scheduler_simple_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 of @a node. + * @param node The node to update the priority of. + */ void _Scheduler_simple_SMP_Update_priority( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Asks for help. + * + * @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_simple_SMP_Ask_for_help( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Reconsiders help. + * + * @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_simple_SMP_Reconsider_help_request( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Withdraws node. + * + * @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 the case the node is + * scheduled. + */ void _Scheduler_simple_SMP_Withdraw_node( const Scheduler_Control *scheduler, Thread_Control *the_thread, @@ -131,16 +194,37 @@ void _Scheduler_simple_SMP_Withdraw_node( Thread_Scheduler_state next_state ); +/** + * @brief Adds @a idle to @a scheduler. + * + * @param[in, out] scheduler The scheduler instance to add the processor to. + * @param idle The idle thread control. + */ void _Scheduler_simple_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_simple_SMP_Remove_processor( const Scheduler_Control *scheduler, struct Per_CPU_Control *cpu ); +/** + * Performs a yield operation for the thread. + * + * @param scheduler The scheduler instance. + * @param thread The thread to yield. + * @param[in, out] node The node of the thread to perform a yield. + */ void _Scheduler_simple_SMP_Yield( const Scheduler_Control *scheduler, Thread_Control *thread, -- 2.16.4 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel