diff options
Diffstat (limited to 'cpukit/score/include/rtems/score/schedulerprioritysmpimpl.h')
-rw-r--r-- | cpukit/score/include/rtems/score/schedulerprioritysmpimpl.h | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/cpukit/score/include/rtems/score/schedulerprioritysmpimpl.h b/cpukit/score/include/rtems/score/schedulerprioritysmpimpl.h deleted file mode 100644 index 17d6e552f3..0000000000 --- a/cpukit/score/include/rtems/score/schedulerprioritysmpimpl.h +++ /dev/null @@ -1,184 +0,0 @@ -/** - * @file - * - * @ingroup ScoreSchedulerPrioritySMP - * - * @brief Deterministic Priority SMP Scheduler API - */ - -/* - * Copyright (c) 2013, 2017 embedded brains GmbH. All rights reserved. - * - * embedded brains GmbH - * Dornierstr. 4 - * 82178 Puchheim - * Germany - * <rtems@embedded-brains.de> - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - */ - -#ifndef _RTEMS_SCORE_SCHEDULERPRIORITYSMPIMPL_H -#define _RTEMS_SCORE_SCHEDULERPRIORITYSMPIMPL_H - -#include <rtems/score/schedulerprioritysmp.h> -#include <rtems/score/schedulerpriorityimpl.h> -#include <rtems/score/schedulersimpleimpl.h> -#include <rtems/score/schedulersmpimpl.h> - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @ingroup ScoreSchedulerPrioritySMP - * @{ - */ - -static inline Scheduler_priority_SMP_Context *_Scheduler_priority_SMP_Get_self( - Scheduler_Context *context -) -{ - return (Scheduler_priority_SMP_Context *) context; -} - -static inline Scheduler_priority_SMP_Node *_Scheduler_priority_SMP_Thread_get_node( - Thread_Control *thread -) -{ - return (Scheduler_priority_SMP_Node *) _Thread_Scheduler_get_home_node( thread ); -} - -static inline Scheduler_priority_SMP_Node * -_Scheduler_priority_SMP_Node_downcast( Scheduler_Node *node ) -{ - return (Scheduler_priority_SMP_Node *) node; -} - -static inline bool _Scheduler_priority_SMP_Has_ready( Scheduler_Context *context ) -{ - Scheduler_priority_SMP_Context *self = - _Scheduler_priority_SMP_Get_self( context ); - - return !_Priority_bit_map_Is_empty( &self->Bit_map ); -} - -static inline void _Scheduler_priority_SMP_Move_from_scheduled_to_ready( - Scheduler_Context *context, - Scheduler_Node *scheduled_to_ready -) -{ - Scheduler_priority_SMP_Context *self = - _Scheduler_priority_SMP_Get_self( context ); - Scheduler_priority_SMP_Node *node = - _Scheduler_priority_SMP_Node_downcast( scheduled_to_ready ); - - _Chain_Extract_unprotected( &node->Base.Base.Node.Chain ); - _Scheduler_priority_Ready_queue_enqueue_first( - &node->Base.Base.Node.Chain, - &node->Ready_queue, - &self->Bit_map - ); -} - -static inline void _Scheduler_priority_SMP_Move_from_ready_to_scheduled( - Scheduler_Context *context, - Scheduler_Node *ready_to_scheduled -) -{ - Scheduler_priority_SMP_Context *self; - Scheduler_priority_SMP_Node *node; - Priority_Control insert_priority; - - self = _Scheduler_priority_SMP_Get_self( context ); - node = _Scheduler_priority_SMP_Node_downcast( ready_to_scheduled ); - - _Scheduler_priority_Ready_queue_extract( - &node->Base.Base.Node.Chain, - &node->Ready_queue, - &self->Bit_map - ); - insert_priority = _Scheduler_SMP_Node_priority( &node->Base.Base ); - insert_priority = SCHEDULER_PRIORITY_APPEND( insert_priority ); - _Chain_Insert_ordered_unprotected( - &self->Base.Scheduled, - &node->Base.Base.Node.Chain, - &insert_priority, - _Scheduler_SMP_Priority_less_equal - ); -} - -static inline void _Scheduler_priority_SMP_Insert_ready( - Scheduler_Context *context, - Scheduler_Node *node_base, - Priority_Control insert_priority -) -{ - Scheduler_priority_SMP_Context *self; - Scheduler_priority_SMP_Node *node; - - self = _Scheduler_priority_SMP_Get_self( context ); - node = _Scheduler_priority_SMP_Node_downcast( node_base ); - - if ( SCHEDULER_PRIORITY_IS_APPEND( insert_priority ) ) { - _Scheduler_priority_Ready_queue_enqueue( - &node->Base.Base.Node.Chain, - &node->Ready_queue, - &self->Bit_map - ); - } else { - _Scheduler_priority_Ready_queue_enqueue_first( - &node->Base.Base.Node.Chain, - &node->Ready_queue, - &self->Bit_map - ); - } -} - -static inline void _Scheduler_priority_SMP_Extract_from_ready( - Scheduler_Context *context, - Scheduler_Node *thread -) -{ - Scheduler_priority_SMP_Context *self = - _Scheduler_priority_SMP_Get_self( context ); - Scheduler_priority_SMP_Node *node = - _Scheduler_priority_SMP_Node_downcast( thread ); - - _Scheduler_priority_Ready_queue_extract( - &node->Base.Base.Node.Chain, - &node->Ready_queue, - &self->Bit_map - ); -} - -static inline void _Scheduler_priority_SMP_Do_update( - Scheduler_Context *context, - Scheduler_Node *node_to_update, - Priority_Control new_priority -) -{ - Scheduler_priority_SMP_Context *self; - Scheduler_priority_SMP_Node *node; - - self = _Scheduler_priority_SMP_Get_self( context ); - node = _Scheduler_priority_SMP_Node_downcast( node_to_update ); - - _Scheduler_SMP_Node_update_priority( &node->Base, new_priority ); - _Scheduler_priority_Ready_queue_update( - &node->Ready_queue, - SCHEDULER_PRIORITY_UNMAP( new_priority ), - &self->Bit_map, - &self->Ready[ 0 ] - ); -} - -/** @} */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* _RTEMS_SCORE_SCHEDULERPRIORITYSMPIMPL_H */ |