From c6e21ee18f71aa78ca6420bc835ab6b7e2dbcc65 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 24 Jul 2013 13:12:38 +0200 Subject: score: Create scheduler implementation header Move implementation specific parts of scheduler.h and scheduler.inl into new header file schedulerimpl.h. The scheduler.h contains now only the application visible API. --- cpukit/score/inline/rtems/score/scheduler.inl | 232 -------------------------- 1 file changed, 232 deletions(-) delete mode 100644 cpukit/score/inline/rtems/score/scheduler.inl (limited to 'cpukit/score/inline/rtems') diff --git a/cpukit/score/inline/rtems/score/scheduler.inl b/cpukit/score/inline/rtems/score/scheduler.inl deleted file mode 100644 index 67d8327e36..0000000000 --- a/cpukit/score/inline/rtems/score/scheduler.inl +++ /dev/null @@ -1,232 +0,0 @@ -/** - * @file - * - * @brief Inlined Routines Associated with the Manipulation of the Scheduler - * - * This inline file contains all of the inlined routines associated with - * the manipulation of the scheduler. - */ - -/* - * Copyright (C) 2010 Gedare Bloom. - * Copyright (C) 2011 On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - */ - -#ifndef _RTEMS_SCORE_SCHEDULER_H -# error "Never use directly; include instead." -#endif - -#ifndef _RTEMS_SCORE_SCHEDULER_INL -#define _RTEMS_SCORE_SCHEDULER_INL - -/** - * @addtogroup ScoreScheduler - */ -/**@{**/ - -/** - * The preferred method to add a new scheduler is to define the jump table - * entries and add a case to the _Scheduler_Initialize routine. - * - * Generic scheduling implementations that rely on the ready queue only can - * be found in the _Scheduler_queue_XXX functions. - */ - -/* - * Passing the Scheduler_Control* to these functions allows for multiple - * scheduler's to exist simultaneously, which could be useful on an SMP - * system. Then remote Schedulers may be accessible. How to protect such - * accesses remains an open problem. - */ - -/** - * @brief Scheduler schedule. - * - * This kernel routine implements the scheduling decision logic for - * the scheduler. It does NOT dispatch. - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Schedule( void ) -{ - _Scheduler.Operations.schedule(); -} - -/** - * @brief Scheduler yield with a particular thread. - * - * This routine is invoked when a thread wishes to voluntarily transfer control - * of the processor to another thread. - * - * @param[in] thread The yielding thread. - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Yield( - Thread_Control *thread -) -{ - ( *_Scheduler.Operations.yield )( thread ); -} - -/** - * @brief Scheduler block. - * - * This routine removes @a the_thread from the scheduling decision for - * the scheduler. The primary task is to remove the thread from the - * ready queue. It performs any necessary schedulering operations - * including the selection of a new heir thread. - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Block( - Thread_Control *the_thread -) -{ - _Scheduler.Operations.block( the_thread ); -} - -/** - * @brief Scheduler unblock. - * - * This routine adds @a the_thread to the scheduling decision for - * the scheduler. The primary task is to add the thread to the - * ready queue per the schedulering policy and update any appropriate - * scheduling variables, for example the heir thread. - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Unblock( - Thread_Control *the_thread -) -{ - _Scheduler.Operations.unblock( the_thread ); -} - -/** - * @brief Scheduler allocate. - * - * This routine allocates @a the_thread->scheduler - */ -RTEMS_INLINE_ROUTINE void* _Scheduler_Allocate( - Thread_Control *the_thread -) -{ - return _Scheduler.Operations.allocate( the_thread ); -} - -/** - * @brief Scheduler free. - * - * This routine frees @a the_thread->scheduler - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Free( - Thread_Control *the_thread -) -{ - _Scheduler.Operations.free( the_thread ); -} - -/** - * @brief Scheduler update. - * - * This routine updates @a the_thread->scheduler - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Update( - Thread_Control *the_thread -) -{ - _Scheduler.Operations.update( the_thread ); -} - -/** - * @brief Scheduler enqueue. - * - * This routine enqueue @a the_thread->scheduler - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue( - Thread_Control *the_thread -) -{ - _Scheduler.Operations.enqueue( the_thread ); -} - -/** - * @brief Scheduler enqueue first. - * - * This routine enqueue_first @a the_thread->scheduler - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue_first( - Thread_Control *the_thread -) -{ - _Scheduler.Operations.enqueue_first( the_thread ); -} - -/** - * @brief Scheduler extract. - * - * This routine extract @a the_thread->scheduler - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Extract( - Thread_Control *the_thread -) -{ - _Scheduler.Operations.extract( the_thread ); -} - -/** - * @brief Scheduler priority compare. - * - * This routine compares two priorities. - */ -RTEMS_INLINE_ROUTINE int _Scheduler_Priority_compare( - Priority_Control p1, - Priority_Control p2 -) -{ - return _Scheduler.Operations.priority_compare(p1, p2); -} - -/** - * @brief Scheduler release job. - * - * This routine is called when a new period of task is issued. - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Release_job( - Thread_Control *the_thread, - uint32_t length -) -{ - _Scheduler.Operations.release_job(the_thread, length); -} - -/** - * @brief Scheduler method invoked at each clock tick. - * - * This method is invoked at each clock tick to allow the scheduler - * implementation to perform any activities required. For the - * scheduler which support standard RTEMS features, this includes - * time-slicing management. - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Tick( void ) -{ - _Scheduler.Operations.tick(); -} - -/** - * @brief Starts the idle thread for a particular processor. - * - * @param[in,out] thread The idle thread for the processor. - * @parma[in,out] processor The processor for the idle thread. - * - * @see _Thread_Create_idle(). - */ -RTEMS_INLINE_ROUTINE void _Scheduler_Start_idle( - Thread_Control *thread, - Per_CPU_Control *processor -) -{ - ( *_Scheduler.Operations.start_idle )( thread, processor ); -} - -/** @} */ - -#endif -/* end of include file */ -- cgit v1.2.3