-
Notifications
You must be signed in to change notification settings - Fork 0
/
rtl-trace.h
100 lines (88 loc) · 2.39 KB
/
rtl-trace.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
* COPYRIGHT (c) 2012 Chris Johns <[email protected]>
*
* 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.
*/
/**
* @file
*
* @ingroup rtems_rtl
*
* @brief RTEMS Run-Time Linker ELF Trace Support.
*/
#if !defined (_RTEMS_RTL_TRACE_H_)
#define _RTEMS_RTL_TRACE_H_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <stdbool.h>
#include <stdint.h>
/**
* Set to 1 to build trace support in to the RTL code.
*/
#define RTEMS_RTL_TRACE 1
/**
* The type of the mask.
*/
typedef uint32_t rtems_rtl_trace_mask;
/**
* List of tracing bits for the various parts of the link editor.
*/
#define RTEMS_RTL_TRACE_ALL (0xffffffffUL)
#define RTEMS_RTL_TRACE_LOAD (1UL << 0)
#define RTEMS_RTL_TRACE_UNLOAD (1UL << 1)
#define RTEMS_RTL_TRACE_SECTION (1UL << 2)
#define RTEMS_RTL_TRACE_SYMBOL (1UL << 3)
#define RTEMS_RTL_TRACE_RELOC (1UL << 4)
#define RTEMS_RTL_TRACE_GLOBAL_SYM (1UL << 5)
#define RTEMS_RTL_TRACE_LOAD_SECT (1UL << 6)
#define RTEMS_RTL_TRACE_ALLOCATOR (1UL << 7)
#define RTEMS_RTL_TRACE_UNRESOLVED (1UL << 8)
#define RTEMS_RTL_TRACE_DETAIL (1UL << 9)
/**
* Call to check if this part is bring traced. If RTEMS_RTL_TRACE is defined to
* 0 the code is dead code elminiated when built with -Os, -O2, or higher.
*
* @param mask The part of the API to trace.
* @retval true Tracing is active for the mask.
* @retval false Do not trace.
*/
#if RTEMS_RTL_TRACE
bool rtems_rtl_trace (rtems_rtl_trace_mask mask);
#else
#define rtems_rtl_trace(_m) (0)
#endif
/**
* Set the mask.
*
* @param mask The mask bits to set.
* @return The previous mask.
*/
#if RTEMS_RTL_TRACE
rtems_rtl_trace_mask rtems_rtl_trace_set_mask (rtems_rtl_trace_mask mask);
#else
#define rtems_rtl_trace_set_mask(_m)
#endif
/**
* Clear the mask.
*
* @param mask The mask bits to clear.
* @return The previous mask.
*/
#if RTEMS_RTL_TRACE
rtems_rtl_trace_mask rtems_rtl_trace_clear_mask (rtems_rtl_trace_mask mask);
#else
#define rtems_rtl_trace_clear_mask(_m)
#endif
/**
* Add shell trace shell command.
*/
#if RTEMS_RTL_TRACE
int rtems_rtl_trace_shell_command (int argc, char *argv[]);
#endif
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif