root / tracetool @ 7e24e92a
History | View | Annotate | Download (6.2 kB)
1 | 94a420b1 | Stefan Hajnoczi | #!/bin/sh |
---|---|---|---|
2 | 94a420b1 | Stefan Hajnoczi | # |
3 | 94a420b1 | Stefan Hajnoczi | # Code generator for trace events |
4 | 94a420b1 | Stefan Hajnoczi | # |
5 | 94a420b1 | Stefan Hajnoczi | # Copyright IBM, Corp. 2010 |
6 | 94a420b1 | Stefan Hajnoczi | # |
7 | 94a420b1 | Stefan Hajnoczi | # This work is licensed under the terms of the GNU GPL, version 2. See |
8 | 94a420b1 | Stefan Hajnoczi | # the COPYING file in the top-level directory. |
9 | 94a420b1 | Stefan Hajnoczi | |
10 | 94a420b1 | Stefan Hajnoczi | # Disable pathname expansion, makes processing text with '*' characters simpler |
11 | 94a420b1 | Stefan Hajnoczi | set -f |
12 | 94a420b1 | Stefan Hajnoczi | |
13 | 94a420b1 | Stefan Hajnoczi | usage() |
14 | 94a420b1 | Stefan Hajnoczi | { |
15 | 94a420b1 | Stefan Hajnoczi | cat >&2 <<EOF |
16 | 7e24e92a | Stefan Hajnoczi | usage: $0 [--nop | --simple | --ust] [-h | -c] |
17 | 94a420b1 | Stefan Hajnoczi | Generate tracing code for a file on stdin. |
18 | 94a420b1 | Stefan Hajnoczi | |
19 | 94a420b1 | Stefan Hajnoczi | Backends: |
20 | 26f7227b | Stefan Hajnoczi | --nop Tracing disabled |
21 | 26f7227b | Stefan Hajnoczi | --simple Simple built-in backend |
22 | 7e24e92a | Stefan Hajnoczi | --ust LTTng User Space Tracing backend |
23 | 94a420b1 | Stefan Hajnoczi | |
24 | 94a420b1 | Stefan Hajnoczi | Output formats: |
25 | 94a420b1 | Stefan Hajnoczi | -h Generate .h file |
26 | 94a420b1 | Stefan Hajnoczi | -c Generate .c file |
27 | 94a420b1 | Stefan Hajnoczi | EOF |
28 | 94a420b1 | Stefan Hajnoczi | exit 1 |
29 | 94a420b1 | Stefan Hajnoczi | } |
30 | 94a420b1 | Stefan Hajnoczi | |
31 | 94a420b1 | Stefan Hajnoczi | # Get the name of a trace event |
32 | 94a420b1 | Stefan Hajnoczi | get_name() |
33 | 94a420b1 | Stefan Hajnoczi | { |
34 | 94a420b1 | Stefan Hajnoczi | echo ${1%%\(*} |
35 | 94a420b1 | Stefan Hajnoczi | } |
36 | 94a420b1 | Stefan Hajnoczi | |
37 | 94a420b1 | Stefan Hajnoczi | # Get the argument list of a trace event, including types and names |
38 | 94a420b1 | Stefan Hajnoczi | get_args() |
39 | 94a420b1 | Stefan Hajnoczi | { |
40 | 94a420b1 | Stefan Hajnoczi | local args |
41 | 94a420b1 | Stefan Hajnoczi | args=${1#*\(} |
42 | 94a420b1 | Stefan Hajnoczi | args=${args%)*} |
43 | 94a420b1 | Stefan Hajnoczi | echo "$args" |
44 | 94a420b1 | Stefan Hajnoczi | } |
45 | 94a420b1 | Stefan Hajnoczi | |
46 | 94a420b1 | Stefan Hajnoczi | # Get the argument name list of a trace event |
47 | 94a420b1 | Stefan Hajnoczi | get_argnames() |
48 | 94a420b1 | Stefan Hajnoczi | { |
49 | 94a420b1 | Stefan Hajnoczi | local nfields field name |
50 | 94a420b1 | Stefan Hajnoczi | nfields=0 |
51 | 94a420b1 | Stefan Hajnoczi | for field in $(get_args "$1"); do |
52 | 94a420b1 | Stefan Hajnoczi | nfields=$((nfields + 1)) |
53 | 94a420b1 | Stefan Hajnoczi | |
54 | 94a420b1 | Stefan Hajnoczi | # Drop pointer star |
55 | 94a420b1 | Stefan Hajnoczi | field=${field#\*} |
56 | 94a420b1 | Stefan Hajnoczi | |
57 | 94a420b1 | Stefan Hajnoczi | # Only argument names have commas at the end |
58 | 94a420b1 | Stefan Hajnoczi | name=${field%,} |
59 | 94a420b1 | Stefan Hajnoczi | test "$field" = "$name" && continue |
60 | 94a420b1 | Stefan Hajnoczi | |
61 | 94a420b1 | Stefan Hajnoczi | printf "%s" "$name, " |
62 | 94a420b1 | Stefan Hajnoczi | done |
63 | 94a420b1 | Stefan Hajnoczi | |
64 | 94a420b1 | Stefan Hajnoczi | # Last argument name |
65 | 94a420b1 | Stefan Hajnoczi | if [ "$nfields" -gt 1 ] |
66 | 94a420b1 | Stefan Hajnoczi | then |
67 | 94a420b1 | Stefan Hajnoczi | printf "%s" "$name" |
68 | 94a420b1 | Stefan Hajnoczi | fi |
69 | 94a420b1 | Stefan Hajnoczi | } |
70 | 94a420b1 | Stefan Hajnoczi | |
71 | 26f7227b | Stefan Hajnoczi | # Get the number of arguments to a trace event |
72 | 26f7227b | Stefan Hajnoczi | get_argc() |
73 | 26f7227b | Stefan Hajnoczi | { |
74 | 26f7227b | Stefan Hajnoczi | local name argc |
75 | 26f7227b | Stefan Hajnoczi | argc=0 |
76 | 26f7227b | Stefan Hajnoczi | for name in $(get_argnames "$1"); do |
77 | 26f7227b | Stefan Hajnoczi | argc=$((argc + 1)) |
78 | 26f7227b | Stefan Hajnoczi | done |
79 | 26f7227b | Stefan Hajnoczi | echo $argc |
80 | 26f7227b | Stefan Hajnoczi | } |
81 | 26f7227b | Stefan Hajnoczi | |
82 | 94a420b1 | Stefan Hajnoczi | # Get the format string for a trace event |
83 | 94a420b1 | Stefan Hajnoczi | get_fmt() |
84 | 94a420b1 | Stefan Hajnoczi | { |
85 | 94a420b1 | Stefan Hajnoczi | local fmt |
86 | 94a420b1 | Stefan Hajnoczi | fmt=${1#*\"} |
87 | 94a420b1 | Stefan Hajnoczi | fmt=${fmt%\"*} |
88 | 94a420b1 | Stefan Hajnoczi | echo "$fmt" |
89 | 94a420b1 | Stefan Hajnoczi | } |
90 | 94a420b1 | Stefan Hajnoczi | |
91 | 1e2cf2bc | Stefan Hajnoczi | # Get the state of a trace event |
92 | 1e2cf2bc | Stefan Hajnoczi | get_state() |
93 | 1e2cf2bc | Stefan Hajnoczi | { |
94 | 1e2cf2bc | Stefan Hajnoczi | local str disable state |
95 | 1e2cf2bc | Stefan Hajnoczi | str=$(get_name "$1") |
96 | 1e2cf2bc | Stefan Hajnoczi | disable=${str##disable } |
97 | 1e2cf2bc | Stefan Hajnoczi | if [ "$disable" = "$str" ] ; then |
98 | 1e2cf2bc | Stefan Hajnoczi | state=1 |
99 | 1e2cf2bc | Stefan Hajnoczi | else |
100 | 1e2cf2bc | Stefan Hajnoczi | state=0 |
101 | 1e2cf2bc | Stefan Hajnoczi | fi |
102 | 1e2cf2bc | Stefan Hajnoczi | echo "$state" |
103 | 1e2cf2bc | Stefan Hajnoczi | } |
104 | 1e2cf2bc | Stefan Hajnoczi | |
105 | 94a420b1 | Stefan Hajnoczi | linetoh_begin_nop() |
106 | 94a420b1 | Stefan Hajnoczi | { |
107 | 94a420b1 | Stefan Hajnoczi | return |
108 | 94a420b1 | Stefan Hajnoczi | } |
109 | 94a420b1 | Stefan Hajnoczi | |
110 | 94a420b1 | Stefan Hajnoczi | linetoh_nop() |
111 | 94a420b1 | Stefan Hajnoczi | { |
112 | 94a420b1 | Stefan Hajnoczi | local name args |
113 | 94a420b1 | Stefan Hajnoczi | name=$(get_name "$1") |
114 | 94a420b1 | Stefan Hajnoczi | args=$(get_args "$1") |
115 | 94a420b1 | Stefan Hajnoczi | |
116 | 94a420b1 | Stefan Hajnoczi | # Define an empty function for the trace event |
117 | 94a420b1 | Stefan Hajnoczi | cat <<EOF |
118 | 94a420b1 | Stefan Hajnoczi | static inline void trace_$name($args) |
119 | 94a420b1 | Stefan Hajnoczi | { |
120 | 94a420b1 | Stefan Hajnoczi | } |
121 | 94a420b1 | Stefan Hajnoczi | EOF |
122 | 94a420b1 | Stefan Hajnoczi | } |
123 | 94a420b1 | Stefan Hajnoczi | |
124 | 94a420b1 | Stefan Hajnoczi | linetoh_end_nop() |
125 | 94a420b1 | Stefan Hajnoczi | { |
126 | 94a420b1 | Stefan Hajnoczi | return |
127 | 94a420b1 | Stefan Hajnoczi | } |
128 | 94a420b1 | Stefan Hajnoczi | |
129 | 94a420b1 | Stefan Hajnoczi | linetoc_begin_nop() |
130 | 94a420b1 | Stefan Hajnoczi | { |
131 | 94a420b1 | Stefan Hajnoczi | return |
132 | 94a420b1 | Stefan Hajnoczi | } |
133 | 94a420b1 | Stefan Hajnoczi | |
134 | 94a420b1 | Stefan Hajnoczi | linetoc_nop() |
135 | 94a420b1 | Stefan Hajnoczi | { |
136 | 94a420b1 | Stefan Hajnoczi | # No need for function definitions in nop backend |
137 | 94a420b1 | Stefan Hajnoczi | return |
138 | 94a420b1 | Stefan Hajnoczi | } |
139 | 94a420b1 | Stefan Hajnoczi | |
140 | 94a420b1 | Stefan Hajnoczi | linetoc_end_nop() |
141 | 94a420b1 | Stefan Hajnoczi | { |
142 | 94a420b1 | Stefan Hajnoczi | return |
143 | 94a420b1 | Stefan Hajnoczi | } |
144 | 94a420b1 | Stefan Hajnoczi | |
145 | 26f7227b | Stefan Hajnoczi | linetoh_begin_simple() |
146 | 26f7227b | Stefan Hajnoczi | { |
147 | 26f7227b | Stefan Hajnoczi | cat <<EOF |
148 | 26f7227b | Stefan Hajnoczi | #include "simpletrace.h" |
149 | 26f7227b | Stefan Hajnoczi | EOF |
150 | 26f7227b | Stefan Hajnoczi | |
151 | 26f7227b | Stefan Hajnoczi | simple_event_num=0 |
152 | 26f7227b | Stefan Hajnoczi | } |
153 | 26f7227b | Stefan Hajnoczi | |
154 | 26f7227b | Stefan Hajnoczi | cast_args_to_uint64_t() |
155 | 26f7227b | Stefan Hajnoczi | { |
156 | 26f7227b | Stefan Hajnoczi | local arg |
157 | 26f7227b | Stefan Hajnoczi | for arg in $(get_argnames "$1"); do |
158 | 26f7227b | Stefan Hajnoczi | printf "%s" "(uint64_t)(uintptr_t)$arg" |
159 | 26f7227b | Stefan Hajnoczi | done |
160 | 26f7227b | Stefan Hajnoczi | } |
161 | 26f7227b | Stefan Hajnoczi | |
162 | 26f7227b | Stefan Hajnoczi | linetoh_simple() |
163 | 26f7227b | Stefan Hajnoczi | { |
164 | 1e2cf2bc | Stefan Hajnoczi | local name args argc trace_args state |
165 | 26f7227b | Stefan Hajnoczi | name=$(get_name "$1") |
166 | 26f7227b | Stefan Hajnoczi | args=$(get_args "$1") |
167 | 26f7227b | Stefan Hajnoczi | argc=$(get_argc "$1") |
168 | 1e2cf2bc | Stefan Hajnoczi | state=$(get_state "$1") |
169 | 1e2cf2bc | Stefan Hajnoczi | if [ "$state" = "0" ]; then |
170 | 1e2cf2bc | Stefan Hajnoczi | name=${name##disable } |
171 | 1e2cf2bc | Stefan Hajnoczi | fi |
172 | 26f7227b | Stefan Hajnoczi | |
173 | 26f7227b | Stefan Hajnoczi | trace_args="$simple_event_num" |
174 | 26f7227b | Stefan Hajnoczi | if [ "$argc" -gt 0 ] |
175 | 26f7227b | Stefan Hajnoczi | then |
176 | 26f7227b | Stefan Hajnoczi | trace_args="$trace_args, $(cast_args_to_uint64_t "$1")" |
177 | 26f7227b | Stefan Hajnoczi | fi |
178 | 26f7227b | Stefan Hajnoczi | |
179 | 26f7227b | Stefan Hajnoczi | cat <<EOF |
180 | 26f7227b | Stefan Hajnoczi | static inline void trace_$name($args) |
181 | 26f7227b | Stefan Hajnoczi | { |
182 | 26f7227b | Stefan Hajnoczi | trace$argc($trace_args); |
183 | 26f7227b | Stefan Hajnoczi | } |
184 | 26f7227b | Stefan Hajnoczi | EOF |
185 | 26f7227b | Stefan Hajnoczi | |
186 | 26f7227b | Stefan Hajnoczi | simple_event_num=$((simple_event_num + 1)) |
187 | 26f7227b | Stefan Hajnoczi | } |
188 | 26f7227b | Stefan Hajnoczi | |
189 | 26f7227b | Stefan Hajnoczi | linetoh_end_simple() |
190 | 26f7227b | Stefan Hajnoczi | { |
191 | 22890ab5 | Prerna Saxena | cat <<EOF |
192 | 22890ab5 | Prerna Saxena | #define NR_TRACE_EVENTS $simple_event_num |
193 | 22890ab5 | Prerna Saxena | extern TraceEvent trace_list[NR_TRACE_EVENTS]; |
194 | 22890ab5 | Prerna Saxena | EOF |
195 | 26f7227b | Stefan Hajnoczi | } |
196 | 26f7227b | Stefan Hajnoczi | |
197 | 26f7227b | Stefan Hajnoczi | linetoc_begin_simple() |
198 | 26f7227b | Stefan Hajnoczi | { |
199 | 22890ab5 | Prerna Saxena | cat <<EOF |
200 | 22890ab5 | Prerna Saxena | #include "trace.h" |
201 | 22890ab5 | Prerna Saxena | |
202 | 22890ab5 | Prerna Saxena | TraceEvent trace_list[] = { |
203 | 22890ab5 | Prerna Saxena | EOF |
204 | 22890ab5 | Prerna Saxena | simple_event_num=0 |
205 | 22890ab5 | Prerna Saxena | |
206 | 26f7227b | Stefan Hajnoczi | } |
207 | 26f7227b | Stefan Hajnoczi | |
208 | 26f7227b | Stefan Hajnoczi | linetoc_simple() |
209 | 26f7227b | Stefan Hajnoczi | { |
210 | 1e2cf2bc | Stefan Hajnoczi | local name state |
211 | 22890ab5 | Prerna Saxena | name=$(get_name "$1") |
212 | 1e2cf2bc | Stefan Hajnoczi | state=$(get_state "$1") |
213 | 1e2cf2bc | Stefan Hajnoczi | if [ "$state" = "0" ] ; then |
214 | 1e2cf2bc | Stefan Hajnoczi | name=${name##disable } |
215 | 1e2cf2bc | Stefan Hajnoczi | fi |
216 | 22890ab5 | Prerna Saxena | cat <<EOF |
217 | 1e2cf2bc | Stefan Hajnoczi | {.tp_name = "$name", .state=$state}, |
218 | 22890ab5 | Prerna Saxena | EOF |
219 | 22890ab5 | Prerna Saxena | simple_event_num=$((simple_event_num + 1)) |
220 | 26f7227b | Stefan Hajnoczi | } |
221 | 26f7227b | Stefan Hajnoczi | |
222 | 26f7227b | Stefan Hajnoczi | linetoc_end_simple() |
223 | 26f7227b | Stefan Hajnoczi | { |
224 | 22890ab5 | Prerna Saxena | cat <<EOF |
225 | 22890ab5 | Prerna Saxena | }; |
226 | 22890ab5 | Prerna Saxena | EOF |
227 | 26f7227b | Stefan Hajnoczi | } |
228 | 26f7227b | Stefan Hajnoczi | |
229 | 7e24e92a | Stefan Hajnoczi | # Clean up after UST headers which pollute the namespace |
230 | 7e24e92a | Stefan Hajnoczi | ust_clean_namespace() { |
231 | 7e24e92a | Stefan Hajnoczi | cat <<EOF |
232 | 7e24e92a | Stefan Hajnoczi | #undef mutex_lock |
233 | 7e24e92a | Stefan Hajnoczi | #undef mutex_unlock |
234 | 7e24e92a | Stefan Hajnoczi | #undef inline |
235 | 7e24e92a | Stefan Hajnoczi | #undef wmb |
236 | 7e24e92a | Stefan Hajnoczi | EOF |
237 | 7e24e92a | Stefan Hajnoczi | } |
238 | 7e24e92a | Stefan Hajnoczi | |
239 | 7e24e92a | Stefan Hajnoczi | linetoh_begin_ust() |
240 | 7e24e92a | Stefan Hajnoczi | { |
241 | 7e24e92a | Stefan Hajnoczi | echo "#include <ust/tracepoint.h>" |
242 | 7e24e92a | Stefan Hajnoczi | ust_clean_namespace |
243 | 7e24e92a | Stefan Hajnoczi | } |
244 | 7e24e92a | Stefan Hajnoczi | |
245 | 7e24e92a | Stefan Hajnoczi | linetoh_ust() |
246 | 7e24e92a | Stefan Hajnoczi | { |
247 | 7e24e92a | Stefan Hajnoczi | local name args argnames |
248 | 7e24e92a | Stefan Hajnoczi | name=$(get_name "$1") |
249 | 7e24e92a | Stefan Hajnoczi | args=$(get_args "$1") |
250 | 7e24e92a | Stefan Hajnoczi | argnames=$(get_argnames "$1") |
251 | 7e24e92a | Stefan Hajnoczi | |
252 | 7e24e92a | Stefan Hajnoczi | cat <<EOF |
253 | 7e24e92a | Stefan Hajnoczi | DECLARE_TRACE(ust_$name, TPPROTO($args), TPARGS($argnames)); |
254 | 7e24e92a | Stefan Hajnoczi | #define trace_$name trace_ust_$name |
255 | 7e24e92a | Stefan Hajnoczi | EOF |
256 | 7e24e92a | Stefan Hajnoczi | } |
257 | 7e24e92a | Stefan Hajnoczi | |
258 | 7e24e92a | Stefan Hajnoczi | linetoh_end_ust() |
259 | 7e24e92a | Stefan Hajnoczi | { |
260 | 7e24e92a | Stefan Hajnoczi | return |
261 | 7e24e92a | Stefan Hajnoczi | } |
262 | 7e24e92a | Stefan Hajnoczi | |
263 | 7e24e92a | Stefan Hajnoczi | linetoc_begin_ust() |
264 | 7e24e92a | Stefan Hajnoczi | { |
265 | 7e24e92a | Stefan Hajnoczi | cat <<EOF |
266 | 7e24e92a | Stefan Hajnoczi | #include <ust/marker.h> |
267 | 7e24e92a | Stefan Hajnoczi | $(ust_clean_namespace) |
268 | 7e24e92a | Stefan Hajnoczi | #include "trace.h" |
269 | 7e24e92a | Stefan Hajnoczi | EOF |
270 | 7e24e92a | Stefan Hajnoczi | } |
271 | 7e24e92a | Stefan Hajnoczi | |
272 | 7e24e92a | Stefan Hajnoczi | linetoc_ust() |
273 | 7e24e92a | Stefan Hajnoczi | { |
274 | 7e24e92a | Stefan Hajnoczi | local name args argnames fmt |
275 | 7e24e92a | Stefan Hajnoczi | name=$(get_name "$1") |
276 | 7e24e92a | Stefan Hajnoczi | args=$(get_args "$1") |
277 | 7e24e92a | Stefan Hajnoczi | argnames=$(get_argnames "$1") |
278 | 7e24e92a | Stefan Hajnoczi | fmt=$(get_fmt "$1") |
279 | 7e24e92a | Stefan Hajnoczi | |
280 | 7e24e92a | Stefan Hajnoczi | cat <<EOF |
281 | 7e24e92a | Stefan Hajnoczi | DEFINE_TRACE(ust_$name); |
282 | 7e24e92a | Stefan Hajnoczi | |
283 | 7e24e92a | Stefan Hajnoczi | static void ust_${name}_probe($args) |
284 | 7e24e92a | Stefan Hajnoczi | { |
285 | 7e24e92a | Stefan Hajnoczi | trace_mark(ust, $name, "$fmt", $argnames); |
286 | 7e24e92a | Stefan Hajnoczi | } |
287 | 7e24e92a | Stefan Hajnoczi | EOF |
288 | 7e24e92a | Stefan Hajnoczi | |
289 | 7e24e92a | Stefan Hajnoczi | # Collect names for later |
290 | 7e24e92a | Stefan Hajnoczi | names="$names $name" |
291 | 7e24e92a | Stefan Hajnoczi | } |
292 | 7e24e92a | Stefan Hajnoczi | |
293 | 7e24e92a | Stefan Hajnoczi | linetoc_end_ust() |
294 | 7e24e92a | Stefan Hajnoczi | { |
295 | 7e24e92a | Stefan Hajnoczi | cat <<EOF |
296 | 7e24e92a | Stefan Hajnoczi | static void __attribute__((constructor)) trace_init(void) |
297 | 7e24e92a | Stefan Hajnoczi | { |
298 | 7e24e92a | Stefan Hajnoczi | EOF |
299 | 7e24e92a | Stefan Hajnoczi | |
300 | 7e24e92a | Stefan Hajnoczi | for name in $names; do |
301 | 7e24e92a | Stefan Hajnoczi | cat <<EOF |
302 | 7e24e92a | Stefan Hajnoczi | register_trace_ust_$name(ust_${name}_probe); |
303 | 7e24e92a | Stefan Hajnoczi | EOF |
304 | 7e24e92a | Stefan Hajnoczi | done |
305 | 7e24e92a | Stefan Hajnoczi | |
306 | 7e24e92a | Stefan Hajnoczi | echo "}" |
307 | 7e24e92a | Stefan Hajnoczi | } |
308 | 7e24e92a | Stefan Hajnoczi | |
309 | 94a420b1 | Stefan Hajnoczi | # Process stdin by calling begin, line, and end functions for the backend |
310 | 94a420b1 | Stefan Hajnoczi | convert() |
311 | 94a420b1 | Stefan Hajnoczi | { |
312 | 1e2cf2bc | Stefan Hajnoczi | local begin process_line end str disable |
313 | 94a420b1 | Stefan Hajnoczi | begin="lineto$1_begin_$backend" |
314 | 94a420b1 | Stefan Hajnoczi | process_line="lineto$1_$backend" |
315 | 94a420b1 | Stefan Hajnoczi | end="lineto$1_end_$backend" |
316 | 94a420b1 | Stefan Hajnoczi | |
317 | 94a420b1 | Stefan Hajnoczi | "$begin" |
318 | 94a420b1 | Stefan Hajnoczi | |
319 | 94a420b1 | Stefan Hajnoczi | while read -r str; do |
320 | 94a420b1 | Stefan Hajnoczi | # Skip comments and empty lines |
321 | 94a420b1 | Stefan Hajnoczi | str=${str%%#*} |
322 | 94a420b1 | Stefan Hajnoczi | test -z "$str" && continue |
323 | 94a420b1 | Stefan Hajnoczi | |
324 | 1e2cf2bc | Stefan Hajnoczi | # Process the line. The nop backend handles disabled lines. |
325 | 1e2cf2bc | Stefan Hajnoczi | disable=${str%%disable *} |
326 | 94a420b1 | Stefan Hajnoczi | echo |
327 | 1e2cf2bc | Stefan Hajnoczi | if test -z "$disable"; then |
328 | 1e2cf2bc | Stefan Hajnoczi | # Pass the disabled state as an arg to lineto$1_simple(). |
329 | 1e2cf2bc | Stefan Hajnoczi | # For all other cases, call lineto$1_nop() |
330 | 1e2cf2bc | Stefan Hajnoczi | if [ $backend = "simple" ]; then |
331 | 1e2cf2bc | Stefan Hajnoczi | "$process_line" "$str" |
332 | 1e2cf2bc | Stefan Hajnoczi | else |
333 | 1e2cf2bc | Stefan Hajnoczi | "lineto$1_nop" "${str##disable }" |
334 | 1e2cf2bc | Stefan Hajnoczi | fi |
335 | 1e2cf2bc | Stefan Hajnoczi | else |
336 | 1e2cf2bc | Stefan Hajnoczi | "$process_line" "$str" |
337 | 1e2cf2bc | Stefan Hajnoczi | fi |
338 | 94a420b1 | Stefan Hajnoczi | done |
339 | 94a420b1 | Stefan Hajnoczi | |
340 | 94a420b1 | Stefan Hajnoczi | echo |
341 | 94a420b1 | Stefan Hajnoczi | "$end" |
342 | 94a420b1 | Stefan Hajnoczi | } |
343 | 94a420b1 | Stefan Hajnoczi | |
344 | 94a420b1 | Stefan Hajnoczi | tracetoh() |
345 | 94a420b1 | Stefan Hajnoczi | { |
346 | 94a420b1 | Stefan Hajnoczi | cat <<EOF |
347 | 94a420b1 | Stefan Hajnoczi | #ifndef TRACE_H |
348 | 94a420b1 | Stefan Hajnoczi | #define TRACE_H |
349 | 94a420b1 | Stefan Hajnoczi | |
350 | 94a420b1 | Stefan Hajnoczi | /* This file is autogenerated by tracetool, do not edit. */ |
351 | 94a420b1 | Stefan Hajnoczi | |
352 | 94a420b1 | Stefan Hajnoczi | #include "qemu-common.h" |
353 | 94a420b1 | Stefan Hajnoczi | EOF |
354 | 94a420b1 | Stefan Hajnoczi | convert h |
355 | 94a420b1 | Stefan Hajnoczi | echo "#endif /* TRACE_H */" |
356 | 94a420b1 | Stefan Hajnoczi | } |
357 | 94a420b1 | Stefan Hajnoczi | |
358 | 94a420b1 | Stefan Hajnoczi | tracetoc() |
359 | 94a420b1 | Stefan Hajnoczi | { |
360 | 94a420b1 | Stefan Hajnoczi | echo "/* This file is autogenerated by tracetool, do not edit. */" |
361 | 94a420b1 | Stefan Hajnoczi | convert c |
362 | 94a420b1 | Stefan Hajnoczi | } |
363 | 94a420b1 | Stefan Hajnoczi | |
364 | 94a420b1 | Stefan Hajnoczi | # Choose backend |
365 | 94a420b1 | Stefan Hajnoczi | case "$1" in |
366 | 7e24e92a | Stefan Hajnoczi | "--nop" | "--simple" | "--ust") backend="${1#--}" ;; |
367 | 94a420b1 | Stefan Hajnoczi | *) usage ;; |
368 | 94a420b1 | Stefan Hajnoczi | esac |
369 | 94a420b1 | Stefan Hajnoczi | shift |
370 | 94a420b1 | Stefan Hajnoczi | |
371 | 94a420b1 | Stefan Hajnoczi | case "$1" in |
372 | 94a420b1 | Stefan Hajnoczi | "-h") tracetoh ;; |
373 | 94a420b1 | Stefan Hajnoczi | "-c") tracetoc ;; |
374 | 94a420b1 | Stefan Hajnoczi | "--check-backend") exit 0 ;; # used by ./configure to test for backend |
375 | 94a420b1 | Stefan Hajnoczi | *) usage ;; |
376 | 94a420b1 | Stefan Hajnoczi | esac |
377 | 94a420b1 | Stefan Hajnoczi | |
378 | 94a420b1 | Stefan Hajnoczi | exit 0 |