From 42c9737d47f35f4b6f9d7e65be590d53a7c69e35 Mon Sep 17 00:00:00 2001 From: Dan Everton Date: Thu, 18 Nov 2021 10:10:04 +1000 Subject: [PATCH] Functional detach of debugfs probes. --- aya/src/programs/perf_attach.rs | 37 ++++++++++++++++++--------------- aya/src/programs/probe.rs | 4 +++- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/aya/src/programs/perf_attach.rs b/aya/src/programs/perf_attach.rs index 966a3f56..d5d12342 100644 --- a/aya/src/programs/perf_attach.rs +++ b/aya/src/programs/perf_attach.rs @@ -42,6 +42,24 @@ impl Drop for PerfLink { } pub(crate) fn perf_attach(data: &mut ProgramData, fd: RawFd) -> Result { + perf_attach_either(data, fd, None, None) +} + +pub(crate) fn perf_attach_debugfs( + data: &mut ProgramData, + fd: RawFd, + probe_kind: ProbeKind, + event_alias: String, +) -> Result { + perf_attach_either(data, fd, Some(probe_kind), Some(event_alias)) +} + +fn perf_attach_either( + data: &mut ProgramData, + fd: RawFd, + probe_kind: Option, + event_alias: Option, +) -> Result { let prog_fd = data.fd_or_err()?; perf_event_ioctl(fd, PERF_EVENT_IOC_SET_BPF, prog_fd).map_err(|(_, io_error)| { ProgramError::SyscallError { @@ -58,22 +76,7 @@ pub(crate) fn perf_attach(data: &mut ProgramData, fd: RawFd) -> Result Result { - perf_attach(data, fd)?; - - Ok(data.link(PerfLink { - perf_fd: Some(fd), - probe_kind: Some(probe_kind), - event_alias: Some(event_alias), + probe_kind, + event_alias, })) } diff --git a/aya/src/programs/probe.rs b/aya/src/programs/probe.rs index c6737fec..b0e19012 100644 --- a/aya/src/programs/probe.rs +++ b/aya/src/programs/probe.rs @@ -234,8 +234,10 @@ fn delete_in_sys_kernel_debug_tracing_events( .open(events_file_name) .map_err(|e| (events_file_name.to_string(), e))?; + let rm = format!("-:{}", event_alias); + events_file - .write_fmt(format_args!("-:{}", event_alias)) + .write_all(rm.as_bytes()) .map_err(|e| (events_file_name.to_string(), e))?; Ok(())