forked from lttng/lttng-ust
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sample_component_provider.h
135 lines (127 loc) · 4.42 KB
/
sample_component_provider.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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
* Copyright (C) 2011-2012 Mathieu Desnoyers <[email protected]>
* Copyright (C) 2011-2012 Matthew Khouzam <[email protected]>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/*
* Sample lttng-ust tracepoint provider.
*/
/*
* First part: defines
* We undef a macro before defining it as it can be used in several files.
*/
/*
* Must be included before include tracepoint provider
* ex.: project_event
* ex.: project_component_event
*
* Optional company name goes here
* ex.: com_efficios_project_component_event
*
* In this example, "sample" is the project, and "component" is the
* component.
*/
#undef TRACEPOINT_PROVIDER
#define TRACEPOINT_PROVIDER sample_component
/*
* include file (this files's name)
*/
#undef TRACEPOINT_INCLUDE
#define TRACEPOINT_INCLUDE "./sample_component_provider.h"
/*
* Add this precompiler conditionals to ensure the tracepoint event generation
* can include this file more than once.
*/
#if !defined(_SAMPLE_COMPONENT_PROVIDER_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
#define _SAMPLE_COMPONENT_PROVIDER_H
/*
* Add this to allow programs to call "tracepoint(...):
*/
#include <lttng/tracepoint.h>
/*
* The following tracepoint event writes a message (c string) into the
* field message of the trace event message in the provider
* sample_component in other words:
*
* sample_component:message:message = text.
*/
TRACEPOINT_EVENT(
/*
* provider name, not a variable but a string starting with a letter
* and containing either letters, numbers or underscores.
* Needs to be the same as TRACEPOINT_PROVIDER
*/
sample_component,
/*
* tracepoint name, same format as sample provider. Does not need to be
* declared before. in this case the name is "message"
*/
message,
/*
* TP_ARGS macro contains the arguments passed for the tracepoint
* it is in the following format
* TP_ARGS( type1, name1, type2, name2, ... type10, name10)
* where there can be from zero to ten elements.
* typeN is the datatype, such as int, struct or double **.
* name is the variable name (in "int myInt" the name would be myint)
* TP_ARGS() is valid to mean no arguments
* TP_ARGS( void ) is valid too
*/
TP_ARGS(char *, text),
/*
* TP_FIELDS describes how to write the fields of the trace event.
* You can use the args here
*/
TP_FIELDS(
/*
* The ctf_string macro takes a c string and writes it into a field
* named "message"
*/
ctf_string(message, text)
)
)
/*
* Trace loglevel, shows the level of the trace event. It can be TRACE_EMERG,
* TRACE_ALERT, TRACE_CRIT, TRACE_ERR, TRACE_WARNING, TRACE_INFO or others.
* If this is not set, TRACE_DEFAULT is assumed.
* The first two arguments identify the tracepoint
* See details in <lttng/tracepoint.h> line 347
*/
TRACEPOINT_LOGLEVEL(
/*
* The provider name, must be the same as the provider name in the
* TRACEPOINT_EVENT and as TRACEPOINT_PROVIDER above.
*/
sample_component,
/*
* The tracepoint name, must be the same as the tracepoint name in the
* TRACEPOINT_EVENT
*/
message,
/*
* The tracepoint loglevel. Warning, some levels are abbreviated and
* others are not, please see <lttng/tracepoint.h>
*/
TRACE_WARNING)
#endif /* _SAMPLE_COMPONENT_PROVIDER_H */
/*
* Add this after defining the tracepoint events to expand the macros.
*/
#include <lttng/tracepoint-event.h>