blob: 271bddb19ea6b7e051fe9750aa034b65e6bc25d5 [file] [log] [blame]
Lluís Vilanovab1bae812013-03-05 14:47:38 +01001/*
2 * Interface for configuring and controlling the state of tracing events.
3 *
Lluís Vilanova5b808272014-05-27 15:02:14 +02004 * Copyright (C) 2011-2014 Lluís Vilanova <vilanova@ac.upc.edu>
Lluís Vilanovab1bae812013-03-05 14:47:38 +01005 *
6 * This work is licensed under the terms of the GNU GPL, version 2 or later.
7 * See the COPYING file in the top-level directory.
8 */
9
10#ifndef TRACE__CONTROL_INTERNAL_H
11#define TRACE__CONTROL_INTERNAL_H
12
13#include <string.h>
14
15
16extern TraceEvent trace_events[];
Paolo Bonzini43b48cf2015-10-28 07:06:26 +010017extern int trace_events_enabled_count;
Lluís Vilanovab1bae812013-03-05 14:47:38 +010018
19
Peter Maydell84f3fe12014-02-20 19:44:25 +000020static inline TraceEventID trace_event_count(void)
21{
22 return TRACE_EVENT_COUNT;
23}
24
Lluís Vilanovab1bae812013-03-05 14:47:38 +010025static inline TraceEvent *trace_event_id(TraceEventID id)
26{
27 assert(id < trace_event_count());
28 return &trace_events[id];
29}
30
Lluís Vilanovab1bae812013-03-05 14:47:38 +010031static inline bool trace_event_is_pattern(const char *str)
32{
33 assert(str != NULL);
34 return strchr(str, '*') != NULL;
35}
36
37static inline TraceEventID trace_event_get_id(TraceEvent *ev)
38{
39 assert(ev != NULL);
40 return ev->id;
41}
42
43static inline const char * trace_event_get_name(TraceEvent *ev)
44{
45 assert(ev != NULL);
46 return ev->name;
47}
48
49static inline bool trace_event_get_state_static(TraceEvent *ev)
50{
51 assert(ev != NULL);
52 return ev->sstate;
53}
54
55static inline bool trace_event_get_state_dynamic(TraceEvent *ev)
56{
57 assert(ev != NULL);
Paolo Bonzini43b48cf2015-10-28 07:06:26 +010058 return unlikely(trace_events_enabled_count) && ev->dstate;
Lluís Vilanovab1bae812013-03-05 14:47:38 +010059}
60
61static inline void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
62{
63 assert(ev != NULL);
64 assert(trace_event_get_state_static(ev));
Paolo Bonzini43b48cf2015-10-28 07:06:26 +010065 trace_events_enabled_count += state - ev->dstate;
Lluís Vilanova5b808272014-05-27 15:02:14 +020066 ev->dstate = state;
Lluís Vilanovab1bae812013-03-05 14:47:38 +010067}
68
69#endif /* TRACE__CONTROL_INTERNAL_H */