# SPDX-License-Identifier: GPL-2.0-or-later """ trace-DIR.rs """ __author__ = "Tanish Desai " __copyright__ = "Copyright 2025, Tanish Desai " __license__ = "GPL version 2 or (at your option) any later version" __maintainer__ = "Stefan Hajnoczi" __email__ = "stefanha@redhat.com" from tracetool import out def generate(events, backend, group): out('// SPDX-License-Identifier: GPL-2.0-or-later', '// This file is @generated by tracetool, do not edit.', '', '#[allow(unused_imports)]', 'use std::ffi::c_char;', '#[allow(unused_imports)]', 'use util::bindings;', '', '#[inline(always)]', 'fn trace_event_state_is_enabled(dstate: u16) -> bool {', ' (unsafe { trace_events_enabled_count }) != 0 && dstate != 0', '}', '', 'extern "C" {', ' static mut trace_events_enabled_count: u32;', '}',) out('extern "C" {') for e in events: out(' static mut %s: u16;' % e.api(e.QEMU_DSTATE)) out('}') backend.generate_begin(events, group) for e in events: out('', '#[inline(always)]', '#[allow(dead_code)]', 'pub fn %(api)s(%(args)s)', '{', api=e.api(e.QEMU_TRACE), args=e.args.rust_decl()) if "disable" not in e.properties: backend.generate(e, group, check_trace_event_get_state=False) if backend.check_trace_event_get_state: event_id = 'TRACE_' + e.name.upper() out(' if trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) {', event_id = event_id, api=e.api()) backend.generate(e, group, check_trace_event_get_state=True) out(' }') out('}') backend.generate_end(events, group)