diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-05-21 20:28:02 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-05-21 20:28:02 +0000 |
commit | e49e84c9abd9a67d92fd12ab18794ed1d809f70c (patch) | |
tree | 0dbb7794e3e764fb09123b94d7d2e1d913b60e38 | |
parent | 2007-05-21 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-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.
-rw-r--r-- | cpukit/ChangeLog | 9 | ||||
-rw-r--r-- | cpukit/libmisc/Makefile.am | 3 | ||||
-rw-r--r-- | cpukit/libmisc/cpuuse/README | 15 | ||||
-rw-r--r-- | cpukit/libmisc/cpuuse/cpuusagereport.c (renamed from cpukit/libmisc/cpuuse/cpuuse.c) | 28 | ||||
-rw-r--r-- | cpukit/libmisc/cpuuse/cpuusagereset.c | 50 |
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); +} |