summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2007-05-21 20:28:02 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2007-05-21 20:28:02 +0000
commite49e84c9abd9a67d92fd12ab18794ed1d809f70c (patch)
tree0dbb7794e3e764fb09123b94d7d2e1d913b60e38
parent2007-05-21 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-e49e84c9abd9a67d92fd12ab18794ed1d809f70c.tar.bz2
2007-05-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* libmisc/Makefile.am, libmisc/cpuuse/README: Split remaining CPU Usage functionality into multiple files to eliminate unnecessary cohesion. Update README. * libmisc/cpuuse/cpuusagereport.c, libmisc/cpuuse/cpuusagereset.c: New files. * libmisc/cpuuse/cpuuse.c: Removed.
Diffstat (limited to '')
-rw-r--r--cpukit/ChangeLog9
-rw-r--r--cpukit/libmisc/Makefile.am3
-rw-r--r--cpukit/libmisc/cpuuse/README15
-rw-r--r--cpukit/libmisc/cpuuse/cpuusagereport.c (renamed from cpukit/libmisc/cpuuse/cpuuse.c)28
-rw-r--r--cpukit/libmisc/cpuuse/cpuusagereset.c50
5 files changed, 76 insertions, 29 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog
index 3da302b705..d8431262b8 100644
--- a/cpukit/ChangeLog
+++ b/cpukit/ChangeLog
@@ -1,5 +1,14 @@
2007-05-21 Joel Sherrill <joel.sherrill@oarcorp.com>
+ * libmisc/Makefile.am, libmisc/cpuuse/README: Split remaining CPU Usage
+ functionality into multiple files to eliminate unnecessary cohesion.
+ Update README.
+ * libmisc/cpuuse/cpuusagereport.c, libmisc/cpuuse/cpuusagereset.c:
+ New files.
+ * libmisc/cpuuse/cpuuse.c: Removed.
+
+2007-05-21 Joel Sherrill <joel.sherrill@oarcorp.com>
+
* rtems/src/ratemonperiod.c: Fix math ordering bug which resulted in a
negative value in some circumstances. Also cleaned up to share uptime
declaration.
diff --git a/cpukit/libmisc/Makefile.am b/cpukit/libmisc/Makefile.am
index afcb6569dc..33ee30182d 100644
--- a/cpukit/libmisc/Makefile.am
+++ b/cpukit/libmisc/Makefile.am
@@ -19,7 +19,8 @@ libcapture_a_SOURCES = capture/capture.c capture/capture-cli.c \
EXTRA_DIST += cpuuse/README
noinst_LIBRARIES += libcpuuse.a
-libcpuuse_a_SOURCES = cpuuse/cpuuse.c cpuuse/cpuuse.h
+libcpuuse_a_SOURCES = cpuuse/cpuusagereport.c cpuuse/cpuusagereset.c \
+ cpuuse/cpuuse.h
## devnull
diff --git a/cpukit/libmisc/cpuuse/README b/cpukit/libmisc/cpuuse/README
index bd3cc55e34..ac674bb0b6 100644
--- a/cpukit/libmisc/cpuuse/README
+++ b/cpukit/libmisc/cpuuse/README
@@ -2,13 +2,20 @@
# $Id$
#
-This directory contains a CPU usage reported. It provides two
-primary features:
+This directory contains code to report and reset per-task CPU usage.
+If the BSP supports nanosecond timestamp granularity, this this information
+is very accurate. Otherwise, it is dependendent on the tick granularity.
- + provides an educated guess at each task's CPU usage
+It provides two primary features:
+
+ + Generate a CPU Usage Report
+ + Reset CPU Usage Information
NOTES:
-1. CPU usage is "docked" by a clock tick at each context switch.
+1. If configured for tick granularity, CPU usage is "docked" by a
+ clock tick at each context switch.
+2. If configured for nanosecond granularity, no work is done at each
+ clock tick. All bookkeeping is done as part of a context switch.
diff --git a/cpukit/libmisc/cpuuse/cpuuse.c b/cpukit/libmisc/cpuuse/cpuusagereport.c
index cf1b6f2b4d..89f264db40 100644
--- a/cpukit/libmisc/cpuuse/cpuuse.c
+++ b/cpukit/libmisc/cpuuse/cpuusagereport.c
@@ -82,7 +82,11 @@ void rtems_cpu_usage_report( void )
#endif
printk( "CPU Usage by thread\n"
+ #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
+ " ID NAME SECONDS PERCENT\n"
+ #else
" ID NAME TICKS PERCENT\n"
+ #endif
);
for ( api_index = 1 ;
@@ -143,27 +147,3 @@ void rtems_cpu_usage_report( void )
printk( "Total Units = %" PRId32 "\n\n", total_units );
#endif
}
-
-static void CPU_usage_Per_thread_handler(
- Thread_Control *the_thread
-)
-{
- #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
- the_thread->cpu_time_used.tv_sec = 0;
- the_thread->cpu_time_used.tv_nsec = 0;
- #else
- the_thread->ticks_executed = 0;
- #endif
-}
-
-/*
- * rtems_cpu_usage_reset
- */
-void rtems_cpu_usage_reset( void )
-{
- #ifndef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
- CPU_usage_Ticks_at_last_reset = _Watchdog_Ticks_since_boot;
- #endif
-
- rtems_iterate_over_all_threads(CPU_usage_Per_thread_handler);
-}
diff --git a/cpukit/libmisc/cpuuse/cpuusagereset.c b/cpukit/libmisc/cpuuse/cpuusagereset.c
new file mode 100644
index 0000000000..6622b93c90
--- /dev/null
+++ b/cpukit/libmisc/cpuuse/cpuusagereset.c
@@ -0,0 +1,50 @@
+/*
+ * CPU Usage Reporter
+ *
+ * COPYRIGHT (c) 1989-2007
+ * 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.
+ *
+ * $Id$
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems.h>
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <inttypes.h>
+
+#include <rtems/cpuuse.h>
+
+static void CPU_usage_Per_thread_handler(
+ Thread_Control *the_thread
+)
+{
+ #ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
+ the_thread->cpu_time_used.tv_sec = 0;
+ the_thread->cpu_time_used.tv_nsec = 0;
+ #else
+ the_thread->ticks_executed = 0;
+ #endif
+}
+
+/*
+ * rtems_cpu_usage_reset
+ */
+void rtems_cpu_usage_reset( void )
+{
+ #ifndef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
+ extern uint32_t CPU_usage_Ticks_at_last_reset;
+
+ CPU_usage_Ticks_at_last_reset = _Watchdog_Ticks_since_boot;
+ #endif
+
+ rtems_iterate_over_all_threads(CPU_usage_Per_thread_handler);
+}