RTEMS  5.1
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
31 extern "C" {
32 #endif /* __cplusplus */
33 
67 typedef enum {
74 
82 
86 typedef struct {
92 
103 typedef struct {
108 
112  uint32_t processor_index;
113 
118 
126 
137 
151 
163 
170  uint64_t interrupt_count;
171 
182 
186 #define RTEMS_PROFILING_SMP_LOCK_CONTENTION_COUNTS 4
187 
206 typedef struct {
211 
215  const char *name;
216 
221 
226 
232  uint64_t usage_count;
233 
244 
254 
265  uint64_t contention_counts[RTEMS_PROFILING_SMP_LOCK_CONTENTION_COUNTS];
267 
271 typedef union {
276 
281 
287 
296 typedef void (*rtems_profiling_visitor)(
297  void *arg,
298  const rtems_profiling_data *data
299 );
300 
308  rtems_profiling_visitor visitor,
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 */
uint32_t processor_index
The processor index of this profiling data.
Definition: profiling.h:112
rtems_profiling_header header
The profiling data header.
Definition: profiling.h:210
uint32_t max_interrupt_time
The maximum time spent to process a single sequence of nested interrupts in nanoseconds.
Definition: profiling.h:162
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
uint32_t max_acquire_time
The maximum lock acquire time in nanoseconds.
Definition: profiling.h:220
SMP lock profiling data.
Definition: profiling.h:206
Type of per-CPU profiling data.
Definition: profiling.h:73
rtems_profiling_smp_lock smp_lock
SMP lock profiling data if indicated by the header.
Definition: profiling.h:285
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
The profiling data header.
Definition: profiling.h:86
uint32_t max_interrupt_delay
The maximum interrupt delay in nanoseconds if supported by the hardware.
Definition: profiling.h:150
Definition: printer.h:55
uint64_t total_section_time
Total lock section time in nanoseconds.
Definition: profiling.h:253
uint32_t max_thread_dispatch_disabled_time
The maximum time of disabled thread dispatching in nanoseconds.
Definition: profiling.h:117
const char * name
The lock name.
Definition: profiling.h:215
Collection of profiling data.
Definition: profiling.h:271
#define RTEMS_PROFILING_SMP_LOCK_CONTENTION_COUNTS
Count of lock contention counters for SMP lock profiling.
Definition: profiling.h:186
rtems_profiling_header header
Header to specify the actual profiling data.
Definition: profiling.h:275
uint64_t total_interrupt_time
Total time of interrupt processing in nanoseconds.
Definition: profiling.h:180
void rtems_profiling_iterate(rtems_profiling_visitor visitor, void *visitor_arg)
Iterates through all profiling data of the system.
Definition: profilingiterate.c:141
void(* rtems_profiling_visitor)(void *arg, const rtems_profiling_data *data)
Visitor function for the profiling iteration.
Definition: profiling.h:296
rtems_profiling_header header
The profiling data header.
Definition: profiling.h:107
Per-CPU profiling data.
Definition: profiling.h:103
uint64_t total_acquire_time
Total lock acquire time in nanoseconds.
Definition: profiling.h:243
rtems_profiling_type type
The profiling data type.
Definition: profiling.h:90
uint64_t total_thread_dispatch_disabled_time
Total time of disabled thread dispatching in nanoseconds.
Definition: profiling.h:136
uint64_t interrupt_count
Count of times when the interrupt nest level changes from zero to one.
Definition: profiling.h:170
rtems_profiling_per_cpu per_cpu
Per-CPU profiling data if indicated by the header.
Definition: profiling.h:280
uint64_t usage_count
The count of lock uses.
Definition: profiling.h:232
Type of SMP lock profiling data.
Definition: profiling.h:80
uint32_t max_section_time
The maximum lock section time in nanoseconds.
Definition: profiling.h:225
rtems_profiling_type
Type of profiling data.
Definition: profiling.h:67