pub struct UnsupportedOptionsError { /* private fields */ }
Expand description
Attempted to build a counter using options that the current kernel does not support.
This error is returned as the inner error from Builder::build
or
Group::add
if the kernel indicates that the perf_event_attr
arguments contained options that the current kernel does not support.
This can be used to implement feature detection and fall back to a config which uses fewer options.
§Example
use perf_event::events::Software;
use perf_event::{Builder, UnsupportedOptionsError};
let mut builder = Builder::new(Software::DUMMY);
// The linux kernel will always return E2BIG when the size is less than
// PERF_ATTR_SIZE_VER0 (64) except if it is 0. This allows us to easily
// make an invalid call do figure out what size the kernel is expecting.
builder.attrs_mut().size = 1;
let error = builder.build().unwrap_err();
assert_eq!(error.kind(), std::io::ErrorKind::Unsupported);
assert_eq!(error.raw_os_error(), None);
let inner: &UnsupportedOptionsError = error.get_ref().unwrap().downcast_ref().unwrap();
println!("The expected size was {}", inner.expected_size());
Implementations§
Source§impl UnsupportedOptionsError
impl UnsupportedOptionsError
Sourcepub fn expected_size(&self) -> usize
pub fn expected_size(&self) -> usize
The size that the kernel expected the perf_event_attr
struct to be.
Trait Implementations§
Source§impl Debug for UnsupportedOptionsError
impl Debug for UnsupportedOptionsError
Source§impl Display for UnsupportedOptionsError
impl Display for UnsupportedOptionsError
Source§impl Error for UnsupportedOptionsError
impl Error for UnsupportedOptionsError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for UnsupportedOptionsError
impl RefUnwindSafe for UnsupportedOptionsError
impl Send for UnsupportedOptionsError
impl Sync for UnsupportedOptionsError
impl Unpin for UnsupportedOptionsError
impl UnwindSafe for UnsupportedOptionsError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more