From b0b83cbd8c5650e0234f763cdd044a4e10a1dc92 Mon Sep 17 00:00:00 2001 From: Alessandro Decina Date: Tue, 19 Jan 2021 09:38:22 +0000 Subject: [PATCH] Use own Pod trait --- src/bpf.rs | 14 ++++++++++++-- src/syscalls/bpf.rs | 8 ++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/bpf.rs b/src/bpf.rs index 064c92bb..95718c42 100644 --- a/src/bpf.rs +++ b/src/bpf.rs @@ -10,8 +10,6 @@ use crate::{ syscalls::bpf_map_update_elem_ptr, }; -pub use object::Pod; - unsafe impl object::Pod for bpf_insn {} pub(crate) const BPF_OBJ_NAME_LEN: usize = 16; @@ -21,6 +19,18 @@ pub(crate) const PERF_EVENT_IOC_ENABLE: libc::c_ulong = 9216; pub(crate) const PERF_EVENT_IOC_DISABLE: libc::c_ulong = 9217; pub(crate) const PERF_EVENT_IOC_SET_BPF: libc::c_ulong = 1074013192; +pub unsafe trait Pod: Copy + 'static {} + +macro_rules! unsafe_impl_pod { + ($($struct_name:ident),+ $(,)?) => { + $( + unsafe impl Pod for $struct_name { } + )+ + } +} + +unsafe_impl_pod!(i8, u8, i16, u16, i32, u32, i64, u64); + #[repr(C)] #[derive(Copy, Clone, Debug)] pub(crate) struct bpf_map_def { diff --git a/src/syscalls/bpf.rs b/src/syscalls/bpf.rs index f2cb2589..b9cdc930 100644 --- a/src/syscalls/bpf.rs +++ b/src/syscalls/bpf.rs @@ -13,7 +13,7 @@ use crate::{ generated::{bpf_attach_type, bpf_attr, bpf_cmd, bpf_insn}, programs::VerifierLog, syscalls::SysResult, - RawFd, BPF_OBJ_NAME_LEN, + Pod, RawFd, BPF_OBJ_NAME_LEN, }; use super::{syscall, Syscall}; @@ -62,7 +62,7 @@ pub(crate) fn bpf_load_program( sys_bpf(bpf_cmd::BPF_PROG_LOAD, &attr) } -fn lookup( +fn lookup( fd: RawFd, key: &K, flags: u64, @@ -84,7 +84,7 @@ fn lookup( } } -pub(crate) fn bpf_map_lookup_elem( +pub(crate) fn bpf_map_lookup_elem( fd: RawFd, key: &K, flags: u64, @@ -92,7 +92,7 @@ pub(crate) fn bpf_map_lookup_elem( lookup(fd, key, flags, bpf_cmd::BPF_MAP_LOOKUP_ELEM) } -pub(crate) fn bpf_map_lookup_and_delete_elem( +pub(crate) fn bpf_map_lookup_and_delete_elem( fd: RawFd, key: &K, ) -> Result, (c_long, io::Error)> {