|
@@ -0,0 +1,53 @@
|
|
|
+#![no_std]
|
|
|
+
|
|
|
+pub mod bpf_probe_read {
|
|
|
+ pub const RESULT_BUF_LEN: usize = 1024;
|
|
|
+
|
|
|
+ #[derive(Copy, Clone)]
|
|
|
+ #[repr(C)]
|
|
|
+ pub struct TestResult {
|
|
|
+ pub buf: [u8; RESULT_BUF_LEN],
|
|
|
+ pub len: Option<Result<usize, i64>>,
|
|
|
+ }
|
|
|
+
|
|
|
+ #[cfg(feature = "user")]
|
|
|
+ unsafe impl aya::Pod for TestResult {}
|
|
|
+}
|
|
|
+
|
|
|
+pub mod ring_buf {
|
|
|
+ // This structure's definition is duplicated in the probe.
|
|
|
+ #[repr(C)]
|
|
|
+ #[derive(Clone, Copy, Debug, Eq, PartialEq, Default)]
|
|
|
+ pub struct Registers {
|
|
|
+ pub dropped: u64,
|
|
|
+ pub rejected: u64,
|
|
|
+ }
|
|
|
+
|
|
|
+ impl core::ops::Add for Registers {
|
|
|
+ type Output = Self;
|
|
|
+ fn add(self, rhs: Self) -> Self::Output {
|
|
|
+ Self {
|
|
|
+ dropped: self.dropped + rhs.dropped,
|
|
|
+ rejected: self.rejected + rhs.rejected,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ impl<'a> core::iter::Sum<&'a Registers> for Registers {
|
|
|
+ fn sum<I: Iterator<Item = &'a Registers>>(iter: I) -> Self {
|
|
|
+ iter.fold(Default::default(), |a, b| a + *b)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ #[cfg(feature = "user")]
|
|
|
+ unsafe impl aya::Pod for Registers {}
|
|
|
+}
|
|
|
+
|
|
|
+pub mod strncmp {
|
|
|
+ #[derive(Copy, Clone)]
|
|
|
+ #[repr(C)]
|
|
|
+ pub struct TestResult(pub core::cmp::Ordering);
|
|
|
+
|
|
|
+ #[cfg(feature = "user")]
|
|
|
+ unsafe impl aya::Pod for TestResult {}
|
|
|
+}
|