programs: disambiguate `fd` names

reviewable/pr1393/r5
Tamir Duberstein 5 days ago
parent 1791d497d3
commit 27c7f1c84f
No known key found for this signature in database

@ -83,7 +83,7 @@ id_as_key!(PerfLink, PerfLinkId);
pub(crate) fn perf_attach( pub(crate) fn perf_attach(
prog_fd: BorrowedFd<'_>, prog_fd: BorrowedFd<'_>,
fd: crate::MockableFd, perf_fd: crate::MockableFd,
cookie: Option<u64>, cookie: Option<u64>,
) -> Result<PerfLinkInner, ProgramError> { ) -> Result<PerfLinkInner, ProgramError> {
if cookie.is_some() && (!is_bpf_cookie_supported() || !FEATURES.bpf_perf_link()) { if cookie.is_some() && (!is_bpf_cookie_supported() || !FEATURES.bpf_perf_link()) {
@ -92,7 +92,7 @@ pub(crate) fn perf_attach(
if FEATURES.bpf_perf_link() { if FEATURES.bpf_perf_link() {
let link_fd = bpf_link_create( let link_fd = bpf_link_create(
prog_fd, prog_fd,
LinkTarget::Fd(fd.as_fd()), LinkTarget::Fd(perf_fd.as_fd()),
BPF_PERF_EVENT, BPF_PERF_EVENT,
0, 0,
cookie.map(|bpf_cookie| BpfLinkCreateArgs::PerfEvent { bpf_cookie }), cookie.map(|bpf_cookie| BpfLinkCreateArgs::PerfEvent { bpf_cookie }),
@ -103,35 +103,35 @@ pub(crate) fn perf_attach(
})?; })?;
Ok(PerfLinkInner::Fd(FdLink::new(link_fd))) Ok(PerfLinkInner::Fd(FdLink::new(link_fd)))
} else { } else {
perf_attach_either(prog_fd, fd, None) perf_attach_either(prog_fd, perf_fd, None)
} }
} }
pub(crate) fn perf_attach_debugfs( pub(crate) fn perf_attach_debugfs(
prog_fd: BorrowedFd<'_>, prog_fd: BorrowedFd<'_>,
fd: crate::MockableFd, perf_fd: crate::MockableFd,
event: ProbeEvent, event: ProbeEvent,
) -> Result<PerfLinkInner, ProgramError> { ) -> Result<PerfLinkInner, ProgramError> {
perf_attach_either(prog_fd, fd, Some(event)) perf_attach_either(prog_fd, perf_fd, Some(event))
} }
fn perf_attach_either( fn perf_attach_either(
prog_fd: BorrowedFd<'_>, prog_fd: BorrowedFd<'_>,
fd: crate::MockableFd, perf_fd: crate::MockableFd,
event: Option<ProbeEvent>, event: Option<ProbeEvent>,
) -> Result<PerfLinkInner, ProgramError> { ) -> Result<PerfLinkInner, ProgramError> {
perf_event_ioctl(fd.as_fd(), PerfEventIoctlRequest::SetBpf(prog_fd)).map_err(|io_error| { perf_event_ioctl(perf_fd.as_fd(), PerfEventIoctlRequest::SetBpf(prog_fd)).map_err(
SyscallError { |io_error| SyscallError {
call: "PERF_EVENT_IOC_SET_BPF", call: "PERF_EVENT_IOC_SET_BPF",
io_error, io_error,
} },
})?; )?;
perf_event_ioctl(fd.as_fd(), PerfEventIoctlRequest::Enable).map_err(|io_error| { perf_event_ioctl(perf_fd.as_fd(), PerfEventIoctlRequest::Enable).map_err(|io_error| {
SyscallError { SyscallError {
call: "PERF_EVENT_IOC_ENABLE", call: "PERF_EVENT_IOC_ENABLE",
io_error, io_error,
} }
})?; })?;
Ok(PerfLinkInner::PerfLink(PerfLink { perf_fd: fd, event })) Ok(PerfLinkInner::PerfLink(PerfLink { perf_fd, event }))
} }

@ -456,7 +456,7 @@ impl PerfEvent {
let prog_fd = self.fd()?; let prog_fd = self.fd()?;
let prog_fd = prog_fd.as_fd(); let prog_fd = prog_fd.as_fd();
let fd = perf_event_open( let perf_fd = perf_event_open(
config, config,
scope, scope,
sample_policy, sample_policy,
@ -469,7 +469,7 @@ impl PerfEvent {
io_error, io_error,
})?; })?;
let link = perf_attach(prog_fd, fd, None /* cookie */)?; let link = perf_attach(prog_fd, perf_fd, None /* cookie */)?;
self.data.links.insert(PerfEventLink::new(link)) self.data.links.insert(PerfEventLink::new(link))
} }
} }

@ -122,11 +122,11 @@ pub(crate) fn attach<T: Link + From<PerfLinkInner>>(
if cookie.is_some() { if cookie.is_some() {
return Err(ProgramError::AttachCookieNotSupported); return Err(ProgramError::AttachCookieNotSupported);
} }
let (fd, event_alias) = create_as_trace_point(kind, fn_name, offset, pid)?; let (perf_fd, event_alias) = create_as_trace_point(kind, fn_name, offset, pid)?;
perf_attach_debugfs(prog_fd, fd, ProbeEvent { kind, event_alias }) perf_attach_debugfs(prog_fd, perf_fd, ProbeEvent { kind, event_alias })
} else { } else {
let fd = create_as_probe(kind, fn_name, offset, pid)?; let perf_fd = create_as_probe(kind, fn_name, offset, pid)?;
perf_attach(prog_fd, fd, cookie) perf_attach(prog_fd, perf_fd, cookie)
}?; }?;
program_data.links.insert(T::from(link)) program_data.links.insert(T::from(link))
} }
@ -203,12 +203,12 @@ fn create_as_trace_point(
let category = format!("{}s", kind.pmu()); let category = format!("{}s", kind.pmu());
let tpid = read_sys_fs_trace_point_id(tracefs, &category, event_alias.as_ref())?; let tpid = read_sys_fs_trace_point_id(tracefs, &category, event_alias.as_ref())?;
let fd = perf_event_open_trace_point(tpid, pid).map_err(|io_error| SyscallError { let perf_fd = perf_event_open_trace_point(tpid, pid).map_err(|io_error| SyscallError {
call: "perf_event_open", call: "perf_event_open",
io_error, io_error,
})?; })?;
Ok((fd, event_alias)) Ok((perf_fd, event_alias))
} }
fn create_probe_event( fn create_probe_event(

@ -79,12 +79,12 @@ impl TracePoint {
let prog_fd = prog_fd.as_fd(); let prog_fd = prog_fd.as_fd();
let tracefs = find_tracefs_path()?; let tracefs = find_tracefs_path()?;
let id = read_sys_fs_trace_point_id(tracefs, category, name.as_ref())?; let id = read_sys_fs_trace_point_id(tracefs, category, name.as_ref())?;
let fd = perf_event_open_trace_point(id, None).map_err(|io_error| SyscallError { let perf_fd = perf_event_open_trace_point(id, None).map_err(|io_error| SyscallError {
call: "perf_event_open_trace_point", call: "perf_event_open_trace_point",
io_error, io_error,
})?; })?;
let link = perf_attach(prog_fd, fd, None /* cookie */)?; let link = perf_attach(prog_fd, perf_fd, None /* cookie */)?;
self.data.links.insert(TracePointLink::new(link)) self.data.links.insert(TracePointLink::new(link))
} }
} }

Loading…
Cancel
Save