dope-core 0.15.1

The manifold runtime
Documentation
mod bootstrap;
mod poll;
mod reservation;
mod source;

use crate::driver::{self, schedule};

pub(super) enum Completion {}
pub(super) enum Maintenance {}
pub(super) const REACTOR_LANES: usize = 2;

#[derive(Clone, Copy, PartialEq, Eq)]
enum MaintenanceState {
    Drained,
    Pending,
    Blocked,
}

fn maintain<'d>(
    context: &mut driver::Context<'_, 'd>,
    work: &mut schedule::Budget<'_, 'd, Maintenance>,
) -> MaintenanceState {
    while context.backend().has_maintenance() {
        if !work.take() {
            return MaintenanceState::Pending;
        }
        use crate::backend::uring::MaintenanceStep;
        if matches!(context.backend().maintain_one(), MaintenanceStep::Blocked) {
            return MaintenanceState::Blocked;
        }
    }
    MaintenanceState::Drained
}