summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cpukit/ChangeLog13
-rw-r--r--cpukit/libcsupport/src/__times.c2
-rw-r--r--cpukit/libmisc/cpuuse/cpuusagereport.c6
-rw-r--r--cpukit/libmisc/cpuuse/cpuusagereset.c2
-rw-r--r--cpukit/libmisc/monitor/mon-task.c2
-rw-r--r--cpukit/rtems/include/rtems/rtems/ratemon.h59
-rw-r--r--cpukit/rtems/src/ratemongetstatus.c12
-rw-r--r--cpukit/rtems/src/ratemonperiod.c47
-rw-r--r--cpukit/score/include/rtems/score/thread.h11
-rw-r--r--cpukit/score/src/threaddispatch.c2
-rw-r--r--cpukit/score/src/threadinitialize.c2
-rw-r--r--cpukit/score/src/threadtickletimeslice.c2
12 files changed, 73 insertions, 87 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog
index df69247259..db28f5ac47 100644
--- a/cpukit/ChangeLog
+++ b/cpukit/ChangeLog
@@ -1,3 +1,16 @@
+2008-06-06 Joel Sherrill <joel.sherrill@OARcorp.com>
+
+ * libcsupport/src/__times.c, libmisc/cpuuse/cpuusagereport.c,
+ libmisc/cpuuse/cpuusagereset.c, libmisc/monitor/mon-task.c,
+ rtems/include/rtems/rtems/ratemon.h, rtems/src/ratemongetstatus.c,
+ rtems/src/ratemonperiod.c, score/include/rtems/score/thread.h,
+ score/src/threaddispatch.c, score/src/threadinitialize.c,
+ score/src/threadtickletimeslice.c: Add typedefs for cpu usage and
+ period timing statistics. Also renamed related variables and
+ structure members so they are the same whether you are using
+ nanosecond (e.g. struct timespec) or ticks (e.g. uint32_t)
+ granularity. This lays the groundwork for future cleanup.
+
2008-06-05 Joel Sherrill <joel.sherrill@OARcorp.com>
* sapi/include/confdefs.h: Rework to be more accurate on allocation. In
diff --git a/cpukit/libcsupport/src/__times.c b/cpukit/libcsupport/src/__times.c
index 669ed5ca25..086144dd77 100644
--- a/cpukit/libcsupport/src/__times.c
+++ b/cpukit/libcsupport/src/__times.c
@@ -71,7 +71,7 @@ clock_t _times(
ptms->tms_utime = ticks;
}
#else
- ptms->tms_utime = _Thread_Executing->ticks_executed;
+ ptms->tms_utime = _Thread_Executing->cpu_time_used;
#endif
ptms->tms_stime = ticks;
ptms->tms_cutime = 0;
diff --git a/cpukit/libmisc/cpuuse/cpuusagereport.c b/cpukit/libmisc/cpuuse/cpuusagereport.c
index bdf8f81f5d..144be50645 100644
--- a/cpukit/libmisc/cpuuse/cpuusagereport.c
+++ b/cpukit/libmisc/cpuuse/cpuusagereport.c
@@ -80,7 +80,7 @@ void rtems_cpu_usage_report_with_plugin(
the_thread = (Thread_Control *)information->local_table[ i ];
if ( the_thread )
- total_units += the_thread->ticks_executed;
+ total_units += the_thread->cpu_time_used;
}
}
}
@@ -142,12 +142,12 @@ void rtems_cpu_usage_report_with_plugin(
);
#else
ival = (total_units) ?
- the_thread->ticks_executed * 10000 / total_units : 0;
+ the_thread->cpu_time_used * 10000 / total_units : 0;
fval = ival % 100;
ival /= 100;
(*print)( context,
"%8" PRId32 " %3" PRId32 ".%02" PRId32"\n",
- the_thread->ticks_executed,
+ the_thread->cpu_time_used,
ival,
fval
);
diff --git a/cpukit/libmisc/cpuuse/cpuusagereset.c b/cpukit/libmisc/cpuuse/cpuusagereset.c
index 3acfd2c452..167fe46868 100644
--- a/cpukit/libmisc/cpuuse/cpuusagereset.c
+++ b/cpukit/libmisc/cpuuse/cpuusagereset.c
@@ -31,7 +31,7 @@ static void CPU_usage_Per_thread_handler(
the_thread->cpu_time_used.tv_sec = 0;
the_thread->cpu_time_used.tv_nsec = 0;
#else
- the_thread->ticks_executed = 0;
+ the_thread->cpu_time_used = 0;
#endif
}
diff --git a/cpukit/libmisc/monitor/mon-task.c b/cpukit/libmisc/monitor/mon-task.c
index d559fd3962..60656c683c 100644
--- a/cpukit/libmisc/monitor/mon-task.c
+++ b/cpukit/libmisc/monitor/mon-task.c
@@ -37,7 +37,7 @@ rtems_monitor_task_canonical(
* FIXME: make this optionally cpu_time_executed
*/
#if 0
- canonical_task->ticks = rtems_thread->ticks_executed;
+ canonical_task->ticks = rtems_thread->cpu_time_executed;
#else
canonical_task->ticks = 0;
#endif
diff --git a/cpukit/rtems/include/rtems/rtems/ratemon.h b/cpukit/rtems/include/rtems/rtems/ratemon.h
index 038c26e31e..3f990f28bd 100644
--- a/cpukit/rtems/include/rtems/rtems/ratemon.h
+++ b/cpukit/rtems/include/rtems/rtems/ratemon.h
@@ -62,6 +62,11 @@ extern "C" {
* is used.
*/
#define RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS
+
+ typedef struct timespec rtems_rate_monotonic_period_time_t;
+
+#else
+ typedef uint32_t rtems_rate_monotonic_period_time_t;
#endif
#include <rtems/score/object.h>
@@ -72,6 +77,7 @@ extern "C" {
#include <string.h>
+
/**
* The following enumerated type defines the states in which a
* period may be.
@@ -98,42 +104,23 @@ typedef enum {
typedef struct {
uint32_t count;
uint32_t missed_count;
- #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
- struct timespec min_cpu_time;
- struct timespec max_cpu_time;
- struct timespec total_cpu_time;
- #else
- uint32_t min_cpu_time;
- uint32_t max_cpu_time;
- uint32_t total_cpu_time;
- #endif
- #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS
- struct timespec min_wall_time;
- struct timespec max_wall_time;
- struct timespec total_wall_time;
- #else
- uint32_t min_wall_time;
- uint32_t max_wall_time;
- uint32_t total_wall_time;
- #endif
+ RTEMS_CPU_USAGE_STATISTICS_TIME_TYPE min_cpu_time;
+ RTEMS_CPU_USAGE_STATISTICS_TIME_TYPE max_cpu_time;
+ RTEMS_CPU_USAGE_STATISTICS_TIME_TYPE total_cpu_time;
+
+ rtems_rate_monotonic_period_time_t min_wall_time;
+ rtems_rate_monotonic_period_time_t max_wall_time;
+ rtems_rate_monotonic_period_time_t total_wall_time;
} rtems_rate_monotonic_period_statistics;
/**
* The following defines the period status structure.
*/
typedef struct {
- Objects_Id owner;
- rtems_rate_monotonic_period_states state;
- #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS
- struct timespec since_last_period;
- #else
- uint32_t ticks_since_last_period;
- #endif
- #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
- struct timespec executed_since_last_period;
- #else
- uint32_t ticks_executed_since_last_period;
- #endif
+ Objects_Id owner;
+ rtems_rate_monotonic_period_states state;
+ rtems_rate_monotonic_period_time_t since_last_period;
+ RTEMS_CPU_USAGE_STATISTICS_TIME_TYPE executed_since_last_period;
} rtems_rate_monotonic_period_status;
/**
@@ -144,16 +131,8 @@ typedef struct {
Objects_Control Object;
Watchdog_Control Timer;
rtems_rate_monotonic_period_states state;
- #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
- struct timespec owner_executed_at_period;
- #else
- uint32_t owner_ticks_executed_at_period;
- #endif
- #ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS
- struct timespec time_at_period;
- #else
- uint32_t time_at_period;
- #endif
+ RTEMS_CPU_USAGE_STATISTICS_TIME_TYPE owner_executed_at_period;
+ rtems_rate_monotonic_period_time_t time_at_period;
uint32_t next_length;
Thread_Control *owner;
rtems_rate_monotonic_period_statistics Statistics;
diff --git a/cpukit/rtems/src/ratemongetstatus.c b/cpukit/rtems/src/ratemongetstatus.c
index 5ea67f38e7..ef47a032e5 100644
--- a/cpukit/rtems/src/ratemongetstatus.c
+++ b/cpukit/rtems/src/ratemongetstatus.c
@@ -68,13 +68,13 @@ rtems_status_code rtems_rate_monotonic_get_status(
status->since_last_period.tv_sec = 0;
status->since_last_period.tv_nsec = 0;
#else
- status->ticks_since_last_period = 0;
+ status->since_last_period = 0;
#endif
#ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
status->executed_since_last_period.tv_sec = 0;
status->executed_since_last_period.tv_nsec = 0;
#else
- status->ticks_executed_since_last_period = 0;
+ status->executed_since_last_period = 0;
#endif
} else {
/*
@@ -94,7 +94,7 @@ rtems_status_code rtems_rate_monotonic_get_status(
&status->since_last_period
);
#else
- status->ticks_since_last_period =
+ status->since_last_period =
_Watchdog_Ticks_since_boot - the_period->time_at_period;
#endif
@@ -105,9 +105,9 @@ rtems_status_code rtems_rate_monotonic_get_status(
&status->executed_since_last_period
);
#else
- status->ticks_executed_since_last_period =
- the_period->owner->ticks_executed -
- the_period->owner_ticks_executed_at_period;
+ status->executed_since_last_period =
+ the_period->owner->cpu_time_used -
+ the_period->owner_executed_at_period;
#endif
}
diff --git a/cpukit/rtems/src/ratemonperiod.c b/cpukit/rtems/src/ratemonperiod.c
index ce32c796f3..3777b5ed76 100644
--- a/cpukit/rtems/src/ratemonperiod.c
+++ b/cpukit/rtems/src/ratemonperiod.c
@@ -33,16 +33,10 @@ void _Rate_monotonic_Update_statistics(
)
{
rtems_rate_monotonic_period_statistics *stats;
- #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
- struct timespec executed;
- #else
- uint32_t ticks_executed_since_last_period;
- #endif
+ RTEMS_CPU_USAGE_STATISTICS_TIME_TYPE executed;
+ rtems_rate_monotonic_period_time_t since_last_period;
#ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS
- struct timespec period_start;
- struct timespec since_last_period;
- #else
- uint32_t ticks_since_last_period;
+ rtems_rate_monotonic_period_time_t period_start;
#endif
#if defined(RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS) || \
defined(RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS)
@@ -69,14 +63,13 @@ void _Rate_monotonic_Update_statistics(
_Timespec_Subtract( &period_start, &uptime, &since_last_period );
the_period->time_at_period = uptime;
#else
- ticks_since_last_period =
- _Watchdog_Ticks_since_boot - the_period->time_at_period;
+ since_last_period = _Watchdog_Ticks_since_boot - the_period->time_at_period;
the_period->time_at_period = _Watchdog_Ticks_since_boot;
#endif
#ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
{
- struct timespec ran, used;
+ rtems_rate_monotonic_period_time_t ran, used;
/* Grab CPU usage when the thread got switched in */
used = _Thread_Executing->cpu_time_used;
@@ -95,8 +88,8 @@ void _Rate_monotonic_Update_statistics(
);
}
#else
- ticks_executed_since_last_period = the_period->owner->ticks_executed -
- the_period->owner_ticks_executed_at_period;
+ executed = the_period->owner->cpu_time_used -
+ the_period->owner_executed_at_period;
#endif
/*
@@ -123,13 +116,13 @@ void _Rate_monotonic_Update_statistics(
if ( _Timespec_Greater_than( &executed, &stats->max_cpu_time ) )
stats->max_cpu_time = executed;
#else
- stats->total_cpu_time += ticks_executed_since_last_period;
+ stats->total_cpu_time += executed;
- if ( ticks_executed_since_last_period < stats->min_cpu_time )
- stats->min_cpu_time = ticks_executed_since_last_period;
+ if ( executed < stats->min_cpu_time )
+ stats->min_cpu_time = executed;
- if ( ticks_executed_since_last_period > stats->max_cpu_time )
- stats->max_cpu_time = ticks_executed_since_last_period;
+ if ( executed > stats->max_cpu_time )
+ stats->max_cpu_time = executed;
#endif
/*
@@ -137,13 +130,13 @@ void _Rate_monotonic_Update_statistics(
*/
#ifndef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS
- stats->total_wall_time += ticks_since_last_period;
+ stats->total_wall_time += since_last_period;
- if ( ticks_since_last_period < stats->min_wall_time )
- stats->min_wall_time = ticks_since_last_period;
+ if ( since_last_period < stats->min_wall_time )
+ stats->min_wall_time = since_last_period;
- if ( ticks_since_last_period > stats->max_wall_time )
- stats->max_wall_time = ticks_since_last_period;
+ if ( since_last_period > stats->max_wall_time )
+ stats->max_wall_time = since_last_period;
#else
_Timespec_Add_to( &stats->total_wall_time, &since_last_period );
@@ -241,7 +234,7 @@ rtems_status_code rtems_rate_monotonic_period(
#ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
{
- struct timespec ran;
+ RTEMS_CPU_USAGE_STATISTICS_TIME_TYPE ran;
the_period->owner_executed_at_period =
_Thread_Executing->cpu_time_used;
@@ -260,8 +253,8 @@ rtems_status_code rtems_rate_monotonic_period(
_Timespec_Add_to( &the_period->owner_executed_at_period, &ran );
}
#else
- the_period->owner_ticks_executed_at_period =
- _Thread_Executing->ticks_executed;
+ the_period->owner_executed_at_period =
+ _Thread_Executing->cpu_time_used;
#endif
the_period->state = RATE_MONOTONIC_ACTIVE;
diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h
index a767fe09fe..b863a1f111 100644
--- a/cpukit/score/include/rtems/score/thread.h
+++ b/cpukit/score/include/rtems/score/thread.h
@@ -43,6 +43,11 @@ extern "C" {
* is used.
*/
#define RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
+
+ #define RTEMS_CPU_USAGE_STATISTICS_TIME_TYPE struct timespec
+
+#else
+ #define RTEMS_CPU_USAGE_STATISTICS_TIME_TYPE uint32_t
#endif
#include <rtems/score/context.h>
@@ -344,11 +349,7 @@ struct Thread_Control_struct {
/** This field is the amount of CPU time consumed by this thread
* since it was created.
*/
- #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
- struct timespec cpu_time_used;
- #else
- uint32_t ticks_executed;
- #endif
+ RTEMS_CPU_USAGE_STATISTICS_TIME_TYPE cpu_time_used;
/** This field points to the Ready FIFO for this priority. */
Chain_Control *ready;
/** This field contains precalculated priority map indices. */
diff --git a/cpukit/score/src/threaddispatch.c b/cpukit/score/src/threaddispatch.c
index cddfb757a6..50bac5f4aa 100644
--- a/cpukit/score/src/threaddispatch.c
+++ b/cpukit/score/src/threaddispatch.c
@@ -108,7 +108,7 @@ void _Thread_Dispatch( void )
_Thread_Time_of_last_context_switch = uptime;
}
#else
- heir->ticks_executed++;
+ heir->cpu_time_used++;
#endif
/*
diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c
index 7ef9125a46..2956cf42ed 100644
--- a/cpukit/score/src/threadinitialize.c
+++ b/cpukit/score/src/threadinitialize.c
@@ -211,7 +211,7 @@ boolean _Thread_Initialize(
the_thread->cpu_time_used.tv_sec = 0;
the_thread->cpu_time_used.tv_nsec = 0;
#else
- the_thread->ticks_executed = 0;
+ the_thread->cpu_time_used = 0;
#endif
/*
diff --git a/cpukit/score/src/threadtickletimeslice.c b/cpukit/score/src/threadtickletimeslice.c
index 41f08aa8d0..fbccfcad7c 100644
--- a/cpukit/score/src/threadtickletimeslice.c
+++ b/cpukit/score/src/threadtickletimeslice.c
@@ -53,7 +53,7 @@ void _Thread_Tickle_timeslice( void )
/*
* Increment the number of ticks this thread has been executing
*/
- executing->ticks_executed++;
+ executing->cpu_time_used++;
#endif
/*