aya: move mmap from perf_buffer.rs to sys/mod.rs

mmap() is needed for the ring buffer implementation, so move it to a common module
pull/294/head
William Findlay 4 years ago committed by Tatsuyuki Ishi
parent 6ff54d06f8
commit 97319956cd

@ -7,7 +7,7 @@ use std::{
}; };
use bytes::BytesMut; use bytes::BytesMut;
use libc::{c_int, close, munmap, MAP_FAILED, MAP_SHARED, PROT_READ, PROT_WRITE}; use libc::{close, munmap, MAP_FAILED, MAP_SHARED, PROT_READ, PROT_WRITE};
use thiserror::Error; use thiserror::Error;
use crate::{ use crate::{
@ -15,7 +15,7 @@ use crate::{
perf_event_header, perf_event_mmap_page, perf_event_header, perf_event_mmap_page,
perf_event_type::{PERF_RECORD_LOST, PERF_RECORD_SAMPLE}, perf_event_type::{PERF_RECORD_LOST, PERF_RECORD_SAMPLE},
}, },
sys::{perf_event_ioctl, perf_event_open_bpf}, sys::{mmap, perf_event_ioctl, perf_event_open_bpf},
PERF_EVENT_IOC_DISABLE, PERF_EVENT_IOC_ENABLE, PERF_EVENT_IOC_DISABLE, PERF_EVENT_IOC_ENABLE,
}; };
@ -277,25 +277,6 @@ impl Drop for PerfBuffer {
} }
} }
#[cfg_attr(test, allow(unused_variables))]
unsafe fn mmap(
addr: *mut c_void,
len: usize,
prot: c_int,
flags: c_int,
fd: i32,
offset: libc::off_t,
) -> *mut c_void {
#[cfg(not(test))]
return libc::mmap(addr, len, prot, flags, fd, offset);
#[cfg(test)]
use crate::sys::TEST_MMAP_RET;
#[cfg(test)]
TEST_MMAP_RET.with(|ret| *ret.borrow())
}
#[derive(Debug)] #[derive(Debug)]
#[repr(C)] #[repr(C)]
struct Sample { struct Sample {

@ -11,7 +11,7 @@ use std::{ffi::CString, mem};
#[cfg(not(test))] #[cfg(not(test))]
use libc::utsname; use libc::utsname;
use libc::{c_int, c_long, pid_t}; use libc::{c_int, c_long, c_void, pid_t};
pub(crate) use bpf::*; pub(crate) use bpf::*;
#[cfg(test)] #[cfg(test)]
@ -108,3 +108,19 @@ pub(crate) fn kernel_version() -> Result<(u32, u32, u32), ()> {
Ok((major, minor, patch)) Ok((major, minor, patch))
} }
} }
#[cfg_attr(test, allow(unused_variables))]
pub(crate) unsafe fn mmap(
addr: *mut c_void,
len: usize,
prot: c_int,
flags: c_int,
fd: i32,
offset: libc::off_t,
) -> *mut c_void {
#[cfg(not(test))]
return libc::mmap(addr, len, prot, flags, fd, offset);
#[cfg(test)]
TEST_MMAP_RET.with(|ret| *ret.borrow())
}

Loading…
Cancel
Save