RTEMS CPU Kit with SuperCore  4.11.3
captureimpl.h
Go to the documentation of this file.
1 
10 /*
11  ------------------------------------------------------------------------
12 
13  Copyright Objective Design Systems Pty Ltd, 2002
14  All rights reserved Objective Design Systems Pty Ltd, 2002
15  Chris Johns (ccj@acm.org)
16 
17  COPYRIGHT (c) 1989-2014.
18  On-Line Applications Research Corporation (OAR).
19 
20  The license and distribution terms for this file may be
21  found in the file LICENSE in this distribution.
22 
23  This software with is provided ``as is'' and with NO WARRANTY.
24 
25  ------------------------------------------------------------------------
26 
27  RTEMS Performance Monitoring and Measurement Framework.
28  This is the Capture Engine component.
29 
30 */
31 
32 #ifndef __CAPTUREIMPL_H_
33 #define __CAPTUREIMPL_H_
34 
35 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
41 #include "capture.h"
42 
43 /*
44  * Global capture flags.
45  */
46 #define RTEMS_CAPTURE_INIT (1u << 0)
47 #define RTEMS_CAPTURE_ON (1U << 1)
48 #define RTEMS_CAPTURE_NO_MEMORY (1U << 2)
49 #define RTEMS_CAPTURE_TRIGGERED (1U << 3)
50 #define RTEMS_CAPTURE_GLOBAL_WATCH (1U << 4)
51 #define RTEMS_CAPTURE_ONLY_MONITOR (1U << 5)
52 
53 /*
54  * Per-CPU capture flags.
55  */
56 #define RTEMS_CAPTURE_OVERFLOW (1U << 0)
57 #define RTEMS_CAPTURE_READER_ACTIVE (1U << 1)
58 #define RTEMS_CAPTURE_READER_WAITING (1U << 2)
59 
69 void rtems_capture_set_extension_index(int index);
70 
80 
91 uint32_t rtems_capture_get_flags(void);
92 
100 void rtems_capture_set_flags(uint32_t mask);
101 
112 
122 
137  rtems_tcb* tt,
138  uint32_t events);
139 
156 static void *rtems_capture_append_to_record(void* rec,
157  void* data,
158  size_t size );
159 
173 bool rtems_capture_filter( rtems_tcb* task,
174  uint32_t events);
186 #define rtems_capture_begin_add_record( _task, _events, _size, _rec) \
187  do { \
188  rtems_interrupt_lock_context _lock_context; \
189  *_rec = rtems_capture_record_open( _task, _events, _size, &_lock_context );
190 
202 static inline void *rtems_capture_append_to_record(void* rec,
203  void* data,
204  size_t size )
205 {
206  uint8_t *ptr = rec;
207  memcpy( ptr, data, size );
208  return (ptr + size);
209 }
210 
218 #define rtems_capture_end_add_record( _rec ) \
219  rtems_capture_record_close( _rec, &_lock_context ); \
220  } while (0)
221 
234 
253  uint32_t events,
254  size_t size,
255  rtems_interrupt_lock_context* lock_context);
266 void rtems_capture_record_close( void *rec, rtems_interrupt_lock_context* lock_context);
267 
268 
279 void rtems_capture_print_trace_records ( int total, bool csv );
280 
288 void rtems_capture_print_timestamp (uint64_t uptime);
289 
301  uint32_t cpu,
303 );
304 
316  uint32_t cpu,
318  uint64_t diff
319 );
320 
326 void rtems_capture_print_watch_list( void );
327 
328 #ifdef __cplusplus
329 }
330 #endif
331 
333 #endif
void rtems_capture_get_time(rtems_capture_time_t *time)
Capture returns the current time.
Definition: capture.c:158
void rtems_capture_print_record_capture(uint32_t cpu, rtems_capture_record_t *rec, uint64_t diff)
Capture print capture record.
Definition: capture_support.c:105
uint32_t rtems_capture_get_flags(void)
Capture get flags.
Definition: capture.c:143
rtems_status_code rtems_capture_user_extension_close(void)
Capture user extension close.
Definition: capture_user_extension.c:125
Capture Engine Component of the RTEMS Measurement and Monitoring System.
void rtems_capture_print_trace_records(int total, bool csv)
Capture print trace records.
Definition: capture_support.c:138
void rtems_capture_set_flags(uint32_t mask)
Capture set flags.
Definition: capture.c:148
void rtems_capture_record_close(void *rec, rtems_interrupt_lock_context *lock_context)
Capture record close.
Definition: capture.c:488
rtems_status_code
Classic API Status.
Definition: status.h:46
uint64_t rtems_capture_time_t
A capture timestamp.
Definition: capture.h:61
void * rtems_capture_record_open(rtems_tcb *task, uint32_t events, size_t size, rtems_interrupt_lock_context *lock_context)
Capture record open.
Definition: capture.c:454
int rtems_capture_get_extension_index(void)
Capture get extension index.
Definition: capture.c:138
This structure defines the Thread Control Block (TCB).
Definition: thread.h:671
bool rtems_capture_trigger(rtems_tcb *ft, rtems_tcb *tt, uint32_t events)
Capture trigger.
Definition: capture.c:498
void rtems_capture_print_timestamp(uint64_t uptime)
Capture print timestamp.
Definition: capture_support.c:56
void rtems_capture_print_record_task(uint32_t cpu, rtems_capture_record_t *rec)
Capture print record task.
Definition: capture_support.c:76
void rtems_capture_print_watch_list(void)
Capture print watch list.
Definition: capture_support.c:243
bool rtems_capture_filter(rtems_tcb *task, uint32_t events)
Capture filter.
Definition: capture.c:420
Local ISR lock context for acquire and release pairs.
Definition: isrlock.h:65
rtems_status_code rtems_capture_user_extension_open(void)
Capture user extension open.
Definition: capture_user_extension.c:104
void rtems_capture_set_extension_index(int index)
Capture set extension index.
Definition: capture.c:133
Definition: capture.h:154