mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-26 14:18:20 +00:00
* libcsupport/src/__times.c, libmisc/cpuuse/cpuusagereport.c, libmisc/cpuuse/cpuusagereset.c, posix/src/clockgettime.c, posix/src/pthread.c, posix/src/timersettime.c, rtems/include/rtems/rtems/ratemon.h, rtems/src/clockgetsecondssinceepoch.c, rtems/src/clockgetuptime.c, rtems/src/ratemongetstatus.c, rtems/src/ratemonperiod.c, rtems/src/ratemonreportstatistics.c, rtems/src/taskwakewhen.c, rtems/src/timerfirewhen.c, rtems/src/timerserver.c, rtems/src/timerserverfirewhen.c, score/Makefile.am, score/preinstall.am, score/include/rtems/score/thread.h, score/include/rtems/score/tod.h, score/src/coretod.c, score/src/coretodget.c, score/src/coretodgetuptime.c, score/src/coretodset.c, score/src/coretodtickle.c, score/src/threaddispatch.c, score/src/threadinitialize.c: Add SuperCore handler Timestamp to provide an opaque class for the representation and manipulation of uptime, time of day, and the difference between two timestamps. By using SuperCore Timestamp, it is clear which methods and APIs really have to be struct timespec and which can be in an optimized native format. * score/include/rtems/score/timestamp.h, score/src/coretodgetuptimetimespec.c: New files.
62 lines
1.4 KiB
C
62 lines
1.4 KiB
C
/*
|
|
* 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 <rtems/score/timestamp.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
|
|
_Timestamp_Set_to_zero( &the_thread->cpu_time_used );
|
|
#else
|
|
the_thread->cpu_time_used = 0;
|
|
#endif
|
|
}
|
|
|
|
|
|
/*
|
|
* External data that is shared by cpu usage code but not declared in .h files.
|
|
*/
|
|
#ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
|
|
extern Timestamp_Control CPU_usage_Uptime_at_last_reset;
|
|
#else
|
|
extern uint32_t CPU_usage_Ticks_at_last_reset;
|
|
#endif
|
|
|
|
/*
|
|
* rtems_cpu_usage_reset
|
|
*/
|
|
void rtems_cpu_usage_reset( void )
|
|
{
|
|
#ifdef RTEMS_ENABLE_NANOSECOND_CPU_USAGE_STATISTICS
|
|
_TOD_Get_uptime( &CPU_usage_Uptime_at_last_reset );
|
|
_Thread_Time_of_last_context_switch = CPU_usage_Uptime_at_last_reset;
|
|
#else
|
|
CPU_usage_Ticks_at_last_reset = _Watchdog_Ticks_since_boot;
|
|
#endif
|
|
|
|
rtems_iterate_over_all_threads(CPU_usage_Per_thread_handler);
|
|
}
|