RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
profiling.h
Go to the documentation of this file.
1
9/*
10 * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
11 *
12 * embedded brains GmbH
13 * Dornierstr. 4
14 * 82178 Puchheim
15 * Germany
16 * <rtems@embedded-brains.de>
17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
20 * http://www.rtems.org/license/LICENSE.
21 */
22
23#ifndef _RTEMS_PROFILING_H
24#define _RTEMS_PROFILING_H
25
26#include <stdint.h>
27
28#include <rtems/print.h>
29
30#ifdef __cplusplus
31extern "C" {
32#endif /* __cplusplus */
33
67typedef enum {
74
82
86typedef struct {
92
103typedef struct {
108
113
118
126
137
151
163
171
182
186#define RTEMS_PROFILING_SMP_LOCK_CONTENTION_COUNTS 4
187
206typedef struct {
211
215 const char *name;
216
221
226
232 uint64_t usage_count;
233
244
254
267
271typedef union {
276
281
287
297 void *arg,
298 const rtems_profiling_data *data
299);
300
309 void *visitor_arg
310);
311
323 const char *name,
324 const rtems_printer *printer,
325 uint32_t indentation_level,
326 const char *indentation
327);
328
331#ifdef __cplusplus
332}
333#endif /* __cplusplus */
334
335#endif /* _RTEMS_PROFILING_H */
void rtems_profiling_iterate(rtems_profiling_visitor visitor, void *visitor_arg)
Iterates through all profiling data of the system.
Definition: profilingiterate.c:141
rtems_profiling_type
Type of profiling data.
Definition: profiling.h:67
#define RTEMS_PROFILING_SMP_LOCK_CONTENTION_COUNTS
Count of lock contention counters for SMP lock profiling.
Definition: profiling.h:186
void(* rtems_profiling_visitor)(void *arg, const rtems_profiling_data *data)
Visitor function for the profiling iteration.
Definition: profiling.h:296
int rtems_profiling_report_xml(const char *name, const rtems_printer *printer, uint32_t indentation_level, const char *indentation)
Reports profiling data as XML.
Definition: profilingreportxml.c:272
@ RTEMS_PROFILING_PER_CPU
Type of per-CPU profiling data.
Definition: profiling.h:73
@ RTEMS_PROFILING_SMP_LOCK
Type of SMP lock profiling data.
Definition: profiling.h:80
User print interface to the bspIO print plug in.
Definition: printer.h:55
The profiling data header.
Definition: profiling.h:86
rtems_profiling_type type
The profiling data type.
Definition: profiling.h:90
Per-CPU profiling data.
Definition: profiling.h:103
uint32_t max_interrupt_time
The maximum time spent to process a single sequence of nested interrupts in nanoseconds.
Definition: profiling.h:162
uint64_t total_thread_dispatch_disabled_time
Total time of disabled thread dispatching in nanoseconds.
Definition: profiling.h:136
uint32_t max_thread_dispatch_disabled_time
The maximum time of disabled thread dispatching in nanoseconds.
Definition: profiling.h:117
rtems_profiling_header header
The profiling data header.
Definition: profiling.h:107
uint32_t max_interrupt_delay
The maximum interrupt delay in nanoseconds if supported by the hardware.
Definition: profiling.h:150
uint64_t total_interrupt_time
Total time of interrupt processing in nanoseconds.
Definition: profiling.h:180
uint32_t processor_index
The processor index of this profiling data.
Definition: profiling.h:112
uint64_t thread_dispatch_disabled_count
Count of times when the thread dispatch disable level changes from zero to one in thread context.
Definition: profiling.h:125
uint64_t interrupt_count
Count of times when the interrupt nest level changes from zero to one.
Definition: profiling.h:170
SMP lock profiling data.
Definition: profiling.h:206
uint64_t usage_count
The count of lock uses.
Definition: profiling.h:232
uint32_t max_acquire_time
The maximum lock acquire time in nanoseconds.
Definition: profiling.h:220
const char * name
The lock name.
Definition: profiling.h:215
rtems_profiling_header header
The profiling data header.
Definition: profiling.h:210
uint64_t total_section_time
Total lock section time in nanoseconds.
Definition: profiling.h:253
uint64_t total_acquire_time
Total lock acquire time in nanoseconds.
Definition: profiling.h:243
uint32_t max_section_time
The maximum lock section time in nanoseconds.
Definition: profiling.h:225
Collection of profiling data.
Definition: profiling.h:271
rtems_profiling_per_cpu per_cpu
Per-CPU profiling data if indicated by the header.
Definition: profiling.h:280
rtems_profiling_smp_lock smp_lock
SMP lock profiling data if indicated by the header.
Definition: profiling.h:285
rtems_profiling_header header
Header to specify the actual profiling data.
Definition: profiling.h:275