Skip to content

Commit 163d180

Browse files
committed
Take dependency on zerocopy for safe transmutation
1 parent fbd1802 commit 163d180

6 files changed

Lines changed: 6 additions & 6 deletions

File tree

perf-event-open-sys/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,4 @@ name = "perf_event_open_sys"
2525
[dependencies]
2626
libc = "0.2"
2727
memoffset = "0.9.1"
28+
zerocopy = { version = "0.8.26", features = ["derive"] }

perf-event-open-sys/src/bindings_aarch64.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2578,7 +2578,7 @@ impl ::std::fmt::Debug for perf_event_mmap_page {
25782578
}
25792579
}
25802580
#[repr(C)]
2581-
#[derive(Debug, Default, Copy, Clone)]
2581+
#[derive(Debug, Default, Copy, Clone, zerocopy::FromBytes)]
25822582
pub struct perf_event_header {
25832583
pub type_: __u32,
25842584
pub misc: __u16,

perf-event-open-sys/src/bindings_riscv64gc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2578,7 +2578,7 @@ impl ::std::fmt::Debug for perf_event_mmap_page {
25782578
}
25792579
}
25802580
#[repr(C)]
2581-
#[derive(Debug, Default, Copy, Clone)]
2581+
#[derive(Debug, Default, Copy, Clone, zerocopy::FromBytes)]
25822582
pub struct perf_event_header {
25832583
pub type_: __u32,
25842584
pub misc: __u16,

perf-event-open-sys/src/bindings_x86_64.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2622,7 +2622,7 @@ impl ::std::fmt::Debug for perf_event_mmap_page {
26222622
}
26232623
}
26242624
#[repr(C)]
2625-
#[derive(Debug, Default, Copy, Clone)]
2625+
#[derive(Debug, Default, Copy, Clone, zerocopy::FromBytes)]
26262626
pub struct perf_event_header {
26272627
pub type_: __u32,
26282628
pub misc: __u16,

perf-event/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ libc = "0.2"
2929
memmap2 = "0.9"
3030
perf-event-data = "0.1.8"
3131
perf-event-open-sys2 = "5.0.4"
32+
zerocopy = "0.8.26"
3233

3334
[dev-dependencies]
3435
ctrlc = "3.4.5"

perf-event/src/sampler.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -671,9 +671,7 @@ impl<'a> ByteBuffer<'a> {
671671
fn parse_header(&mut self) -> perf_event_header {
672672
let mut bytes = [0; std::mem::size_of::<perf_event_header>()];
673673
self.copy_to_slice(&mut bytes);
674-
// SAFETY: perf_event_header is a packed C struct so it is valid to
675-
// copy arbitrary initialized memory into it.
676-
unsafe { std::mem::transmute(bytes) }
674+
zerocopy::transmute!(bytes)
677675
}
678676

679677
fn len(&self) -> usize {

0 commit comments

Comments
 (0)