#define TRACE__CONTROL_H
#include "qemu-common.h"
-#include "trace/generated-events.h"
+#include "event-internal.h"
typedef struct TraceEventIter {
size_t event;
+ size_t group;
const char *pattern;
} TraceEventIter;
* trace_event_get_state:
* @id: Event identifier name.
*
- * Get the tracing state of an event (both static and dynamic).
+ * Get the tracing state of an event, both static and the QEMU dynamic state.
*
* If the event has the disabled property, the check will have no performance
* impact.
#define trace_event_get_state(id) \
((id ##_ENABLED) && trace_event_get_state_dynamic_by_id(id))
+/**
+ * trace_event_get_state_backends:
+ * @id: Event identifier name.
+ *
+ * Get the tracing state of an event, both static and dynamic state from all
+ * compiled-in backends.
+ *
+ * If the event has the disabled property, the check will have no performance
+ * impact.
+ *
+ * Returns: true if at least one backend has the event enabled and the event
+ * does not have the disabled property.
+ */
+#define trace_event_get_state_backends(id) \
+ ((id ##_ENABLED) && id ##_BACKEND_DSTATE())
+
/**
* trace_event_get_vcpu_state:
* @vcpu: Target vCPU.
* Set the dynamic tracing state of an event for the given vCPU.
*
* Pre-condition: trace_event_get_vcpu_state_static(ev) == true
+ *
+ * Note: Changes for execution-time events with the 'tcg' property will not be
+ * propagated until the next TB is executed (iff executing in TCG mode).
*/
void trace_event_set_vcpu_state_dynamic(CPUState *vcpu,
TraceEvent *ev, bool state);
/**
* trace_init_backends:
* @file: Name of trace output file; may be NULL.
- * Corresponds to commandline option "-trace file=...".
+ * Corresponds to commandline option "--trace file=...".
*
* Initialize the tracing backend.
*
/**
* trace_init_file:
* @file: Name of trace output file; may be NULL.
- * Corresponds to commandline option "-trace file=...".
+ * Corresponds to commandline option "--trace file=...".
*
* Record the name of the output file for the tracing backend.
* Exits if no selected backend does not support specifying the
*/
void trace_init_vcpu(CPUState *vcpu);
+/**
+ * trace_fini_vcpu:
+ * @vcpu: Removed vCPU.
+ *
+ * Disable dynamic event state for a hot-unplugged vCPU.
+ */
+void trace_fini_vcpu(CPUState *vcpu);
+
/**
* trace_list_events:
*
*/
char *trace_opt_parse(const char *optarg);
+/**
+ * trace_get_vcpu_event_count:
+ *
+ * Return the number of known vcpu-specific events
+ */
+uint32_t trace_get_vcpu_event_count(void);
+
-#include "trace/control-internal.h"
+#include "control-internal.h"
#endif /* TRACE__CONTROL_H */