frame-alloc 0.1.0

A no_std, dependency-free, const-constructible physical frame allocator for kernels
Documentation
#![no_std]

// Modules:

#[cfg(any(audit, test))]
extern crate alloc;

mod allocator;
mod page_size;
mod util {
    pub(crate) mod cache;
    pub(crate) mod lifo;
    pub(crate) mod lock;
}
mod strategies {
    pub(crate) mod cpu_id;
    pub(crate) mod interrupt;
    pub(crate) mod provenance;
}

mod implementations {
    pub(crate) mod summary_buddy;
    pub(crate) mod wrappers {
        pub(crate) mod depot;
        pub(crate) mod regioned;
    }
}

// Public API:

pub use allocator::AllocError;
#[cfg(any(feature = "stats", test))]
pub use allocator::AllocatorStats;
pub use allocator::InitError;
pub use allocator::PhysRange;
pub use allocator::PhysicalAllocator;
pub use allocator::RegionInit;
pub use implementations::summary_buddy::{DefaultGates, GateConfig, SummaryBuddyAllocator};
pub use implementations::wrappers::depot::DepotAllocator;
pub use implementations::wrappers::regioned::RegionedAllocator;
pub use page_size::PageSize;
pub use strategies::cpu_id::{CpuId, NoCpuId};
pub use strategies::interrupt::{InterruptControl, NoInterruptControl};
pub use strategies::provenance::Provenance;

// Tests:

#[cfg(test)]
mod tests {
    mod common;
    mod composition;
    mod depot;
    mod lifo;
    mod lock;
    mod page_size;
    mod regioned;
    mod summary_buddy;
}