pub struct TraceEventQueue { /* private fields */ }Expand description
Stores all trace events.
Implementations§
Source§impl<'a> TraceEventQueue
impl<'a> TraceEventQueue
pub fn new(inspect_node: &Node) -> Result<Self, Errno>
Sourcepub fn from(kernel: &Kernel) -> Arc<Self>
pub fn from(kernel: &Kernel) -> Arc<Self>
Uses the TraceEventQueue from the kernel or initializes a new one if not present.
pub fn is_enabled(&self) -> bool
pub fn enable(&self) -> Result<(), Errno>
Sourcepub fn disable(&self) -> Result<(), Errno>
pub fn disable(&self) -> Result<(), Errno>
Disables the event queue and resets it to empty. The number of dropped pages are recorded for reading via tracefs.
Sourcepub fn read(&self, buf: &mut dyn OutputBuffer) -> Result<usize, Errno>
pub fn read(&self, buf: &mut dyn OutputBuffer) -> Result<usize, Errno>
Reads a page worth of events. Currently only reads pages that are full.
From https://docs.kernel.org/trace/ring-buffer-design.html, when memory is mapped, a reader page can be swapped with the header page to avoid copying memory.
Sourcepub fn push_event(
&self,
event: TraceEvent,
data: &[u8],
) -> Result<Duration<BootTimeline>, Errno>
pub fn push_event( &self, event: TraceEvent, data: &[u8], ) -> Result<Duration<BootTimeline>, Errno>
Write event into ring_buffer.
If event does not fit in the current page, move on to the next.
Should eventually allow for a writer to preempt another writer. See https://docs.kernel.org/trace/ring-buffer-design.html. Returns the delta duration between this event and the previous event written.
Auto Trait Implementations§
impl !Freeze for TraceEventQueue
impl !RefUnwindSafe for TraceEventQueue
impl Send for TraceEventQueue
impl Sync for TraceEventQueue
impl Unpin for TraceEventQueue
impl !UnwindSafe for TraceEventQueue
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
Source§impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
§impl<T> InstanceFromServiceTransport<T> for T
impl<T> InstanceFromServiceTransport<T> for T
§fn from_service_transport(handle: T) -> T
fn from_service_transport(handle: T) -> T
Converts the given service transport handle of type
T to [Self]Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T, U> MultiArchFrom<T> for Uwhere
U: From<T>,
impl<T, U> MultiArchFrom<T> for Uwhere
U: From<T>,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T, U> TryIntoExt<U> for Twhere
U: TryFromExt<T>,
impl<T, U> TryIntoExt<U> for Twhere
U: TryFromExt<T>,
type Error = <U as TryFromExt<T>>::Error
§fn try_into_ext(self) -> Result<U, <T as TryIntoExt<U>>::Error>
fn try_into_ext(self) -> Result<U, <T as TryIntoExt<U>>::Error>
Tries to perform the conversion.