From: Andreas Dachsberger <andreas.dachsber...@embedded-brains.de> --- cpukit/include/rtems/score/schedulerstrongapa.h | 82 +++++++++++++++++++++++++ 1 file changed, 82 insertions(+)
diff --git a/cpukit/include/rtems/score/schedulerstrongapa.h b/cpukit/include/rtems/score/schedulerstrongapa.h index 902c53c095..0ac28cb439 100644 --- a/cpukit/include/rtems/score/schedulerstrongapa.h +++ b/cpukit/include/rtems/score/schedulerstrongapa.h @@ -36,6 +36,8 @@ extern "C" { * * @ingroup RTEMSScoreSchedulerSMP * + * @brief Strong APA Scheduler + * * This is an implementation of the global fixed priority scheduler (G-FP). It * uses one ready chain per priority to ensure constant time insert operations. * The scheduled chain uses linear insert operations and has at most processor @@ -102,8 +104,21 @@ typedef struct { SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY \ } +/** + * @brief Initializes the scheduler. + * + * @param scheduler The scheduler to initialize. + */ void _Scheduler_strong_APA_Initialize( const Scheduler_Control *scheduler ); +/** + * @brief Initializes the node with the given priority. + * + * @param scheduler The scheduler control instance. + * @param[out] node The node to initialize. + * @param the_thread The thread of the node to initialize. + * @param priority The priority for @a node. + */ void _Scheduler_strong_APA_Node_initialize( const Scheduler_Control *scheduler, Scheduler_Node *node, @@ -111,36 +126,82 @@ void _Scheduler_strong_APA_Node_initialize( Priority_Control priority ); +/** + * @brief Blocks the thread. + * + * @param scheduler The scheduler control instance. + * @param[in, out] the_thread The thread to block. + * @param[in, out] node The node of the thread to block. + */ void _Scheduler_strong_APA_Block( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Unblocks the thread. + * + * @param scheduler The scheduler control instance. + * @param[in, out] the_thread The thread to unblock. + * @param[in, out] node The node of the thread to unblock. + */ void _Scheduler_strong_APA_Unblock( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Updates the priority of the node. + * + * @param scheduler The scheduler control instance. + * @param the_thread The thread for the operation. + * @param[in, out] node The node to update the priority of. + */ void _Scheduler_strong_APA_Update_priority( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Asks for help. + * + * @param scheduler The scheduler control instance. + * @param the_thread The thread that asks for help. + * @param node The node of @a the_thread. + * + * @retval true The request for help was successful. + * @retval false The request for help was not successful. + */ bool _Scheduler_strong_APA_Ask_for_help( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Reconsiders help request. + * + * @param scheduler The scheduler control instance. + * @param the_thread The thread to reconsider the help request of. + * @param[in, out] node The node of @a the_thread + */ void _Scheduler_strong_APA_Reconsider_help_request( const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node ); +/** + * @brief Withdraws the node. + * + * @param scheduler The scheduler control instance. + * @param[in, out] the_thread The thread to change the state to @a next_state. + * @param[in, out] node The node to withdraw. + * @param next_state The next state for @a the_thread. + */ void _Scheduler_strong_APA_Withdraw_node( const Scheduler_Control *scheduler, Thread_Control *the_thread, @@ -148,16 +209,37 @@ void _Scheduler_strong_APA_Withdraw_node( Thread_Scheduler_state next_state ); +/** + * @brief Adds the idle thread to a processor. + * + * @param scheduler The scheduler control instance. + * @param[in, out] The idle thread to add to the processor. + */ void _Scheduler_strong_APA_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_strong_APA_Remove_processor( const Scheduler_Control *scheduler, struct Per_CPU_Control *cpu ); +/** + * @brief Performs a yield operation. + * + * @param scheduler The scheduler control instance. + * @param the_thread The thread to yield. + * @param[in, out] node The node of @a the_thread. + */ void _Scheduler_strong_APA_Yield( const Scheduler_Control *scheduler, Thread_Control *the_thread, -- 2.16.4 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel