pub struct Exit {
pub record_id: Option<RecordId>,
pub task: Task,
pub parent_task: Task,
pub time: u64,
}
Expand description
Process exited.
Please check module-level docs for examples.
§Examples
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::mpsc::channel;
use std::thread;
use perf_event_open::config::{Cpu, Opts, Proc};
use perf_event_open::count::Counter;
use perf_event_open::event::sw::Software;
static WAIT: AtomicBool = AtomicBool::new(true);
let (tid_tx, tid_rx) = channel();
let handle = thread::spawn(move || {
tid_tx.send(unsafe { libc::gettid() }).unwrap();
while WAIT.load(Ordering::Relaxed) {
std::hint::spin_loop();
}
thread::spawn(|| {}); // Fork here.
});
let event = Software::Dummy;
let target = (Proc(tid_rx.recv().unwrap() as _), Cpu::ALL);
let mut opts = Opts::default();
opts.extra_record.task = true;
let counter = Counter::new(event, target, opts).unwrap();
let sampler = counter.sampler(5).unwrap();
counter.enable().unwrap();
WAIT.store(false, Ordering::Relaxed);
handle.join().unwrap(); // Exit here.
for it in sampler.iter() {
println!("{:-?}", it);
}
See also ExtraRecords::task
.
Fields§
§record_id: Option<RecordId>
Record IDs.
task: Task
Task info.
parent_task: Task
Parent task info.
time: u64
Timestamp.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Exit
impl RefUnwindSafe for Exit
impl Send for Exit
impl Sync for Exit
impl Unpin for Exit
impl UnwindSafe for Exit
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