]> git.ipfire.org Git - thirdparty/qemu.git/blame - trace/control-internal.h
trace: Identify events with the 'vcpu' property
[thirdparty/qemu.git] / trace / control-internal.h
CommitLineData
b1bae816
LV
1/*
2 * Interface for configuring and controlling the state of tracing events.
3 *
17f7ac75 4 * Copyright (C) 2011-2016 Lluís Vilanova <vilanova@ac.upc.edu>
b1bae816
LV
5 *
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
b1bae816 13extern TraceEvent trace_events[];
585ec727 14extern bool trace_events_dstate[];
43b48cfc 15extern int trace_events_enabled_count;
b1bae816
LV
16
17
84f3fe1b 18static inline TraceEventID trace_event_count(void)
b1bae816 19{
84f3fe1b 20 return TRACE_EVENT_COUNT;
b1bae816
LV
21}
22
84f3fe1b 23static inline TraceEvent *trace_event_id(TraceEventID id)
b1bae816 24{
84f3fe1b
PM
25 assert(id < trace_event_count());
26 return &trace_events[id];
b1bae816
LV
27}
28
29static inline bool trace_event_is_pattern(const char *str)
30{
31 assert(str != NULL);
32 return strchr(str, '*') != NULL;
33}
34
35static inline TraceEventID trace_event_get_id(TraceEvent *ev)
36{
37 assert(ev != NULL);
38 return ev->id;
39}
40
17f7ac75
LV
41static inline TraceEventVCPUID trace_event_get_vcpu_id(TraceEvent *ev)
42{
43 return ev->vcpu_id;
44}
45
46static inline bool trace_event_is_vcpu(TraceEvent *ev)
47{
48 return ev->vcpu_id != TRACE_VCPU_EVENT_COUNT;
49}
50
b1bae816
LV
51static inline const char * trace_event_get_name(TraceEvent *ev)
52{
53 assert(ev != NULL);
54 return ev->name;
55}
56
57static inline bool trace_event_get_state_static(TraceEvent *ev)
58{
59 assert(ev != NULL);
60 return ev->sstate;
61}
62
585ec727
PB
63static inline bool trace_event_get_state_dynamic_by_id(int id)
64{
65 return unlikely(trace_events_enabled_count) && trace_events_dstate[id];
66}
67
b1bae816
LV
68static inline bool trace_event_get_state_dynamic(TraceEvent *ev)
69{
585ec727
PB
70 int id = trace_event_get_id(ev);
71 return trace_event_get_state_dynamic_by_id(id);
b1bae816
LV
72}
73
74static inline void trace_event_set_state_dynamic(TraceEvent *ev, bool state)
75{
585ec727 76 int id = trace_event_get_id(ev);
b1bae816
LV
77 assert(ev != NULL);
78 assert(trace_event_get_state_static(ev));
585ec727
PB
79 trace_events_enabled_count += state - trace_events_dstate[id];
80 trace_events_dstate[id] = state;
b1bae816
LV
81}
82
175de524 83#endif /* TRACE__CONTROL_INTERNAL_H */