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.
This commit is contained in:
Joel Sherrill
2007-05-21 20:28:02 +00:00
parent a205b96b9b
commit e49e84c9ab
5 changed files with 76 additions and 29 deletions

View File

@@ -1,3 +1,12 @@
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> 2007-05-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* rtems/src/ratemonperiod.c: Fix math ordering bug which resulted in a * rtems/src/ratemonperiod.c: Fix math ordering bug which resulted in a

View File

@@ -19,7 +19,8 @@ libcapture_a_SOURCES = capture/capture.c capture/capture-cli.c \
EXTRA_DIST += cpuuse/README EXTRA_DIST += cpuuse/README
noinst_LIBRARIES += libcpuuse.a 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 ## devnull

View File

@@ -2,13 +2,20 @@
# $Id$ # $Id$
# #
This directory contains a CPU usage reported. It provides two This directory contains code to report and reset per-task CPU usage.
primary features: 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: 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.

View File

@@ -82,7 +82,11 @@ void rtems_cpu_usage_report( void )
#endif #endif
printk( "CPU Usage by thread\n" printk( "CPU Usage by thread\n"
#ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
" ID NAME SECONDS PERCENT\n"
#else
" ID NAME TICKS PERCENT\n" " ID NAME TICKS PERCENT\n"
#endif
); );
for ( api_index = 1 ; for ( api_index = 1 ;
@@ -143,27 +147,3 @@ void rtems_cpu_usage_report( void )
printk( "Total Units = %" PRId32 "\n\n", total_units ); printk( "Total Units = %" PRId32 "\n\n", total_units );
#endif #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);
}

View File

@@ -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);
}