/* This file is autogenerated by tracetool, do not edit. */
/* SPDX-License-Identifier: GPL-2.0-or-later */

#include "qemu/osdep.h"
#include "qemu/module.h"
#include "trace-testsuite.h"

uint16_t _TRACE_TEST_BLAH_DSTATE;
uint16_t _TRACE_TEST_WIBBLE_DSTATE;
TraceEvent _TRACE_TEST_BLAH_EVENT = {
    .id = 0,
    .name = "test_blah",
    .sstate = TRACE_TEST_BLAH_ENABLED,
    .dstate = &_TRACE_TEST_BLAH_DSTATE
};
TraceEvent _TRACE_TEST_WIBBLE_EVENT = {
    .id = 0,
    .name = "test_wibble",
    .sstate = TRACE_TEST_WIBBLE_ENABLED,
    .dstate = &_TRACE_TEST_WIBBLE_DSTATE
};
TraceEvent *testsuite_trace_events[] = {
    &_TRACE_TEST_BLAH_EVENT,
    &_TRACE_TEST_WIBBLE_EVENT,
  NULL,
};

static void trace_testsuite_register_events(void)
{
    trace_event_register_group(testsuite_trace_events);
}
trace_init(trace_testsuite_register_events)
