// Box: Core Allocation // Purpose: SuperSlab allocation/deallocation and slab initialization // // Responsibilities: // - Allocate SuperSlab with ACE-aware sizing // - Free SuperSlab with LRU cache integration // - Initialize slab metadata (capacity, stride, freelist) // - Drain remote MPSC stack to freelist // // Dependencies: // - ss_os_acquire_box (OS-level mmap/munmap) // - ss_cache_box (LRU cache + prewarm) // - ss_stats_box (statistics) // - ss_ace_box (ACE-aware size selection) // - ss_slab_management_box (bitmap operations) // - hakmem_super_registry (registry integration) // // API: // - superslab_allocate() - main allocation entry // - superslab_free() - deallocation with LRU cache // - superslab_init_slab() - slab metadata initialization // - _ss_remote_drain_to_freelist_unsafe() - remote drain helper #ifndef SS_ALLOCATION_BOX_H #define SS_ALLOCATION_BOX_H #include "hakmem_tiny_superslab.h" #include // SuperSlab allocation (ACE-aware) SuperSlab* superslab_allocate(uint8_t size_class); // SuperSlab deallocation (LRU cache integration) void superslab_free(SuperSlab* ss); // Slab initialization void superslab_init_slab(SuperSlab* ss, int slab_idx, size_t block_size, uint32_t owner_tid); // Remote drain helper (ownership already verified by caller) void _ss_remote_drain_to_freelist_unsafe(SuperSlab* ss, int slab_idx, TinySlabMeta* meta); #endif // SS_ALLOCATION_BOX_H