| // SPDX-License-Identifier: GPL-2.0-or-later | |
| //! This crate provides macros that aid in using QEMU's tracepoint | |
| //! functionality. | |
| #[cfg(not(windows))] | |
| #[doc(hidden)] | |
| /// Re-exported item to avoid adding libc as a dependency everywhere. | |
| pub use libc::{syslog, LOG_INFO}; | |
| #[doc(hidden)] | |
| /// Re-exported item to avoid adding probe as a dependency everywhere. | |
| pub use probe::probe; | |
| #[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::nonminimal_bool, | |
| 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")); | |
| } | |
| }; | |
| } |