Skip to content

Commit 5f87e90

Browse files
committed
fixup: heaptrack
1 parent e360c02 commit 5f87e90

File tree

15 files changed

+83
-38
lines changed

15 files changed

+83
-38
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/heaptrack/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ libbpf-rs = { version = "0.25.0", features = ["vendored"], optional = true }
3737

3838
[build-dependencies]
3939
libbpf-cargo = { version = "0.25.0", optional = true }
40-
vmlinux = { git = "https://github.com/libbpf/vmlinux.h.git", optional = true }
40+
vmlinux = { git = "https://github.com/libbpf/vmlinux.h.git", rev = "991dd4b8dfd8c9d62ce8999521b24f61d9b7fc52", optional = true }
4141
bindgen = "0.71"
4242

4343
[dev-dependencies]

crates/heaptrack/build.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ use std::{env, path::PathBuf};
55
fn build_ebpf() {
66
use libbpf_cargo::SkeletonBuilder;
77

8-
println!("cargo:rerun-if-changed=src/bpf");
8+
println!("cargo:rerun-if-changed=src/ebpf/c");
99

1010
// Build the BPF program
1111
let arch = env::var("CARGO_CFG_TARGET_ARCH")
1212
.expect("CARGO_CFG_TARGET_ARCH must be set in build script");
1313
let heaptrack_out = PathBuf::from(env::var("OUT_DIR").unwrap()).join("heaptrack.skel.rs");
1414
SkeletonBuilder::new()
15-
.source("src/bpf/heaptrack.bpf.c")
15+
.source("src/ebpf/c/heaptrack.bpf.c")
1616
.clang_args([
1717
"-I",
1818
&vmlinux::include_path_root().join(arch).to_string_lossy(),
File renamed without changes.

crates/heaptrack/src/events.rs renamed to crates/heaptrack/src/ebpf/events.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use runner_shared::benchmark_results::{HeaptrackEvent, HeaptrackEventKind};
22
use serde::{Deserialize, Serialize};
33

44
// Include the bindings for event.h
5-
mod bindings {
5+
pub mod bindings {
66
#![allow(non_upper_case_globals)]
77
#![allow(non_camel_case_types)]
88
#![allow(non_snake_case)]
@@ -43,13 +43,14 @@ impl From<u8> for EventType {
4343
}
4444
}
4545

46+
// TODO: Can't we use the bindgen generated type?
4647
#[repr(C)]
4748
#[derive(Debug, Clone, Copy, Deserialize, Serialize)]
4849
pub struct Event {
4950
pub event_type: EventType,
5051
pub timestamp: u64,
51-
pub pid: u32,
52-
pub tid: u32,
52+
pub pid: i32,
53+
pub tid: i32,
5354
pub addr: u64,
5455
pub size: u64,
5556
}

crates/heaptrack/src/bpf.rs renamed to crates/heaptrack/src/ebpf/memtrack.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use log::warn;
88
use std::mem::MaybeUninit;
99
use std::path::Path;
1010

11-
use crate::poller::RingBufferPoller;
11+
use crate::ebpf::poller::RingBufferPoller;
1212

1313
pub mod heaptrack_skel {
1414
include!(concat!(env!("OUT_DIR"), "/heaptrack.skel.rs"));
@@ -288,7 +288,7 @@ impl HeaptrackBpf {
288288
poll_timeout_ms: u64,
289289
) -> Result<(
290290
RingBufferPoller,
291-
std::sync::mpsc::Receiver<crate::events::Event>,
291+
std::sync::mpsc::Receiver<super::events::Event>,
292292
)> {
293293
// Use the syscalls skeleton's ring buffer (both programs share the same one)
294294
RingBufferPoller::with_channel(&self.skel.maps.events, poll_timeout_ms)

crates/heaptrack/src/ebpf/mod.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
mod events;
2+
mod memtrack;
3+
mod poller;
4+
mod tracker;
5+
6+
pub use events::{Event, EventType};
7+
pub use memtrack::HeaptrackBpf;
8+
pub use tracker::Tracker;

crates/heaptrack/src/poller.rs renamed to crates/heaptrack/src/ebpf/poller.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::sync::{Arc, mpsc};
55
use std::thread::JoinHandle;
66
use std::time::Duration;
77

8-
use crate::events::Event;
8+
use super::events::Event;
99

1010
/// A handler function for processing ring buffer events
1111
pub type EventHandler = Box<dyn Fn(Event) + Send>;
@@ -73,7 +73,7 @@ impl RingBufferPoller {
7373
}
7474

7575
/// Stop the polling thread and wait for it to finish
76-
pub fn shutdown(mut self) {
76+
pub fn shutdown(&mut self) {
7777
self.shutdown.store(true, Ordering::Relaxed);
7878
if let Some(thread) = self.poll_thread.take() {
7979
let _ = thread.join();
@@ -83,9 +83,6 @@ impl RingBufferPoller {
8383

8484
impl Drop for RingBufferPoller {
8585
fn drop(&mut self) {
86-
self.shutdown.store(true, Ordering::Relaxed);
87-
if let Some(thread) = self.poll_thread.take() {
88-
let _ = thread.join();
89-
}
86+
self.shutdown();
9087
}
9188
}

crates/heaptrack/src/tracker.rs renamed to crates/heaptrack/src/ebpf/tracker.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use crate::bpf::HeaptrackBpf;
2-
use crate::events::Event;
1+
use crate::ebpf::{HeaptrackBpf, Event};
32
use anyhow::Result;
43
use log::debug;
54
use std::sync::mpsc::{self, Receiver};

0 commit comments

Comments
 (0)