perf_event: inline `perf_event_open_bpf`

This function has one caller and provides no abstraction.
reviewable/pr1393/r7
Tamir Duberstein 7 days ago
parent 7e07f85edc
commit d4b2dde78a
No known key found for this signature in database

@ -6,7 +6,7 @@ use std::{
}; };
use aya_obj::generated::{ use aya_obj::generated::{
perf_event_header, perf_event_mmap_page, PERF_FLAG_FD_CLOEXEC, 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},
}; };
use bytes::BytesMut; use bytes::BytesMut;
@ -14,7 +14,10 @@ use libc::{MAP_SHARED, PROT_READ, PROT_WRITE};
use thiserror::Error; use thiserror::Error;
use crate::{ use crate::{
sys::{PerfEventIoctlRequest, SyscallError, perf_event_ioctl, perf_event_open_bpf}, programs::perf_event::{
PerfEventConfig, PerfEventScope, SamplePolicy, SoftwareEvent, WakeupPolicy,
},
sys::{PerfEventIoctlRequest, SyscallError, perf_event_ioctl, perf_event_open},
util::MMap, util::MMap,
}; };
@ -92,7 +95,7 @@ pub(crate) struct PerfBuffer {
impl PerfBuffer { impl PerfBuffer {
pub(crate) fn open( pub(crate) fn open(
cpu_id: u32, cpu: u32,
page_size: usize, page_size: usize,
page_count: usize, page_count: usize,
) -> Result<Self, PerfBufferError> { ) -> Result<Self, PerfBufferError> {
@ -100,8 +103,15 @@ impl PerfBuffer {
return Err(PerfBufferError::InvalidPageCount { page_count }); return Err(PerfBufferError::InvalidPageCount { page_count });
} }
let fd = perf_event_open_bpf(cpu_id as i32) let fd = perf_event_open(
.map_err(|io_error| PerfBufferError::OpenError { io_error })?; PerfEventConfig::Software(SoftwareEvent::BpfOutput),
PerfEventScope::AllProcessesOneCpu { cpu },
SamplePolicy::Period(1),
WakeupPolicy::Events(1),
false,
PERF_FLAG_FD_CLOEXEC,
)
.map_err(|io_error| PerfBufferError::OpenError { io_error })?;
let size = page_size * page_count; let size = page_size * page_count;
let mmap = MMap::new( let mmap = MMap::new(
fd.as_fd(), fd.as_fd(),

@ -1,5 +1,5 @@
use std::{ use std::{
ffi::{CString, OsStr, c_int, c_long, c_uint}, ffi::{CString, OsStr, c_long, c_uint},
io, mem, io, mem,
os::fd::{BorrowedFd, FromRawFd as _}, os::fd::{BorrowedFd, FromRawFd as _},
}; };
@ -17,7 +17,7 @@ use libc::pid_t;
use super::{PerfEventIoctlRequest, Syscall, syscall}; use super::{PerfEventIoctlRequest, Syscall, syscall};
use crate::programs::perf_event::{ use crate::programs::perf_event::{
BreakpointConfig, PerfEventConfig, PerfEventScope, SamplePolicy, SoftwareEvent, WakeupPolicy, BreakpointConfig, PerfEventConfig, PerfEventScope, SamplePolicy, WakeupPolicy,
perf_type_id_to_u32, perf_type_id_to_u32,
}; };
@ -128,18 +128,6 @@ pub(crate) fn perf_event_open(
perf_event_sys(attr, pid, cpu, flags) perf_event_sys(attr, pid, cpu, flags)
} }
pub(crate) fn perf_event_open_bpf(cpu: c_int) -> io::Result<crate::MockableFd> {
let cpu = cpu as u32;
perf_event_open(
PerfEventConfig::Software(SoftwareEvent::BpfOutput),
PerfEventScope::AllProcessesOneCpu { cpu },
SamplePolicy::Period(1),
WakeupPolicy::Events(1),
false,
PERF_FLAG_FD_CLOEXEC,
)
}
pub(crate) fn perf_event_open_probe( pub(crate) fn perf_event_open_probe(
ty: u32, ty: u32,
ret_bit: Option<u32>, ret_bit: Option<u32>,

Loading…
Cancel
Save