##// END OF EJS Templates
Removed all remaining unused macros and fixed bug...
Removed all remaining unused macros and fixed bug There was two numbers to set the FSW number of tasks NB_OF_TASKS and CONFIGURE_MAXIMUM_TASKS while CONFIGURE_MAXIMUM_TASKS = NB_OF_TASKS + 1

File last commit:

r381:a9b894b0ab6a 3.2.0.19 No PWD scrub with...
r385:bd1252670981 3.2.0.20 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;
}