Hello,
the <rtems.h> header file still exposes a lot of implementation details
via the definition of the *_Control structures of the API objects. They
are only necessary for the application configuration. I would like to
move them to separate header files. Currently we have:
<rtems/rtems/XYZ.h>
<rtems/rtems/XYZimpl.h>
I need a new name for this header file. For example:
<rtems/rtems/XYZdata.h>
An example patch is attached. Comments?
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>From 55c6c844fa78117e01ec5a95f8c67c483f9daf09 Mon Sep 17 00:00:00 2001
From: Sebastian Huber <sebastian.hu...@embedded-brains.de>
Date: Wed, 7 Nov 2018 14:12:52 +0100
Subject: [PATCH] rtems: Move internal structures to ratemondata.h
---
cpukit/include/rtems/confdefs.h | 1 +
cpukit/include/rtems/rtems/ratemon.h | 111 +---------------------------
cpukit/include/rtems/rtems/ratemondata.h | 123 +++++++++++++++++++++++++++++++
cpukit/include/rtems/rtems/ratemonimpl.h | 1 +
4 files changed, 126 insertions(+), 110 deletions(-)
create mode 100644 cpukit/include/rtems/rtems/ratemondata.h
diff --git a/cpukit/include/rtems/confdefs.h b/cpukit/include/rtems/confdefs.h
index 15d0947ea3..c5ab9c409e 100644
--- a/cpukit/include/rtems/confdefs.h
+++ b/cpukit/include/rtems/confdefs.h
@@ -32,6 +32,7 @@
#include <rtems/score/percpu.h>
#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
+#include <rtems/rtems/ratemondata.h>
#include <rtems/posix/key.h>
#include <rtems/posix/mqueue.h>
#include <rtems/posix/pthread.h>
diff --git a/cpukit/include/rtems/rtems/ratemon.h b/cpukit/include/rtems/rtems/ratemon.h
index ca48a92983..f624adeb14 100644
--- a/cpukit/include/rtems/rtems/ratemon.h
+++ b/cpukit/include/rtems/rtems/ratemon.h
@@ -35,7 +35,7 @@
#include <rtems/rtems/types.h>
#include <rtems/rtems/status.h>
-#include <rtems/score/thread.h>
+#include <rtems/score/timespec.h>
#include <rtems/score/watchdog.h>
struct rtems_printer;
@@ -60,20 +60,8 @@ extern "C" {
*/
/**@{*/
-/**
- * This is the public type used for the rate monotonic timing
- * statistics.
- */
-#include <rtems/score/timespec.h>
-
typedef struct timespec rtems_rate_monotonic_period_time_t;
-/**
- * This is the internal type used for the rate monotonic timing
- * statistics.
- */
-#include <rtems/score/timestamp.h>
-
/**
* The following enumerated type defines the states in which a
* period may be.
@@ -134,31 +122,6 @@ typedef struct {
rtems_rate_monotonic_period_time_t 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 +150,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..62579ce5e5
--- /dev/null
+++ b/cpukit/include/rtems/rtems/ratemondata.h
@@ -0,0 +1,123 @@
+/* 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 <rtems/score/timestamp.h>
+#include <rtems/score/thread.h>
+#include <rtems/score/watchdog.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * 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..182f7bf54c 100644
--- a/cpukit/include/rtems/rtems/ratemonimpl.h
+++ b/cpukit/include/rtems/rtems/ratemonimpl.h
@@ -20,6 +20,7 @@
#define _RTEMS_RTEMS_RATEMONIMPL_H
#include <rtems/rtems/ratemon.h>
+#include <rtems/rtems/ratemondata.h>
#include <rtems/score/objectimpl.h>
#include <rtems/score/schedulerimpl.h>
#include <rtems/score/threadimpl.h>
--
2.16.4
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel