diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-24 11:37:28 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-26 11:55:43 +0200 |
commit | bd5606abcb2cf1e4c778a5063f158990be9bee62 (patch) | |
tree | 7eb44d87647956ed3dc50bbfe40baff483c16efb /cpukit/score/include/rtems/score | |
parent | libtests/malloc04: Fixes for RTEMS_DEBUG (diff) | |
download | rtems-bd5606abcb2cf1e4c778a5063f158990be9bee62.tar.bz2 |
score: Create schedulersimple impl header
Move implementation specific parts of schedulersimple.h and
schedulersimple.inl into new header file schedulersimpleimpl.h. The
schedulersimple.h contains now only the application visible API.
Diffstat (limited to 'cpukit/score/include/rtems/score')
-rw-r--r-- | cpukit/score/include/rtems/score/schedulersimple.h | 20 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/schedulersimpleimpl.h | 104 |
2 files changed, 112 insertions, 12 deletions
diff --git a/cpukit/score/include/rtems/score/schedulersimple.h b/cpukit/score/include/rtems/score/schedulersimple.h index 17514cc4c2..ba67c14729 100644 --- a/cpukit/score/include/rtems/score/schedulersimple.h +++ b/cpukit/score/include/rtems/score/schedulersimple.h @@ -18,6 +18,13 @@ #ifndef _RTEMS_SCORE_SCHEDULERSIMPLE_H #define _RTEMS_SCORE_SCHEDULERSIMPLE_H +#include <rtems/score/scheduler.h> +#include <rtems/score/schedulerpriority.h> + +#ifdef __cplusplus +extern "C" { +#endif + /** * @defgroup ScoreSchedulerSimple Simple Priority Scheduler * @@ -25,13 +32,6 @@ */ /**@{*/ -#ifdef __cplusplus -extern "C" { -#endif - -#include <rtems/score/scheduler.h> -#include <rtems/score/schedulerpriority.h> - /** * Entry points for Scheduler Simple */ @@ -215,15 +215,11 @@ void _Scheduler_simple_Ready_queue_enqueue_first( Thread_Control *the_thread ); -#ifndef __RTEMS_APPLICATION__ -#include <rtems/score/schedulersimple.inl> -#endif +/**@}*/ #ifdef __cplusplus } #endif -/**@}*/ - #endif /* end of include file */ diff --git a/cpukit/score/include/rtems/score/schedulersimpleimpl.h b/cpukit/score/include/rtems/score/schedulersimpleimpl.h new file mode 100644 index 0000000000..e8c4cc6cad --- /dev/null +++ b/cpukit/score/include/rtems/score/schedulersimpleimpl.h @@ -0,0 +1,104 @@ +/** + * @file + * + * @brief Inlined Routines Associated with the Manipulation of the + * Priority-Based Scheduling Structures + * + * This inline file contains all of the inlined routines associated with + * the manipulation of the priority-based scheduling structures. + */ + +/* + * 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_SCHEDULERSIMPLEIMPL_H +#define _RTEMS_SCORE_SCHEDULERSIMPLEIMPL_H + +#include <rtems/score/schedulersimple.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup ScoreScheduler + */ +/**@{**/ + +/** + * This routine puts @a the_thread on to the ready queue. + * + * @param[in] the_ready_queue is a pointer to the ready queue head + * @param[in] the_thread is the thread to be blocked + */ +RTEMS_INLINE_ROUTINE void _Scheduler_simple_Ready_queue_requeue( + Scheduler_Control *the_ready_queue, + Thread_Control *the_thread +) +{ + /* extract */ + _Chain_Extract_unprotected( &the_thread->Object.Node ); + + /* enqueue */ + _Scheduler_simple_Ready_queue_enqueue( the_thread ); +} + +RTEMS_INLINE_ROUTINE bool _Scheduler_simple_Insert_priority_lifo_order( + const Chain_Node *to_insert, + const Chain_Node *next +) +{ + const Thread_Control *thread_to_insert = (const Thread_Control *) to_insert; + const Thread_Control *thread_next = (const Thread_Control *) next; + + return thread_to_insert->current_priority <= thread_next->current_priority; +} + +RTEMS_INLINE_ROUTINE bool _Scheduler_simple_Insert_priority_fifo_order( + const Chain_Node *to_insert, + const Chain_Node *next +) +{ + const Thread_Control *thread_to_insert = (const Thread_Control *) to_insert; + const Thread_Control *thread_next = (const Thread_Control *) next; + + return thread_to_insert->current_priority < thread_next->current_priority; +} + +RTEMS_INLINE_ROUTINE void _Scheduler_simple_Insert_priority_lifo( + Chain_Control *chain, + Thread_Control *to_insert +) +{ + _Chain_Insert_ordered_unprotected( + chain, + &to_insert->Object.Node, + _Scheduler_simple_Insert_priority_lifo_order + ); +} + +RTEMS_INLINE_ROUTINE void _Scheduler_simple_Insert_priority_fifo( + Chain_Control *chain, + Thread_Control *to_insert +) +{ + _Chain_Insert_ordered_unprotected( + chain, + &to_insert->Object.Node, + _Scheduler_simple_Insert_priority_fifo_order + ); +} + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ |