~lttng/lttng-ust/lttng-ust

« back to all changes in this revision

Viewing changes to tests/easy_ust/sample_component_provider.h

  • Committer: Mathieu Desnoyers
  • Date: 2012-02-16 17:20:36 UTC
  • Revision ID: git-v1:7ccf75d384dd852f7aa51b44663546dd3c6baa83
Install easy-ust and gen-tp examples in doc/

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2011-2012  Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3
 
 * Copyright (C) 2011-2012  Matthew Khouzam <matthew.khouzam@ericsson.com> 
4
 
 *
5
 
 * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
6
 
 * OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
7
 
 *
8
 
 * Permission is hereby granted to use or copy this program for any
9
 
 * purpose,  provided the above notices are retained on all copies.
10
 
 * Permission to modify the code and to distribute modified code is
11
 
 * granted, provided the above notices are retained, and a notice that
12
 
 * the code was modified is included with the above copyright notice.
13
 
 */
14
 
 
15
 
/*
16
 
 * Sample lttng-ust tracepoint provider. 
17
 
 */
18
 
 
19
 
/*
20
 
 * First part: defines
21
 
 * We undef a macro before defining it as it can be used in several files.
22
 
 */
23
 
 
24
 
/*  
25
 
 * Must be included before include tracepoint provider 
26
 
 * ex.: project_event
27
 
 * ex.: project_component_event
28
 
 *
29
 
 * Optional company name goes here
30
 
 * ex.: com_efficios_project_component_event
31
 
 *
32
 
 * In this example, "sample" is the project, and "component" is the
33
 
 * component.
34
 
 */
35
 
#undef TRACEPOINT_PROVIDER
36
 
#define TRACEPOINT_PROVIDER sample_component
37
 
 
38
 
/*
39
 
 * include file (this files's name)
40
 
 */
41
 
#undef TRACEPOINT_INCLUDE_FILE
42
 
#define TRACEPOINT_INCLUDE_FILE ./sample_component_provider.h
43
 
 
44
 
/*
45
 
 * Add this macro and its matching element to make sure the program
46
 
 * works in c++. 
47
 
 */
48
 
#ifdef __cplusplus
49
 
#extern "C"{
50
 
#endif /*__cplusplus */
51
 
 
52
 
/*
53
 
 * Add this precompiler conditionals to ensure the tracepoint event generation
54
 
 * can include this file more than once.
55
 
 */
56
 
#if !defined(_SAMPLE_COMPONENT_PROVIDER_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
57
 
#define _SAMPLE_COMPONENT_PROVIDER_H
58
 
/*
59
 
 * Add this to allow programs to call "tracepoint(...):
60
 
 */ 
61
 
#include <lttng/tracepoint.h> 
62
 
 
63
 
/*
64
 
 * The following tracepoint event writes a message (c string) into the
65
 
 * field message of the trace event message in the provider
66
 
 * sample_component in other words:
67
 
 *
68
 
 *    sample_component:message:message = text. 
69
 
 */
70
 
TRACEPOINT_EVENT(
71
 
        /*
72
 
         * provider name, not a variable but a string starting with a letter
73
 
         * and containing either letters, numbers or underscores. 
74
 
         * Needs to be the same as TRACEPOINT_PROVIDER
75
 
         */
76
 
        sample_component,
77
 
        /*
78
 
         * tracepoint name, same format as sample provider. Does not need to be 
79
 
         * declared before. in this case the name is "message" 
80
 
         */
81
 
        message,
82
 
        /*
83
 
         * TP_ARGS macro contains the arguments passed for the tracepoint 
84
 
         * it is in the following format
85
 
         *              TP_ARGS( type1, name1, type2, name2, ... type10, name10)
86
 
         * where there can be from zero to ten elements. 
87
 
         * typeN is the datatype, such as int, struct or double **. 
88
 
         * name is the variable name (in "int myInt" the name would be myint) 
89
 
         *              TP_ARGS() is valid to mean no arguments
90
 
         *              TP_ARGS( void ) is valid too
91
 
         */ 
92
 
        TP_ARGS(char *, text),
93
 
        /*
94
 
         * TP_FIELDS describes how to write the fields of the trace event. 
95
 
         * You can use the args here
96
 
         */
97
 
        TP_FIELDS(
98
 
        /*
99
 
         * The ctf_string macro takes a c string and writes it into a field
100
 
         * named "message" 
101
 
         */ 
102
 
                ctf_string(message, text)
103
 
        )
104
 
)
105
 
/*
106
 
 * Trace loglevel, shows the level of the trace event. It can be TRACE_EMERG, 
107
 
 * TRACE_ALERT, TRACE_CRIT, TRACE_ERR, TRACE_WARNING, TRACE_INFO or others. 
108
 
 * If this is not set, TRACE_DEFAULT is assumed.
109
 
 * The first two arguments identify the tracepoint
110
 
 * See details in <lttng/tracepoint.h> line 347
111
 
 */
112
 
TRACEPOINT_LOGLEVEL(
113
 
       /*
114
 
        * The provider name, must be the same as the provider name in the 
115
 
        * TRACEPOINT_EVENT and as TRACEPOINT_PROVIDER above.
116
 
        */
117
 
        sample_component, 
118
 
       /* 
119
 
        * The tracepoint name, must be the same as the tracepoint name in the 
120
 
        * TRACEPOINT_EVENT
121
 
        */
122
 
        message, 
123
 
       /*
124
 
        * The tracepoint loglevel. Warning, some levels are abbreviated and
125
 
        * others are not, please see <lttng/tracepoint.h>
126
 
        */
127
 
        TRACE_WARNING)
128
 
 
129
 
#endif /* _SAMPLE_COMPONENT_PROVIDER_H */
130
 
 
131
 
/*
132
 
 * Add this after defining the tracepoint events to expand the macros. 
133
 
 */ 
134
 
#include <lttng/tracepoint-event.h>
135
 
 
136
 
/*
137
 
 * Add this macro and its matching element to make sure the program
138
 
 * works in c++. 
139
 
 */
140
 
#ifdef __cplusplus
141
 
}
142
 
#endif /*__cplusplus */