|
@@ -33,8 +33,15 @@
|
|
|
//! versa. Because of that, all map values must be plain old data and therefore
|
|
|
//! implement the [Pod] trait.
|
|
|
use std::{
|
|
|
- convert::TryFrom, ffi::CString, io, marker::PhantomData, mem, ops::Deref, os::unix::io::RawFd,
|
|
|
- path::Path, ptr,
|
|
|
+ convert::TryFrom,
|
|
|
+ ffi::CString,
|
|
|
+ io,
|
|
|
+ marker::PhantomData,
|
|
|
+ mem,
|
|
|
+ ops::Deref,
|
|
|
+ os::unix::{io::RawFd, prelude::AsRawFd},
|
|
|
+ path::Path,
|
|
|
+ ptr,
|
|
|
};
|
|
|
use thiserror::Error;
|
|
|
|
|
@@ -206,6 +213,15 @@ pub enum MapError {
|
|
|
},
|
|
|
}
|
|
|
|
|
|
+/// A map file descriptor.
|
|
|
+pub struct MapFd(RawFd);
|
|
|
+
|
|
|
+impl AsRawFd for MapFd {
|
|
|
+ fn as_raw_fd(&self) -> RawFd {
|
|
|
+ self.0
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/// A generic handle to a BPF map.
|
|
|
///
|
|
|
/// You should never need to use this unless you're implementing a new map type.
|
|
@@ -295,6 +311,13 @@ impl Map {
|
|
|
self.pinned = true;
|
|
|
Ok(())
|
|
|
}
|
|
|
+
|
|
|
+ /// Returns the file descriptor of the map.
|
|
|
+ ///
|
|
|
+ /// Can be converted to [`RawFd`] using [`AsRawFd`].
|
|
|
+ pub fn fd(&self) -> Option<MapFd> {
|
|
|
+ self.fd.map(MapFd)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
impl Drop for Map {
|