tracetool/simple: add Rust support
Signed-off-by: Tanish Desai <tanishdesai37@gmail.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-ID: <20250929154938.594389-13-pbonzini@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
357f926979
commit
42f73f264a
3 changed files with 49 additions and 0 deletions
|
|
@ -98,3 +98,10 @@ def generate_c(event, group):
|
|||
out(' trace_record_finish(&rec);',
|
||||
'}',
|
||||
'')
|
||||
|
||||
def generate_rs(event, group):
|
||||
out(' extern "C" { fn _simple_%(api)s(%(rust_args)s); }',
|
||||
' unsafe { _simple_%(api)s(%(args)s); }',
|
||||
api=event.api(),
|
||||
rust_args=event.args.rust_decl_extern(),
|
||||
args=event.args.rust_call_extern())
|
||||
|
|
|
|||
40
tests/tracetool/simple.rs
Normal file
40
tests/tracetool/simple.rs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
// 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;
|
||||
}
|
||||
extern "C" {
|
||||
static mut _TRACE_TEST_BLAH_DSTATE: u16;
|
||||
static mut _TRACE_TEST_WIBBLE_DSTATE: u16;
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[allow(dead_code)]
|
||||
pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr)
|
||||
{
|
||||
if trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) {
|
||||
extern "C" { fn _simple_trace_test_blah(_context: *mut (), _filename: *const std::ffi::c_char); }
|
||||
unsafe { _simple_trace_test_blah(_context, _filename.as_ptr()); }
|
||||
}
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
#[allow(dead_code)]
|
||||
pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int)
|
||||
{
|
||||
if trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) {
|
||||
extern "C" { fn _simple_trace_test_wibble(_context: *mut (), _value: std::ffi::c_int); }
|
||||
unsafe { _simple_trace_test_wibble(_context, _value); }
|
||||
}
|
||||
}
|
||||
|
|
@ -14,6 +14,8 @@ def get_formats(backend):
|
|||
"c",
|
||||
"h",
|
||||
]
|
||||
if backend in {"simple"}:
|
||||
formats += ["rs"]
|
||||
if backend == "dtrace":
|
||||
formats += [
|
||||
"d",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue