Skip to main content

dope_runtime/executor/drive/
kind.rs

1use std::mem;
2
3use dope_core::{
4    Errno,
5    driver::{life, result::poll, schedule::ready},
6};
7use poll::fault;
8
9use crate::executor::drive::{clock, regress::Regression};
10
11/// Borrowed cause of a drive failure.
12#[derive(Debug, Eq, PartialEq)]
13pub enum Kind<'a> {
14    Boot(&'a life::Busy),
15    Capacity(&'a ready::Capacity),
16    Poll(&'a poll::Error),
17    Completion(&'a fault::Dispatch),
18    Deadline(&'a clock::Range),
19    ClockMovedBackwards(&'a Regression),
20    TimerDisarm(&'a Errno),
21    Shutdown,
22    QuiescenceTimeout,
23    Timeout,
24}
25
26const _: () = {
27    assert!(!mem::needs_drop::<Kind<'static>>());
28    assert!(mem::size_of::<Kind<'static>>() <= mem::size_of::<usize>() * 2);
29    assert!(mem::align_of::<Kind<'static>>() <= mem::align_of::<usize>());
30};