1# SPDX-License-Identifier: GPL-2.0-or-later 2 3""" 4trace-DIR.rs 5""" 6 7__author__ = "Tanish Desai <tanishdesai37@gmail.com>" 8__copyright__ = "Copyright 2025, Tanish Desai <tanishdesai37@gmail.com>" 9__license__ = "GPL version 2 or (at your option) any later version" 10 11__maintainer__ = "Stefan Hajnoczi" 12__email__ = "stefanha@redhat.com" 13 14 15from tracetool import out 16 17 18def generate(events, backend, group): 19 out('// SPDX-License-Identifier: GPL-2.0-or-later', 20 '// This file is @generated by tracetool, do not edit.', 21 '', 22 '#[allow(unused_imports)]', 23 'use std::ffi::c_char;', 24 '#[allow(unused_imports)]', 25 'use util::bindings;', 26 '', 27 '#[inline(always)]', 28 'fn trace_event_state_is_enabled(dstate: u16) -> bool {', 29 ' (unsafe { trace_events_enabled_count }) != 0 && dstate != 0', 30 '}', 31 '', 32 'extern "C" {', 33 ' static mut trace_events_enabled_count: u32;', 34 '}',) 35 36 out('extern "C" {') 37 38 for e in events: 39 out(' static mut %s: u16;' % e.api(e.QEMU_DSTATE)) 40 out('}') 41 42 backend.generate_begin(events, group) 43 44 for e in events: 45 out('', 46 '#[inline(always)]', 47 '#[allow(dead_code)]', 48 'pub fn %(api)s(%(args)s)', 49 '{', 50 api=e.api(e.QEMU_TRACE), 51 args=e.args.rust_decl()) 52 53 if "disable" not in e.properties: 54 backend.generate(e, group, check_trace_event_get_state=False) 55 if backend.check_trace_event_get_state: 56 event_id = 'TRACE_' + e.name.upper() 57 out(' if trace_event_state_is_enabled(unsafe { _%(event_id)s_DSTATE}) {', 58 event_id = event_id, 59 api=e.api()) 60 backend.generate(e, group, check_trace_event_get_state=True) 61 out(' }') 62 out('}') 63 64 backend.generate_end(events, group) 65