Skip to content

General Purpose Memory Allocator API

include/mem/alloc.h View source View on GitHub
void * valloc_new(size_t size, struct alloc_params params)
source
void vfree_new(void *ptr, enum alloc_behavior behavior)
source
void * valloc_from_domain(domain_id_t domain, size_t size)
source
void * valloc_full(size_t size, struct alloc_params params)
source
void * vrealloc_full(
    void *ptr,
    size_t size,
    struct alloc_params params
)
source
size_t vsize(void *ptr)
source
void * valloc_aligned_full(
    size_t size,
    size_t align,
    struct alloc_params params
)
source
void * valloc_pages(size_t page_count, enum alloc_flags flags)
source
bool valloc_ptr_in_slab_validate(void *ptr)
source
LOG_HANDLE_EXTERN(slab_flags) (1 declaration) source
§ struct log_handle __log_handle_slab_flags
#define ALLOC_PARAMS_CONTRACT(params)
source

Verify the contract

Expansion
#define ALLOC_PARAMS_CONTRACT(params) \
    ct_precond(ALLOC_FLAGS_VALID((params).flags), \
               "alloc flags set unavailable bits") \
        ct_precond(ALLOC_BEHAVIOR_MAY_FAULT((params).behavior) || \
                       !ALLOC_FLAGS_CAN_FAULT((params).flags), \
                   "non-faulting alloc behavior cannot request pageable or " \
                   "movable memory") \
            ct_precond(!ALLOC_BEHAVIOR_IS_ISR_SAFE((params).behavior) || \
                           !((params).flags & ALLOC_FLAG_PAGEABLE), \
                       "ISR-safe alloc behavior cannot request pageable " \
                       "memory")
#define ALLOC_SIZE_CONTRACT(size)
source
Expansion
#define ALLOC_SIZE_CONTRACT(size) \
    cc_diagnose_if((size) == 0, "zero-size allocation", "warning")
#define ALLOC_ALIGN_CONTRACT(align)
source
Expansion
#define ALLOC_ALIGN_CONTRACT(align) \
    ct_precond((align) != 0 && ((align) & ((align) - 1)) == 0, \
               "alignment must be a nonzero power of two")