##// END OF EJS Templates
Added gcov support...
Added gcov support Imported sources from LESIA (thanks!) Added CMake option Coverage to enable code coverage on LFR and link with modified libgcov Added target to build html reports

File last commit:

r381:a9b894b0ab6a 3.2.0.19 No PWD scrub with...
r387:96eb9489ec21 No PWD scrub with...
Show More
lfr_cpu_usage_report.c
69 lines | 2.1 KiB | text/x-c | CLexer
/ src / lfr_cpu_usage_report.c
/*
* CPU Usage Reporter
*
* COPYRIGHT (c) 1989-2009
* 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$
*/
#include "lfr_cpu_usage_report.h"
#include "fsw_params.h"
extern rtems_id Task_id[];
unsigned char lfr_rtems_cpu_usage_report( void )
{
uint32_t api_index;
uint32_t information_index;
Thread_Control *the_thread;
Objects_Information *information;
uint32_t ival;
uint32_t fval;
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
Timestamp_Control uptime;
Timestamp_Control total;
Timestamp_Control ran;
#else
#error "Can't compute CPU usage using ticks on LFR"
#endif
unsigned char cpu_load;
ival = 0;
cpu_load = 0;
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ )
{
if ( !_Objects_Information_table[ api_index ] ) { }
else
{
information = _Objects_Information_table[ api_index ][ 1 ];
if ( information != NULL )
{
for(information_index=1;information_index<=information->maximum;information_index++)
{
the_thread = (Thread_Control *)information->local_table[ information_index ];
if ( the_thread == NULL) { }
else if(the_thread->Object.id == Task_id[TASKID_SCRB]) // Only measure scrubbing task load, CPU load is 100%-Scrubbing
{
_TOD_Get_uptime( &uptime );
_Timestamp_Subtract( &CPU_usage_Uptime_at_last_reset, &uptime, &total );
ran = the_thread->cpu_time_used;
_Timestamp_Divide( &ran, &total, &ival, &fval);
cpu_load = (unsigned char)(CONST_255 - ((ival*CONST_10+fval/CONST_100)*CONST_256/CONST_1000));
}
}
}
}
}
return cpu_load;
}