Memory subsystem

Functions

Public functions

dde_kit_large_free

Free large memory block

Argument
void * p Pointer to memory block

dde_kit_large_malloc

Allocate large memory block

Argument
dde_kit_size_t size Block size
Return

void * Pointer to new memory block

Allocations via this allocator may be slow (because RPCs to remote services may be involved) and should be used only for large blocks of several pages. If allocations/deallocations are relatively dynamic the large memory allocator should be used as backend for a block caching frontend.

Allocated blocks have valid virt->phys mappings and are physically contiguous.

dde_kit_simple_free

Free memory block via simple allocator

Argument
void * p Pointer to memory block

As in C99, if p is NULL no operation is performed.

dde_kit_simple_malloc

Allocate memory block via simple allocator

Argument
dde_kit_size_t size Block size
Return

void * Pointer to new memory block

The blocks allocated via this allocator CANNOT be used for DMA or other device operations, i.e., there exists no virt->phys mapping.

dde_kit_slab_alloc

Allocate slab in slab cache

Argument
dde_kit_slab * slab Pointer to slab cache
Return

void * Pointer to allocated slab

dde_kit_slab_destroy

Destroy slab cache

Argument
dde_kit_slab * slab Pointer to slab cache structure

dde_kit_slab_free

Deallocate slab in slab cache

Arguments
dde_kit_slab * slab Pointer to slab cache
void * objp Pointer to allocated slab

dde_kit_slab_get_data

Read user pointer from slab cache

Argument
dde_kit_slab * slab Pointer to slab cache
Return

void * Stored user pointer or 0

dde_kit_slab_set_data

Store user pointer in slab cache

Arguments
dde_kit_slab * slab Pointer to slab cache
void * data User pointer