pub struct TraceEventQueue {
pub async_id_read: Id,
pub async_id_write: Id,
pub cpu_id: u32,
/* private fields */
}Expand description
Stores all trace events.
Fields§
§async_id_read: IdAsync ID for read track grouping.
async_id_write: IdAsync ID for write track grouping.
cpu_id: u32CPU ID for trace tracks.
Implementations§
Source§impl<'a> TraceEventQueue
impl<'a> TraceEventQueue
pub fn new(inspect_node: &Node, cpu_id: u32) -> Result<Self, Errno>
pub fn read_track_name(&self) -> Cow<'static, str>
pub fn write_track_name(&self) -> Cow<'static, str>
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 UnsafeUnpin 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
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
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>
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>
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 more