pub use fuchsia_trace::Scope as TraceScope;
#[doc(hidden)]
pub use fuchsia_trace as __fuchsia_trace;
use std::ffi::CStr;
pub const CATEGORY_STARNIX: &'static CStr = c"starnix";
pub const CATEGORY_STARNIX_MM: &'static CStr = c"starnix:mm";
pub const NAME_RUN_TASK: &'static CStr = c"RunTask";
pub const CATEGORY_ATRACE: &'static CStr = c"starnix:atrace";
pub const NAME_PERFETTO_BLOB: &'static CStr = c"starnix_perfetto";
pub const NAME_EXECUTE_SYSCALL: &'static CStr = c"ExecuteSyscall";
pub const NAME_CREATE_CONTAINER: &'static CStr = c"CreateContainer";
pub const NAME_START_KERNEL: &'static CStr = c"StartKernel";
pub const NAME_RESTRICTED_KICK: &'static CStr = c"RestrictedKick";
pub const NAME_HANDLE_EXCEPTION: &'static CStr = c"HandleException";
pub const NAME_READ_RESTRICTED_STATE: &'static CStr = c"ReadRestrictedState";
pub const NAME_WRITE_RESTRICTED_STATE: &'static CStr = c"WriteRestrictedState";
pub const NAME_CHECK_TASK_EXIT: &'static CStr = c"CheckTaskExit";
pub const ARG_NAME: &'static str = "name";
#[inline]
pub const fn regular_tracing_enabled() -> bool {
cfg!(feature = "tracing")
}
#[inline]
pub const fn firehose_tracing_enabled() -> bool {
cfg!(feature = "tracing_firehose")
}
#[macro_export]
macro_rules! trace_instant {
($category:expr, $name:expr, $scope:expr $(, $key:expr => $val:expr)*) => {
if $crate::regular_tracing_enabled() {
$crate::__fuchsia_trace::instant!($category, $name, $scope $(, $key => $val)*);
}
};
}
#[macro_export]
macro_rules! firehose_trace_instant {
($category:expr, $name:expr, $scope:expr $(, $key:expr => $val:expr)*) => {
if $crate::firehose_tracing_enabled() {
$crate::trace_instant!($category, $name, $scope $(, $key => $val)*);
}
}
}
#[macro_export]
macro_rules! trace_duration {
($category:expr, $name:expr $(, $key:expr => $val:expr)*) => {
let _args = if $crate::regular_tracing_enabled() {
Some([$($crate::__fuchsia_trace::ArgValue::of($key, $val)),*])
} else {
None
};
let _scope = if $crate::regular_tracing_enabled() {
Some($crate::__fuchsia_trace::duration(
$category,
$name,
_args.as_ref().unwrap()
))
} else {
None
};
}
}
#[macro_export]
macro_rules! firehose_trace_duration {
($category:expr, $name:expr $(, $key:expr => $val:expr)*) => {
if $crate::firehose_tracing_enabled() {
$crate::trace_duration!($category, $name $(, $key => $val)*);
}
}
}
#[macro_export]
macro_rules! trace_duration_begin {
($category:expr, $name:expr $(, $key:expr => $val:expr)*) => {
if $crate::regular_tracing_enabled() {
$crate::__fuchsia_trace::duration_begin!($category, $name $(, $key => $val)*);
}
};
}
#[macro_export]
macro_rules! firehose_trace_duration_begin {
($category:expr, $name:expr $(, $key:expr => $val:expr)*) => {
if $crate::firehose_tracing_enabled() {
$crate::trace_duration_begin!($category, $name $(, $key => $val)*);
}
}
}
#[macro_export]
macro_rules! trace_duration_end {
($category:expr, $name:expr $(, $key:expr => $val:expr)*) => {
if $crate::regular_tracing_enabled() {
$crate::__fuchsia_trace::duration_end!($category, $name $(, $key => $val)*);
}
};
}
#[macro_export]
macro_rules! firehose_trace_duration_end {
($category:expr, $name:expr $(, $key:expr => $val:expr)*) => {
if $crate::firehose_tracing_enabled() {
$crate::trace_duration_end!($category, $name $(, $key => $val)*);
}
}
}
#[macro_export]
macro_rules! trace_flow_begin {
($category:expr, $name:expr, $flow_id:expr $(, $key:expr => $val:expr)*) => {
let _flow_id: $crate::__fuchsia_trace::Id = $flow_id;
if $crate::regular_tracing_enabled() {
$crate::__fuchsia_trace::flow_begin!($category, $name, _flow_id $(, $key => $val)*);
}
};
}
#[macro_export]
macro_rules! trace_flow_step {
($category:expr, $name:expr, $flow_id:expr $(, $key:expr => $val:expr)*) => {
let _flow_id: $crate::__fuchsia_trace::Id = $flow_id;
if $crate::regular_tracing_enabled() {
$crate::__fuchsia_trace::flow_step!($category, $name, _flow_id $(, $key => $val)*);
}
};
}
#[macro_export]
macro_rules! trace_flow_end {
($category:expr, $name:expr, $flow_id:expr $(, $key:expr => $val:expr)*) => {
let _flow_id: $crate::__fuchsia_trace::Id = $flow_id;
if $crate::regular_tracing_enabled() {
$crate::__fuchsia_trace::flow_end!($category, $name, _flow_id $(, $key => $val)*);
}
};
}