pub struct Mmap {
pub record_id: Option<RecordId>,
pub executable: bool,
pub task: Task,
pub addr: u64,
pub len: u64,
pub file: CString,
pub page_offset: u64,
pub ext: Option<Ext>,
}
Expand description
Process memory-mapped.
This is useful if we want to correlate user-space IPs to code.
§Examples
use std::ptr::null_mut;
use perf_event_open::config::{Cpu, Opts, Proc};
use perf_event_open::count::Counter;
use perf_event_open::event::sw::Software;
let event = Software::Dummy;
let target = (Proc::CURRENT, Cpu::ALL);
let mut opts = Opts::default();
opts.extra_record.mmap.code = true; // Capture executable mmaps.
opts.extra_record.mmap.data = true; // Capture non-executable mmaps.
let counter = Counter::new(event, target, opts).unwrap();
let sampler = counter.sampler(5).unwrap();
counter.enable().unwrap();
let flags = libc::MAP_ANONYMOUS | libc::MAP_SHARED;
let len = 4096;
unsafe {
libc::mmap(null_mut(), len, libc::PROT_EXEC, flags, -1, 0);
libc::mmap(null_mut(), len, libc::PROT_READ, flags, -1, 0);
};
for it in sampler.iter() {
println!("{:-?}", it);
}
Fields§
§record_id: Option<RecordId>
Record IDs.
executable: bool
Executable mapping.
task: Task
Task info.
addr: u64
Address.
len: u64
Length.
file: CString
Mapped file.
page_offset: u64
Page offset.
ext: Option<Ext>
Extension fields.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Mmap
impl RefUnwindSafe for Mmap
impl Send for Mmap
impl Sync for Mmap
impl Unpin for Mmap
impl UnwindSafe for Mmap
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