[rtems commit] Remove use ticks for statistics configure option.
Joel Sherril
joel at rtems.org
Mon Jun 15 18:20:29 UTC 2015
Module: rtems
Branch: master
Commit: e6b31b27fbe3cd76534db2d4fc4ef5dcdf0d33b4
Changeset: http://git.rtems.org/rtems/commit/?id=e6b31b27fbe3cd76534db2d4fc4ef5dcdf0d33b4
Author: Joel Sherrill <joel.sherrill at oarcorp.com>
Date: Wed May 27 10:13:58 2015 -0500
Remove use ticks for statistics configure option.
This was obsolete and broken based upon recent time keeping changes.
Thie build option was previously enabled by adding
USE_TICKS_FOR_STATISTICS=1 to the configure command line.
This propagated into the code as preprocessor conditionals
using the __RTEMS_USE_TICKS_FOR_STATISTICS__ conditional.
---
cpukit/configure.ac | 5 --
cpukit/libcsupport/src/__times.c | 68 +++++++++----------
cpukit/libmisc/cpuuse/cpuusagedata.c | 6 +-
cpukit/libmisc/cpuuse/cpuusagereport.c | 90 +++++---------------------
cpukit/libmisc/cpuuse/cpuusagereset.c | 26 +++-----
cpukit/libmisc/cpuuse/cpuusagetop.c | 35 ++--------
cpukit/libmisc/cpuuse/cpuuse.h | 10 +--
cpukit/rtems/include/rtems/rtems/ratemon.h | 16 ++---
cpukit/rtems/include/rtems/rtems/ratemonimpl.h | 52 ++++++---------
cpukit/rtems/include/rtems/rtems/types.h | 6 +-
cpukit/rtems/src/ratemongetstatistics.c | 21 ++----
cpukit/rtems/src/ratemongetstatus.c | 32 +++------
cpukit/rtems/src/ratemonperiod.c | 73 ++++++++-------------
cpukit/rtems/src/ratemonreportstatistics.c | 65 ++++---------------
cpukit/score/include/rtems/score/thread.h | 8 +--
cpukit/score/src/schedulerdefaulttick.c | 7 --
cpukit/score/src/threaddispatch.c | 15 ++---
cpukit/score/src/threadinitialize.c | 6 +-
testsuites/sptests/sp69/init.c | 64 +++++++-----------
19 files changed, 169 insertions(+), 436 deletions(-)
diff --git a/cpukit/configure.ac b/cpukit/configure.ac
index 46942c9..c2b8e8d 100644
--- a/cpukit/configure.ac
+++ b/cpukit/configure.ac
@@ -240,11 +240,6 @@ RTEMS_CPUOPT([RTEMS_VERSION],
["]_RTEMS_VERSION["],
[RTEMS version string])
-RTEMS_CPUOPT([__RTEMS_USE_TICKS_FOR_STATISTICS__],
- [test x"${USE_TICKS_FOR_STATISTICS}" = x"1"],
- [1],
- [disable nanosecond granularity for statistics])
-
## Header file differences that need to be known in .h after install
RTEMS_CPUOPT([__RTEMS_HAVE_SYS_CPUSET_H__],
[test x"${ac_cv_header_sys_cpuset_h}" = x"yes"],
diff --git a/cpukit/libcsupport/src/__times.c b/cpukit/libcsupport/src/__times.c
index 895ee6b..e5ec411 100644
--- a/cpukit/libcsupport/src/__times.c
+++ b/cpukit/libcsupport/src/__times.c
@@ -31,9 +31,7 @@
#include <errno.h>
#include <rtems/seterr.h>
#include <rtems/score/todimpl.h>
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #include <rtems/score/timestamp.h>
-#endif
+#include <rtems/score/timestamp.h>
#include <rtems/score/threadimpl.h>
/**
@@ -63,41 +61,35 @@ clock_t _times(
* of ticks since boot and the number of ticks executed by this
* this thread.
*/
-
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- {
- Timestamp_Control per_tick;
- uint32_t ticks_of_executing;
- uint32_t fractional_ticks;
- Per_CPU_Control *cpu_self;
-
- _Timestamp_Set(
- &per_tick,
- rtems_configuration_get_microseconds_per_tick() /
- TOD_MICROSECONDS_PER_SECOND,
- (rtems_configuration_get_nanoseconds_per_tick() %
- TOD_NANOSECONDS_PER_SECOND)
- );
-
- cpu_self = _Thread_Dispatch_disable();
- executing = _Thread_Executing;
- _Thread_Update_cpu_time_used(
- executing,
- &_Thread_Time_of_last_context_switch
- );
- _Timestamp_Divide(
- &executing->cpu_time_used,
- &per_tick,
- &ticks_of_executing,
- &fractional_ticks
- );
- _Thread_Dispatch_enable( cpu_self );
- ptms->tms_utime = ticks_of_executing * us_per_tick;
- }
- #else
- executing = _Thread_Get_executing();
- ptms->tms_utime = executing->cpu_time_used * us_per_tick;
- #endif
+ {
+ Timestamp_Control per_tick;
+ uint32_t ticks_of_executing;
+ uint32_t fractional_ticks;
+ Per_CPU_Control *cpu_self;
+
+ _Timestamp_Set(
+ &per_tick,
+ rtems_configuration_get_microseconds_per_tick() /
+ TOD_MICROSECONDS_PER_SECOND,
+ (rtems_configuration_get_nanoseconds_per_tick() %
+ TOD_NANOSECONDS_PER_SECOND)
+ );
+
+ cpu_self = _Thread_Dispatch_disable();
+ executing = _Thread_Executing;
+ _Thread_Update_cpu_time_used(
+ executing,
+ &_Thread_Time_of_last_context_switch
+ );
+ _Timestamp_Divide(
+ &executing->cpu_time_used,
+ &per_tick,
+ &ticks_of_executing,
+ &fractional_ticks
+ );
+ _Thread_Dispatch_enable( cpu_self );
+ ptms->tms_utime = ticks_of_executing * us_per_tick;
+ }
ptms->tms_stime = ticks * us_per_tick;
ptms->tms_cutime = 0;
ptms->tms_cstime = 0;
diff --git a/cpukit/libmisc/cpuuse/cpuusagedata.c b/cpukit/libmisc/cpuuse/cpuusagedata.c
index ea24db5..661b97e 100644
--- a/cpukit/libmisc/cpuuse/cpuusagedata.c
+++ b/cpukit/libmisc/cpuuse/cpuusagedata.c
@@ -22,8 +22,4 @@
#include <rtems/cpuuse.h>
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- Timestamp_Control CPU_usage_Uptime_at_last_reset;
-#else
- uint32_t CPU_usage_Ticks_at_last_reset;
-#endif
+Timestamp_Control CPU_usage_Uptime_at_last_reset;
diff --git a/cpukit/libmisc/cpuuse/cpuusagereport.c b/cpukit/libmisc/cpuuse/cpuusagereport.c
index 5cba819..98b5f8b 100644
--- a/cpukit/libmisc/cpuuse/cpuusagereport.c
+++ b/cpukit/libmisc/cpuuse/cpuusagereport.c
@@ -44,12 +44,8 @@ void rtems_cpu_usage_report_with_plugin(
Objects_Information *information;
char name[13];
uint32_t ival, fval;
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- Timestamp_Control uptime, total, ran, uptime_at_last_reset;
- uint32_t seconds, nanoseconds;
- #else
- uint32_t total_units = 0;
- #endif
+ Timestamp_Control uptime, total, ran, uptime_at_last_reset;
+ uint32_t seconds, nanoseconds;
if ( !print )
return;
@@ -59,38 +55,15 @@ void rtems_cpu_usage_report_with_plugin(
* the number of "ticks" we gave credit for to give the user a rough
* guideline as to what each number means proportionally.
*/
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- _Timestamp_Set_to_zero( &total );
- uptime_at_last_reset = CPU_usage_Uptime_at_last_reset;
- #else
- for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
- #if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)
- if ( !_Objects_Information_table[ api_index ] )
- continue;
- #endif
-
- information = _Objects_Information_table[ api_index ][ 1 ];
- if ( information ) {
- for ( i=1 ; i <= information->maximum ; i++ ) {
- the_thread = (Thread_Control *)information->local_table[ i ];
-
- if ( the_thread )
- total_units += the_thread->cpu_time_used;
- }
- }
- }
- #endif
+ _Timestamp_Set_to_zero( &total );
+ uptime_at_last_reset = CPU_usage_Uptime_at_last_reset;
(*print)(
context,
"-------------------------------------------------------------------------------\n"
" CPU USAGE BY THREAD\n"
"------------+----------------------------------------+---------------+---------\n"
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- " ID | NAME | SECONDS | PERCENT\n"
- #else
- " ID | NAME | TICKS | PERCENT\n"
- #endif
+ " ID | NAME | SECONDS | PERCENT\n"
"------------+----------------------------------------+---------------+---------\n"
);
@@ -117,7 +90,6 @@ void rtems_cpu_usage_report_with_plugin(
name
);
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
{
Timestamp_Control last;
@@ -150,52 +122,20 @@ void rtems_cpu_usage_report_with_plugin(
ival, fval
);
}
- #else
- if (total_units) {
- uint64_t ival_64;
-
- ival_64 = the_thread->cpu_time_used;
- ival_64 *= 100000;
- ival = ival_64 / total_units;
- } else {
- ival = 0;
- }
-
- fval = ival % 1000;
- ival /= 1000;
- (*print)( context,
- "%14" PRIu32 " |%4" PRIu32 ".%03" PRIu32 "\n",
- the_thread->cpu_time_used,
- ival,
- fval
- );
- #endif
}
}
}
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- seconds = _Timestamp_Get_seconds( &total );
- nanoseconds = _Timestamp_Get_nanoseconds( &total ) /
- TOD_NANOSECONDS_PER_MICROSECOND;
- (*print)(
- context,
- "------------+----------------------------------------+---------------+---------\n"
- " TIME SINCE LAST CPU USAGE RESET IN SECONDS: %7" PRIu32 ".%06" PRIu32 "\n"
- "-------------------------------------------------------------------------------\n",
- seconds, nanoseconds
- );
- #else
- (*print)(
- context,
- "------------+----------------------------------------+---------------+---------\n"
- " TICKS SINCE LAST SYSTEM RESET: %14" PRIu32 "\n"
- " TOTAL UNITS: %14" PRIu32 "\n"
- "-------------------------------------------------------------------------------\n",
- _Watchdog_Ticks_since_boot - CPU_usage_Ticks_at_last_reset,
- total_units
- );
- #endif
+ seconds = _Timestamp_Get_seconds( &total );
+ nanoseconds = _Timestamp_Get_nanoseconds( &total ) /
+ TOD_NANOSECONDS_PER_MICROSECOND;
+ (*print)(
+ context,
+ "------------+----------------------------------------+---------------+---------\n"
+ " TIME SINCE LAST CPU USAGE RESET IN SECONDS: %7" PRIu32 ".%06" PRIu32 "\n"
+ "-------------------------------------------------------------------------------\n",
+ seconds, nanoseconds
+ );
}
void rtems_cpu_usage_report( void )
diff --git a/cpukit/libmisc/cpuuse/cpuusagereset.c b/cpukit/libmisc/cpuuse/cpuusagereset.c
index a167e85..e6c429e 100644
--- a/cpukit/libmisc/cpuuse/cpuusagereset.c
+++ b/cpukit/libmisc/cpuuse/cpuusagereset.c
@@ -27,11 +27,7 @@ static void CPU_usage_Per_thread_handler(
Thread_Control *the_thread
)
{
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- _Timestamp_Set_to_zero( &the_thread->cpu_time_used );
- #else
- the_thread->cpu_time_used = 0;
- #endif
+ _Timestamp_Set_to_zero( &the_thread->cpu_time_used );
}
/*
@@ -39,21 +35,17 @@ static void CPU_usage_Per_thread_handler(
*/
void rtems_cpu_usage_reset( void )
{
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- uint32_t cpu_count;
- uint32_t cpu_index;
+ uint32_t cpu_count;
+ uint32_t cpu_index;
- _TOD_Get_uptime( &CPU_usage_Uptime_at_last_reset );
+ _TOD_Get_uptime( &CPU_usage_Uptime_at_last_reset );
- cpu_count = rtems_get_processor_count();
- for ( cpu_index = 0 ; cpu_index < cpu_count ; ++cpu_index ) {
- Per_CPU_Control *cpu = _Per_CPU_Get_by_index( cpu_index );
+ cpu_count = rtems_get_processor_count();
+ for ( cpu_index = 0 ; cpu_index < cpu_count ; ++cpu_index ) {
+ Per_CPU_Control *cpu = _Per_CPU_Get_by_index( cpu_index );
- cpu->time_of_last_context_switch = CPU_usage_Uptime_at_last_reset;
- }
- #else
- CPU_usage_Ticks_at_last_reset = _Watchdog_Ticks_since_boot;
- #endif
+ cpu->time_of_last_context_switch = CPU_usage_Uptime_at_last_reset;
+ }
rtems_iterate_over_all_threads(CPU_usage_Per_thread_handler);
}
diff --git a/cpukit/libmisc/cpuuse/cpuusagetop.c b/cpukit/libmisc/cpuuse/cpuusagetop.c
index e4a47fe..eaa192a 100644
--- a/cpukit/libmisc/cpuuse/cpuusagetop.c
+++ b/cpukit/libmisc/cpuuse/cpuusagetop.c
@@ -144,31 +144,14 @@ static inline bool less_than_uint32_t( uint32_t * lhs, uint32_t * rhs )
return false;
}
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #define CPU_usage_Equal_to( _lhs, _rhs ) \
- _Timestamp_Equal_to( _lhs, _rhs )
-#else
- #define CPU_usage_Equal_to( _lhs, _rhs ) \
- equal_to_uint32_t( _lhs, _rhs )
-#endif
+#define CPU_usage_Equal_to( _lhs, _rhs ) \
+ _Timestamp_Equal_to( _lhs, _rhs )
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #define CPU_usage_Set_to_zero( _time ) \
- _Timestamp_Set_to_zero( _time )
-#else
- #define CPU_usage_Set_to_zero( _time ) \
- do { \
- *_time = 0; \
- } while (0)
-#endif
+#define CPU_usage_Set_to_zero( _time ) \
+ _Timestamp_Set_to_zero( _time )
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #define CPU_usage_Less_than( _lhs, _rhs ) \
- _Timestamp_Less_than( _lhs, _rhs )
-#else
- #define CPU_usage_Less_than( _lhs, _rhs ) \
- less_than_uint32_t( _lhs, _rhs )
-#endif
+#define CPU_usage_Less_than( _lhs, _rhs ) \
+ _Timestamp_Less_than( _lhs, _rhs )
static void
print_memsize(rtems_cpu_usage_data* data, const uint32_t size, const char* label)
@@ -581,11 +564,6 @@ void rtems_cpu_usage_top_with_plugin(
rtems_printk_plugin_t print
)
{
-#ifdef __RTEMS_USE_TICKS_FOR_STATISTICS__
- if ( !print )
- return;
- (*print)(context, "error: tick kernels not supported\n");
-#else
rtems_status_code sc;
rtems_task_priority priority;
rtems_name name;
@@ -714,7 +692,6 @@ void rtems_cpu_usage_top_with_plugin(
rtems_event_send(id, RTEMS_EVENT_1);
}
}
-#endif
}
void rtems_cpu_usage_top( void )
diff --git a/cpukit/libmisc/cpuuse/cpuuse.h b/cpukit/libmisc/cpuuse/cpuuse.h
index 662d905..1e26019 100644
--- a/cpukit/libmisc/cpuuse/cpuuse.h
+++ b/cpukit/libmisc/cpuuse/cpuuse.h
@@ -25,9 +25,7 @@
#include <rtems.h>
#include <rtems/bspIo.h>
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #include <rtems/score/timestamp.h>
-#endif
+#include <rtems/score/timestamp.h>
/**
* @defgroup libmisc_cpuuse CPU Usage
@@ -39,11 +37,7 @@
extern "C" {
#endif
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- extern Timestamp_Control CPU_usage_Uptime_at_last_reset;
-#else
- extern uint32_t CPU_usage_Ticks_at_last_reset;
-#endif
+extern Timestamp_Control CPU_usage_Uptime_at_last_reset;
/*
* rtems_cpu_usage_report_with_handler
diff --git a/cpukit/rtems/include/rtems/rtems/ratemon.h b/cpukit/rtems/include/rtems/rtems/ratemon.h
index 8701639..3f8ed8b 100644
--- a/cpukit/rtems/include/rtems/rtems/ratemon.h
+++ b/cpukit/rtems/include/rtems/rtems/ratemon.h
@@ -62,25 +62,17 @@ extern "C" {
* This is the public type used for the rate monotonic timing
* statistics.
*/
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #include <rtems/score/timespec.h>
+#include <rtems/score/timespec.h>
- typedef struct timespec rtems_rate_monotonic_period_time_t;
-#else
- typedef uint32_t rtems_rate_monotonic_period_time_t;
-#endif
+typedef struct timespec rtems_rate_monotonic_period_time_t;
/**
* This is the internal type used for the rate monotonic timing
* statistics.
*/
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #include <rtems/score/timestamp.h>
+#include <rtems/score/timestamp.h>
- typedef Timestamp_Control Rate_monotonic_Period_time_t;
-#else
- typedef uint32_t Rate_monotonic_Period_time_t;
-#endif
+typedef Timestamp_Control Rate_monotonic_Period_time_t;
/**
* The following enumerated type defines the states in which a
diff --git a/cpukit/rtems/include/rtems/rtems/ratemonimpl.h b/cpukit/rtems/include/rtems/rtems/ratemonimpl.h
index 1489e57..b3aa1cf 100644
--- a/cpukit/rtems/include/rtems/rtems/ratemonimpl.h
+++ b/cpukit/rtems/include/rtems/rtems/ratemonimpl.h
@@ -201,46 +201,30 @@ void _Rate_monotonic_Initiate_statistics(
*
* This method resets the statistics information for a period instance.
*/
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #define _Rate_monotonic_Reset_wall_time_statistics( _the_period ) \
- do { \
- /* set the minimums to a large value */ \
- _Timestamp_Set( \
- &(_the_period)->Statistics.min_wall_time, \
- 0x7fffffff, \
- 0x7fffffff \
- ); \
- } while (0)
-#else
- #define _Rate_monotonic_Reset_wall_time_statistics( _the_period ) \
- do { \
- /* set the minimum to a large value */ \
- (_the_period)->Statistics.min_wall_time = 0xffffffff; \
- } while (0)
-#endif
+#define _Rate_monotonic_Reset_wall_time_statistics( _the_period ) \
+ do { \
+ /* set the minimums to a large value */ \
+ _Timestamp_Set( \
+ &(_the_period)->Statistics.min_wall_time, \
+ 0x7fffffff, \
+ 0x7fffffff \
+ ); \
+ } while (0)
/**
* @brief Rate_monotonic_Reset_cpu_use_statistics
*
* This helper method resets the period CPU usage statistics structure.
*/
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #define _Rate_monotonic_Reset_cpu_use_statistics( _the_period ) \
- do { \
- /* set the minimums to a large value */ \
- _Timestamp_Set( \
- &(_the_period)->Statistics.min_cpu_time, \
- 0x7fffffff, \
- 0x7fffffff \
- ); \
- } while (0)
-#else
- #define _Rate_monotonic_Reset_cpu_use_statistics( _the_period ) \
- do { \
- /* set the minimum to a large value */ \
- (_the_period)->Statistics.min_cpu_time = 0xffffffff; \
- } while (0)
-#endif
+#define _Rate_monotonic_Reset_cpu_use_statistics( _the_period ) \
+ do { \
+ /* set the minimums to a large value */ \
+ _Timestamp_Set( \
+ &(_the_period)->Statistics.min_cpu_time, \
+ 0x7fffffff, \
+ 0x7fffffff \
+ ); \
+ } while (0)
/**
* @brief Rate_monotonic_Reset_statistics
diff --git a/cpukit/rtems/include/rtems/rtems/types.h b/cpukit/rtems/include/rtems/rtems/types.h
index fb88116..9789476 100644
--- a/cpukit/rtems/include/rtems/rtems/types.h
+++ b/cpukit/rtems/include/rtems/rtems/types.h
@@ -124,11 +124,7 @@ typedef Watchdog_Interval rtems_interval;
* When using nanoseconds granularity timing, RTEMS may internally use a
* variety of representations.
*/
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- typedef struct timespec rtems_thread_cpu_usage_t;
-#else
- typedef uint32_t rtems_thread_cpu_usage_t;
-#endif
+typedef struct timespec rtems_thread_cpu_usage_t;
/**
* @brief Data structure to manage and manipulate calendar
diff --git a/cpukit/rtems/src/ratemongetstatistics.c b/cpukit/rtems/src/ratemongetstatistics.c
index d106f04..6644562 100644
--- a/cpukit/rtems/src/ratemongetstatistics.c
+++ b/cpukit/rtems/src/ratemongetstatistics.c
@@ -46,21 +46,12 @@ rtems_status_code rtems_rate_monotonic_get_statistics(
src = &the_period->Statistics;
dst->count = src->count;
dst->missed_count = src->missed_count;
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- _Timestamp_To_timespec( &src->min_cpu_time, &dst->min_cpu_time );
- _Timestamp_To_timespec( &src->max_cpu_time, &dst->max_cpu_time );
- _Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time );
- _Timestamp_To_timespec( &src->min_wall_time, &dst->min_wall_time );
- _Timestamp_To_timespec( &src->max_wall_time, &dst->max_wall_time );
- _Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time );
- #else
- dst->min_cpu_time = src->min_cpu_time;
- dst->max_cpu_time = src->max_cpu_time;
- dst->total_cpu_time = src->total_cpu_time;
- dst->min_wall_time = src->min_wall_time;
- dst->max_wall_time = src->max_wall_time;
- dst->total_wall_time = src->total_wall_time;
- #endif
+ _Timestamp_To_timespec( &src->min_cpu_time, &dst->min_cpu_time );
+ _Timestamp_To_timespec( &src->max_cpu_time, &dst->max_cpu_time );
+ _Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time );
+ _Timestamp_To_timespec( &src->min_wall_time, &dst->min_wall_time );
+ _Timestamp_To_timespec( &src->max_wall_time, &dst->max_wall_time );
+ _Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time );
_Objects_Put( &the_period->Object );
return RTEMS_SUCCESSFUL;
diff --git a/cpukit/rtems/src/ratemongetstatus.c b/cpukit/rtems/src/ratemongetstatus.c
index 37d524d..b61e234 100644
--- a/cpukit/rtems/src/ratemongetstatus.c
+++ b/cpukit/rtems/src/ratemongetstatus.c
@@ -24,10 +24,7 @@
#include <rtems/score/isr.h>
#include <rtems/rtems/ratemonimpl.h>
#include <rtems/score/thread.h>
-
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #include <rtems/score/timespec.h>
-#endif
+#include <rtems/score/timespec.h>
rtems_status_code rtems_rate_monotonic_get_status(
rtems_id id,
@@ -54,14 +51,8 @@ rtems_status_code rtems_rate_monotonic_get_status(
* If the period is inactive, there is no information.
*/
if ( status->state == RATE_MONOTONIC_INACTIVE ) {
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- _Timespec_Set_to_zero( &status->since_last_period );
- _Timespec_Set_to_zero( &status->executed_since_last_period );
- #else
- status->since_last_period = 0;
- status->executed_since_last_period = 0;
- #endif
-
+ _Timespec_Set_to_zero( &status->since_last_period );
+ _Timespec_Set_to_zero( &status->executed_since_last_period );
} else {
/*
@@ -76,17 +67,12 @@ rtems_status_code rtems_rate_monotonic_get_status(
return RTEMS_NOT_DEFINED;
}
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- _Timestamp_To_timespec(
- &since_last_period, &status->since_last_period
- );
- _Timestamp_To_timespec(
- &executed, &status->executed_since_last_period
- );
- #else
- status->since_last_period = since_last_period;
- status->executed_since_last_period = executed;
- #endif
+ _Timestamp_To_timespec(
+ &since_last_period, &status->since_last_period
+ );
+ _Timestamp_To_timespec(
+ &executed, &status->executed_since_last_period
+ );
}
_Objects_Put( &the_period->Object );
diff --git a/cpukit/rtems/src/ratemonperiod.c b/cpukit/rtems/src/ratemonperiod.c
index ca278fb..6aefaba 100644
--- a/cpukit/rtems/src/ratemonperiod.c
+++ b/cpukit/rtems/src/ratemonperiod.c
@@ -30,67 +30,50 @@ bool _Rate_monotonic_Get_status(
Thread_CPU_usage_t *cpu_since_last_period
)
{
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- Timestamp_Control uptime;
- #endif
- Thread_Control *owning_thread = the_period->owner;
- Thread_CPU_usage_t used;
+ Timestamp_Control uptime;
+ Thread_Control *owning_thread = the_period->owner;
+ Thread_CPU_usage_t used;
/*
* Determine elapsed wall time since period initiated.
*/
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- _TOD_Get_uptime( &uptime );
- _Timestamp_Subtract(
- &the_period->time_period_initiated, &uptime, wall_since_last_period
- );
- #else
- *wall_since_last_period =
- _Watchdog_Ticks_since_boot - the_period->time_period_initiated;
- #endif
+ _TOD_Get_uptime( &uptime );
+ _Timestamp_Subtract(
+ &the_period->time_period_initiated, &uptime, wall_since_last_period
+ );
/*
* Determine cpu usage since period initiated.
*/
used = owning_thread->cpu_time_used;
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- if (owning_thread == _Thread_Executing) {
+ if (owning_thread == _Thread_Executing) {
- Thread_CPU_usage_t ran;
+ Thread_CPU_usage_t ran;
- /* How much time time since last context switch */
- _Timestamp_Subtract(
- &_Thread_Time_of_last_context_switch, &uptime, &ran
- );
+ /* How much time time since last context switch */
+ _Timestamp_Subtract(
+ &_Thread_Time_of_last_context_switch, &uptime, &ran
+ );
- /* cpu usage += ran */
- _Timestamp_Add_to( &used, &ran );
+ /* cpu usage += ran */
+ _Timestamp_Add_to( &used, &ran );
- /*
- * The cpu usage info was reset while executing. Can't
- * determine a status.
- */
- if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
- return false;
+ /*
+ * The cpu usage info was reset while executing. Can't
+ * determine a status.
+ */
+ if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
+ return false;
- /* used = current cpu usage - cpu usage at start of period */
- _Timestamp_Subtract(
- &the_period->cpu_usage_period_initiated,
- &used,
- cpu_since_last_period
- );
- }
- #else
- /*
- * The cpu usage info was reset while executing. Can't
- * determine a status.
- */
- if (used < the_period->cpu_usage_period_initiated)
- return false;
+ /* used = current cpu usage - cpu usage at start of period */
+ _Timestamp_Subtract(
+ &the_period->cpu_usage_period_initiated,
+ &used,
+ cpu_since_last_period
+ );
+ }
- *cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
- #endif
return true;
}
diff --git a/cpukit/rtems/src/ratemonreportstatistics.c b/cpukit/rtems/src/ratemonreportstatistics.c
index 0b1a320..856d431 100644
--- a/cpukit/rtems/src/ratemonreportstatistics.c
+++ b/cpukit/rtems/src/ratemonreportstatistics.c
@@ -23,12 +23,10 @@
#include <inttypes.h>
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- /* We print to 1/10's of milliseconds */
- #define NANOSECONDS_DIVIDER 1000
- #define PERCENT_FMT "%04" PRId32
- #define NANOSECONDS_FMT "%06" PRId32
-#endif
+/* We print to 1/10's of milliseconds */
+#define NANOSECONDS_DIVIDER 1000
+#define PERCENT_FMT "%04" PRId32
+#define NANOSECONDS_FMT "%06" PRId32
void rtems_rate_monotonic_report_statistics_with_plugin(
void *context,
@@ -45,10 +43,8 @@ void rtems_rate_monotonic_report_statistics_with_plugin(
return;
(*print)( context, "Period information by period\n" );
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- (*print)( context, "--- CPU times are in seconds ---\n" );
- (*print)( context, "--- Wall times are in seconds ---\n" );
- #endif
+ (*print)( context, "--- CPU times are in seconds ---\n" );
+ (*print)( context, "--- Wall times are in seconds ---\n" );
/*
Layout by columns -- in memory of Hollerith :)
@@ -62,25 +58,11 @@ ididididid NNNN ccccc mmmmmm X
1234567890123456789012345678901234567890123456789012345678901234567890123456789\
\n");
*/
- (*print)( context, " ID OWNER COUNT MISSED "
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- " "
- #endif
- "CPU TIME "
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- " "
- #endif
- " WALL TIME\n"
- );
- (*print)( context, " "
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- " "
- #endif
- "MIN/MAX/AVG "
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- " "
- #endif
- " MIN/MAX/AVG\n"
+ (*print)( context,
+ " ID OWNER COUNT MISSED "
+ " CPU TIME WALL TIME\n"
+ " "
+ " MIN/MAX/AVG MIN/MAX/AVG\n"
);
/*
@@ -126,7 +108,6 @@ ididididid NNNN ccccc mmmmmm X
* print CPU Usage part of statistics
*/
{
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
struct timespec cpu_average;
struct timespec *min_cpu = &the_stats.min_cpu_time;
struct timespec *max_cpu = &the_stats.max_cpu_time;
@@ -144,25 +125,12 @@ ididididid NNNN ccccc mmmmmm X
_Timespec_Get_seconds( &cpu_average ),
_Timespec_Get_nanoseconds( &cpu_average ) / NANOSECONDS_DIVIDER
);
- #else
- uint32_t ival_cpu, fval_cpu;
-
- ival_cpu = the_stats.total_cpu_time * 100 / the_stats.count;
- fval_cpu = ival_cpu % 100;
- ival_cpu /= 100;
-
- (*print)( context,
- "%3" PRId32 "/%4" PRId32 "/%3" PRId32 ".%02" PRId32 " ",
- the_stats.min_cpu_time, the_stats.max_cpu_time, ival_cpu, fval_cpu
- );
- #endif
}
/*
* print wall time part of statistics
*/
{
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
struct timespec wall_average;
struct timespec *min_wall = &the_stats.min_wall_time;
struct timespec *max_wall = &the_stats.max_wall_time;
@@ -180,17 +148,6 @@ ididididid NNNN ccccc mmmmmm X
_Timespec_Get_seconds( &wall_average ),
_Timespec_Get_nanoseconds( &wall_average ) / NANOSECONDS_DIVIDER
);
- #else
- uint32_t ival_wall, fval_wall;
-
- ival_wall = the_stats.total_wall_time * 100 / the_stats.count;
- fval_wall = ival_wall % 100;
- ival_wall /= 100;
- (*print)( context,
- "%3" PRId32 "/%4" PRId32 "/%3" PRId32 ".%02" PRId32 "\n",
- the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall
- );
- #endif
}
}
}
diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h
index c69646b..05c1ff7 100644
--- a/cpukit/score/include/rtems/score/thread.h
+++ b/cpukit/score/include/rtems/score/thread.h
@@ -83,13 +83,9 @@ extern "C" {
* The user can define this at configure time and go back to ticks
* resolution.
*/
-#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- #include <rtems/score/timestamp.h>
+#include <rtems/score/timestamp.h>
- typedef Timestamp_Control Thread_CPU_usage_t;
-#else
- typedef uint32_t Thread_CPU_usage_t;
-#endif
+typedef Timestamp_Control Thread_CPU_usage_t;
/**
* The following defines the "return type" of a thread.
diff --git a/cpukit/score/src/schedulerdefaulttick.c b/cpukit/score/src/schedulerdefaulttick.c
index db67ca1..19acd3b 100644
--- a/cpukit/score/src/schedulerdefaulttick.c
+++ b/cpukit/score/src/schedulerdefaulttick.c
@@ -31,13 +31,6 @@ void _Scheduler_default_Tick(
{
(void) scheduler;
- #ifdef __RTEMS_USE_TICKS_FOR_STATISTICS__
- /*
- * Increment the number of ticks this thread has been executing
- */
- executing->cpu_time_used++;
- #endif
-
/*
* If the thread is not preemptible or is not ready, then
* just return.
diff --git a/cpukit/score/src/threaddispatch.c b/cpukit/score/src/threaddispatch.c
index f20f427..cce3aff 100644
--- a/cpukit/score/src/threaddispatch.c
+++ b/cpukit/score/src/threaddispatch.c
@@ -99,17 +99,10 @@ void _Thread_Do_dispatch( Per_CPU_Control *cpu_self, ISR_Level level )
_ISR_Enable( level );
#endif
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- _Thread_Update_cpu_time_used(
- executing,
- &cpu_self->time_of_last_context_switch
- );
- #else
- {
- _TOD_Get_uptime( &cpu_self->time_of_last_context_switch );
- heir->cpu_time_used++;
- }
- #endif
+ _Thread_Update_cpu_time_used(
+ executing,
+ &cpu_self->time_of_last_context_switch
+ );
#if !defined(__DYNAMIC_REENT__)
/*
diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c
index 3c0a412..c6985f01 100644
--- a/cpukit/score/src/threadinitialize.c
+++ b/cpukit/score/src/threadinitialize.c
@@ -217,11 +217,7 @@ bool _Thread_Initialize(
/*
* Initialize the CPU usage statistics
*/
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- _Timestamp_Set_to_zero( &the_thread->cpu_time_used );
- #else
- the_thread->cpu_time_used = 0;
- #endif
+ _Timestamp_Set_to_zero( &the_thread->cpu_time_used );
/*
* initialize thread's key vaule node chain
diff --git a/testsuites/sptests/sp69/init.c b/testsuites/sptests/sp69/init.c
index ecc3846..ac6f58c 100644
--- a/testsuites/sptests/sp69/init.c
+++ b/testsuites/sptests/sp69/init.c
@@ -55,15 +55,10 @@ rtems_task Init(
/* Check status values. */
rtems_test_assert( period_status.owner == rtems_task_self() );
rtems_test_assert( period_status.state == RATE_MONOTONIC_INACTIVE );
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
- rtems_test_assert( period_status.since_last_period.tv_sec == 0 );
- rtems_test_assert( period_status.since_last_period.tv_nsec == 0 );
- rtems_test_assert( period_status.executed_since_last_period.tv_sec == 0 );
- rtems_test_assert( period_status.executed_since_last_period.tv_nsec == 0 );
- #else
- rtems_test_assert( period_status.since_last_period == 0 );
- rtems_test_assert( period_status.executed_since_last_period == 0 );
- #endif
+ rtems_test_assert( period_status.since_last_period.tv_sec == 0 );
+ rtems_test_assert( period_status.since_last_period.tv_nsec == 0 );
+ rtems_test_assert( period_status.executed_since_last_period.tv_sec == 0 );
+ rtems_test_assert( period_status.executed_since_last_period.tv_nsec == 0 );
/*
* Check get_status error cases.
@@ -113,40 +108,25 @@ rtems_task Init(
directive_failed( status, "rate_monotonic_get_status" );
/* Check status values. */
- #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
/* Note: POSIX mandates struct timespec->tv_nsec to be a "long" */
- printf(
- "wall time should be ~600000000 is %ld\n",
- period_status.since_last_period.tv_nsec
- );
- printf(
- "cpu time should be ~100000000 is %ld\n",
- period_status.executed_since_last_period.tv_nsec
- );
- rtems_test_assert( period_status.since_last_period.tv_sec == 0 );
- rtems_test_assert( period_status.since_last_period.tv_nsec >= 600000000 );
- rtems_test_assert( period_status.since_last_period.tv_nsec <= 610000000 );
- rtems_test_assert( period_status.executed_since_last_period.tv_sec == 0 );
- rtems_test_assert(
- period_status.executed_since_last_period.tv_nsec >= 100000000
- );
- rtems_test_assert(
- period_status.executed_since_last_period.tv_nsec <= 110000000
- );
- #else
- printf(
- "wall time should be ~60 is %" PRId32 "\n",
- (int) period_status.since_last_period
- );
- printf(
- "cpu time should be ~10 is %" PRId32 "\n",
- (int) period_status.executed_since_last_period
- );
- rtems_test_assert( period_status.since_last_period >= 60 );
- rtems_test_assert( period_status.since_last_period <= 61 );
- rtems_test_assert( period_status.executed_since_last_period >= 10 );
- rtems_test_assert( period_status.executed_since_last_period <= 12 );
- #endif
+ printf(
+ "wall time should be ~600000000 is %ld\n",
+ period_status.since_last_period.tv_nsec
+ );
+ printf(
+ "cpu time should be ~100000000 is %ld\n",
+ period_status.executed_since_last_period.tv_nsec
+ );
+ rtems_test_assert( period_status.since_last_period.tv_sec == 0 );
+ rtems_test_assert( period_status.since_last_period.tv_nsec >= 600000000 );
+ rtems_test_assert( period_status.since_last_period.tv_nsec <= 610000000 );
+ rtems_test_assert( period_status.executed_since_last_period.tv_sec == 0 );
+ rtems_test_assert(
+ period_status.executed_since_last_period.tv_nsec >= 100000000
+ );
+ rtems_test_assert(
+ period_status.executed_since_last_period.tv_nsec <= 110000000
+ );
/* ensure the missed periods are properly accounted for */
puts( "rtems_rate_monotonic_cancel - OK" );
More information about the vc
mailing list