rust: add trace crate
The trace crate is a minimal container for dependencies of tracepoints (so that they do not have to be imported in all the crates that use tracepoints); it also contains a macro called "include_trace!" that is able to find the right include file from the trace/ directory. [Write commit message, add #[allow()]. - Paolo] 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-10-pbonzini@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
e2e182bef7
commit
54140102d2
7 changed files with 83 additions and 2 deletions
35
rust/trace/src/lib.rs
Normal file
35
rust/trace/src/lib.rs
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
//! This crate provides macros that aid in using QEMU's tracepoint
|
||||
//! functionality.
|
||||
|
||||
#[macro_export]
|
||||
/// Define the trace-points from the named directory (which should have slashes
|
||||
/// replaced by underscore characters) as functions in a module called `trace`.
|
||||
///
|
||||
/// ```ignore
|
||||
/// ::trace::include_trace!("hw_char");
|
||||
/// // ...
|
||||
/// trace::trace_pl011_read_fifo_rx_full();
|
||||
/// ```
|
||||
macro_rules! include_trace {
|
||||
($name:literal) => {
|
||||
#[allow(
|
||||
clippy::ptr_as_ptr,
|
||||
clippy::cast_lossless,
|
||||
clippy::used_underscore_binding
|
||||
)]
|
||||
mod trace {
|
||||
#[cfg(not(MESON))]
|
||||
include!(concat!(
|
||||
env!("MESON_BUILD_ROOT"),
|
||||
"/trace/trace-",
|
||||
$name,
|
||||
".rs"
|
||||
));
|
||||
|
||||
#[cfg(MESON)]
|
||||
include!(concat!("@MESON_BUILD_ROOT@/trace/trace-", $name, ".rs"));
|
||||
}
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue