From 78bbe5940b385269de8282e0224c25d020478bc1 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 7 Nov 2018 14:12:52 +0100 Subject: rtems: Move internal structures to ratemondata.h Update #3598. --- cpukit/headers.am | 1 + cpukit/include/rtems/confdefs.h | 1 + cpukit/include/rtems/rtems/ratemon.h | 110 ------------------------ cpukit/include/rtems/rtems/ratemondata.h | 140 +++++++++++++++++++++++++++++++ cpukit/include/rtems/rtems/ratemonimpl.h | 2 +- cpukit/include/rtems/rtems/types.h | 1 + 6 files changed, 144 insertions(+), 111 deletions(-) create mode 100644 cpukit/include/rtems/rtems/ratemondata.h diff --git a/cpukit/headers.am b/cpukit/headers.am index 3c5e7fe207..6e2b690cd5 100644 --- a/cpukit/headers.am +++ b/cpukit/headers.am @@ -251,6 +251,7 @@ include_rtems_rtems_HEADERS += include/rtems/rtems/part.h include_rtems_rtems_HEADERS += include/rtems/rtems/partimpl.h include_rtems_rtems_HEADERS += include/rtems/rtems/partmp.h include_rtems_rtems_HEADERS += include/rtems/rtems/ratemon.h +include_rtems_rtems_HEADERS += include/rtems/rtems/ratemondata.h include_rtems_rtems_HEADERS += include/rtems/rtems/ratemonimpl.h include_rtems_rtems_HEADERS += include/rtems/rtems/region.h include_rtems_rtems_HEADERS += include/rtems/rtems/regionimpl.h diff --git a/cpukit/include/rtems/confdefs.h b/cpukit/include/rtems/confdefs.h index b7ba7e9d11..410a4366a5 100644 --- a/cpukit/include/rtems/confdefs.h +++ b/cpukit/include/rtems/confdefs.h @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff --git a/cpukit/include/rtems/rtems/ratemon.h b/cpukit/include/rtems/rtems/ratemon.h index 738dc5244d..747d967af2 100644 --- a/cpukit/include/rtems/rtems/ratemon.h +++ b/cpukit/include/rtems/rtems/ratemon.h @@ -35,7 +35,6 @@ #include #include -#include #include struct rtems_printer; @@ -60,20 +59,8 @@ extern "C" { */ /**@{*/ -/** - * This is the public type used for the rate monotonic timing - * statistics. - */ -#include - typedef struct timespec rtems_rate_monotonic_period_time_t RTEMS_DEPRECATED; -/** - * This is the internal type used for the rate monotonic timing - * statistics. - */ -#include - /** * The following enumerated type defines the states in which a * period may be. @@ -134,31 +121,6 @@ typedef struct { struct timespec total_wall_time; } rtems_rate_monotonic_period_statistics; -/** - * The following defines the INTERNAL data structure that has the - * statistics kept on each period instance. - */ -typedef struct { - /** This field contains the number of periods executed. */ - uint32_t count; - /** This field contains the number of periods missed. */ - uint32_t missed_count; - - /** This field contains the least amount of CPU time used in a period. */ - Timestamp_Control min_cpu_time; - /** This field contains the highest amount of CPU time used in a period. */ - Timestamp_Control max_cpu_time; - /** This field contains the total amount of wall time used in a period. */ - Timestamp_Control total_cpu_time; - - /** This field contains the least amount of wall time used in a period. */ - Timestamp_Control min_wall_time; - /** This field contains the highest amount of wall time used in a period. */ - Timestamp_Control max_wall_time; - /** This field contains the total amount of CPU time used in a period. */ - Timestamp_Control total_wall_time; -} Rate_monotonic_Statistics; - /** * The following defines the period status structure. */ @@ -187,78 +149,6 @@ typedef struct { uint32_t postponed_jobs_count; } rtems_rate_monotonic_period_status; -/** - * @brief The following structure defines the control block used to manage each - * period. - * - * State changes are protected by the default thread lock of the owner thread. - * The owner thread is the thread that created the period object. The owner - * thread field is immutable after object creation. - */ -typedef struct { - /** This field is the object management portion of a Period instance. */ - Objects_Control Object; - - /** - * @brief Protects the rate monotonic period state. - */ - ISR_LOCK_MEMBER( Lock ) - - /** This is the timer used to provide the unblocking mechanism. */ - Watchdog_Control Timer; - - /** This field indicates the current state of the period. */ - rtems_rate_monotonic_period_states state; - - /** - * @brief A priority node for use by the scheduler job release and cancel - * operations. - */ - Priority_Node Priority; - - /** - * This field contains the length of the next period to be - * executed. - */ - uint32_t next_length; - - /** - * This field contains a pointer to the TCB for the thread - * which owns and uses this period instance. - */ - Thread_Control *owner; - - /** - * This field contains the cpu usage value of the owning thread when - * the period was initiated. It is used to compute the period's - * statistics. - */ - Timestamp_Control cpu_usage_period_initiated; - - /** - * This field contains the wall time value when the period - * was initiated. It is used to compute the period's statistics. - */ - Timestamp_Control time_period_initiated; - - /** - * This field contains the statistics maintained for the period. - */ - Rate_monotonic_Statistics Statistics; - - /** - * This field contains the number of postponed jobs. - * When the watchdog timeout, this variable will be increased immediately. - */ - uint32_t postponed_jobs; - - /** - * This field contains the tick of the latest deadline decided by the period - * watchdog. - */ - uint64_t latest_deadline; -} Rate_monotonic_Control; - /** * @brief Create a Period * diff --git a/cpukit/include/rtems/rtems/ratemondata.h b/cpukit/include/rtems/rtems/ratemondata.h new file mode 100644 index 0000000000..898fc653c1 --- /dev/null +++ b/cpukit/include/rtems/rtems/ratemondata.h @@ -0,0 +1,140 @@ +/** + * @file + * + * @ingroup ClassicRateMonImpl + * + * @brief Classic Rate Monotonic Scheduler Data Structures + */ + +/* COPYRIGHT (c) 1989-2009, 2016. + * On-Line Applications Research Corporation (OAR). + * COPYRIGHT (c) 2016-2017 Kuan-Hsun Chen. + * + * 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_RTEMS_RATEMONDATA_H +#define _RTEMS_RTEMS_RATEMONDATA_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup ClassicRateMonImpl + * + * @{ + */ + +/** + * The following defines the INTERNAL data structure that has the + * statistics kept on each period instance. + */ +typedef struct { + /** This field contains the number of periods executed. */ + uint32_t count; + /** This field contains the number of periods missed. */ + uint32_t missed_count; + + /** This field contains the least amount of CPU time used in a period. */ + Timestamp_Control min_cpu_time; + /** This field contains the highest amount of CPU time used in a period. */ + Timestamp_Control max_cpu_time; + /** This field contains the total amount of wall time used in a period. */ + Timestamp_Control total_cpu_time; + + /** This field contains the least amount of wall time used in a period. */ + Timestamp_Control min_wall_time; + /** This field contains the highest amount of wall time used in a period. */ + Timestamp_Control max_wall_time; + /** This field contains the total amount of CPU time used in a period. */ + Timestamp_Control total_wall_time; +} Rate_monotonic_Statistics; + +/** + * @brief The following structure defines the control block used to manage each + * period. + * + * State changes are protected by the default thread lock of the owner thread. + * The owner thread is the thread that created the period object. The owner + * thread field is immutable after object creation. + */ +typedef struct { + /** This field is the object management portion of a Period instance. */ + Objects_Control Object; + + /** + * @brief Protects the rate monotonic period state. + */ + ISR_LOCK_MEMBER( Lock ) + + /** This is the timer used to provide the unblocking mechanism. */ + Watchdog_Control Timer; + + /** This field indicates the current state of the period. */ + rtems_rate_monotonic_period_states state; + + /** + * @brief A priority node for use by the scheduler job release and cancel + * operations. + */ + Priority_Node Priority; + + /** + * This field contains the length of the next period to be + * executed. + */ + uint32_t next_length; + + /** + * This field contains a pointer to the TCB for the thread + * which owns and uses this period instance. + */ + Thread_Control *owner; + + /** + * This field contains the cpu usage value of the owning thread when + * the period was initiated. It is used to compute the period's + * statistics. + */ + Timestamp_Control cpu_usage_period_initiated; + + /** + * This field contains the wall time value when the period + * was initiated. It is used to compute the period's statistics. + */ + Timestamp_Control time_period_initiated; + + /** + * This field contains the statistics maintained for the period. + */ + Rate_monotonic_Statistics Statistics; + + /** + * This field contains the number of postponed jobs. + * When the watchdog timeout, this variable will be increased immediately. + */ + uint32_t postponed_jobs; + + /** + * This field contains the tick of the latest deadline decided by the period + * watchdog. + */ + uint64_t latest_deadline; +} Rate_monotonic_Control; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ diff --git a/cpukit/include/rtems/rtems/ratemonimpl.h b/cpukit/include/rtems/rtems/ratemonimpl.h index ba38a3e61a..2a417f66c6 100644 --- a/cpukit/include/rtems/rtems/ratemonimpl.h +++ b/cpukit/include/rtems/rtems/ratemonimpl.h @@ -19,7 +19,7 @@ #ifndef _RTEMS_RTEMS_RATEMONIMPL_H #define _RTEMS_RTEMS_RATEMONIMPL_H -#include +#include #include #include #include diff --git a/cpukit/include/rtems/rtems/types.h b/cpukit/include/rtems/rtems/types.h index bb98100ead..874b077b79 100644 --- a/cpukit/include/rtems/rtems/types.h +++ b/cpukit/include/rtems/rtems/types.h @@ -22,6 +22,7 @@ * RTEMS basic type definitions */ +#include #include #include #include -- cgit v1.2.3