Browse Source

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
William Findlay 3 years ago
parent
commit
4af9d1bd3e
2 changed files with 19 additions and 22 deletions
  1. 2 21
      aya/src/maps/perf/perf_buffer.rs
  2. 17 1
      aya/src/sys/mod.rs

+ 2 - 21
aya/src/maps/perf/perf_buffer.rs

@@ -1,5 +1,5 @@
 use std::{
-    ffi::{c_int, c_void},
+    ffi::c_void,
     io, mem,
     os::fd::{AsFd, AsRawFd, BorrowedFd, OwnedFd, RawFd},
     ptr, slice,
@@ -15,7 +15,7 @@ use crate::{
         perf_event_header, perf_event_mmap_page,
         perf_event_type::{PERF_RECORD_LOST, PERF_RECORD_SAMPLE},
     },
-    sys::{perf_event_ioctl, perf_event_open_bpf, SysResult},
+    sys::{mmap, perf_event_ioctl, perf_event_open_bpf, SysResult},
     PERF_EVENT_IOC_DISABLE, PERF_EVENT_IOC_ENABLE,
 };
 
@@ -282,25 +282,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: BorrowedFd<'_>,
-    offset: libc::off_t,
-) -> *mut c_void {
-    #[cfg(not(test))]
-    return libc::mmap(addr, len, prot, flags, fd.as_raw_fd(), offset);
-
-    #[cfg(test)]
-    use crate::sys::TEST_MMAP_RET;
-
-    #[cfg(test)]
-    TEST_MMAP_RET.with(|ret| *ret.borrow())
-}
-
 #[derive(Debug)]
 #[repr(C)]
 struct Sample {

+ 17 - 1
aya/src/sys/mod.rs

@@ -6,7 +6,7 @@ mod perf_event;
 mod fake;
 
 use std::{
-    ffi::{c_int, c_long},
+    ffi::{c_int, c_long, c_void},
     io, mem,
     os::fd::{AsRawFd as _, BorrowedFd},
 };
@@ -115,3 +115,19 @@ fn syscall(call: Syscall<'_>) -> SysResult<c_long> {
         ret => Err((ret, io::Error::last_os_error())),
     }
 }
+
+#[cfg_attr(test, allow(unused_variables))]
+pub(crate) unsafe fn mmap(
+    addr: *mut c_void,
+    len: usize,
+    prot: c_int,
+    flags: c_int,
+    fd: BorrowedFd<'_>,
+    offset: libc::off_t,
+) -> *mut c_void {
+    #[cfg(not(test))]
+    return libc::mmap(addr, len, prot, flags, fd.as_raw_fd(), offset);
+
+    #[cfg(test)]
+    TEST_MMAP_RET.with(|ret| *ret.borrow())
+}