bitmap/
bitmap.rs

1use customizable_buddy::{BuddyAllocator, LinkedListBuddy, UsizeBuddy};
2use std::ptr::NonNull;
3
4type Allocator<const N: usize> = BuddyAllocator<N, UsizeBuddy, LinkedListBuddy>;
5
6#[repr(C, align(4096))]
7struct Page([u8; 4096]);
8
9impl Page {
10    const ZERO: Self = Self([0; 4096]);
11}
12
13static mut MEMORY: Page = Page::ZERO;
14
15fn main() {
16    let mut allocator = Allocator::<7>::new();
17    let ptr = NonNull::new(unsafe { MEMORY.0.as_mut_ptr() }).unwrap();
18    let len = core::mem::size_of_val(unsafe { &MEMORY });
19    allocator.init(3, ptr);
20    unsafe { allocator.transfer(ptr, len) };
21    println!("{allocator:?}");
22    let (_, size) = allocator.allocate_type::<usize>().unwrap();
23    assert_eq!(size, 8);
24    println!("{allocator:?}");
25}