kiba-engine
Data Structures | Macros | Typedefs | Functions | Variables
memory.c File Reference

Memory layer implementation. More...

#include <kiba/core/memory.h>
#include <kiba/platform/memory.h>
#include <kiba/core/log.h>
Include dependency graph for memory.c:

Go to the source code of this file.

Data Structures

struct  memory_page
 

Macros

#define KB_PAGE_SIZE   KB_MEGABYTE(8)
 
#define KB_MEMORY_MAX_SIZE_CLASS   4
 

Typedefs

typedef struct memory_page memory_page
 

Functions

b8 memory_initialize (void)
 
void * memory_page_allocate (usize target_num_bytes, usize *res_num_bytes)
 
void memory_page_free (void *page_data)
 
void memory_shutdown (void)
 
void * memory_allocate (usize size)
 Allocate memory. More...
 
void memory_free (void *mem, usize size)
 Free memory. More...
 
void * memory_zero (void *mem, usize size)
 Zero out memory. More...
 
void * memory_set (void *mem, u8 byte, usize size)
 Set content of memory block. More...
 
void * memory_copy (void *dst, const void *src, usize size)
 Copy memory. More...
 
void * memory_aligned_address (void *addr, usize alignment)
 Calculate properly aligned memory block address. More...
 

Variables

memory_pagepage_free_list [KB_MEMORY_MAX_SIZE_CLASS+1] = {0}
 

Detailed Description

Memory layer implementation.

See also
core/memory.h

Definition in file memory.c.

Function Documentation

◆ memory_aligned_address()

void* memory_aligned_address ( void *  addr,
usize  alignment 
)

Calculate properly aligned memory block address.

Calculate a new address which is a multiple of the alignment provided. At most alignment bytes above provided address.

Parameters
addroriginal memory block addr
alignmentnumber of bytes to be aligned by
Returns
aligned new address

Definition at line 85 of file memory.c.

◆ memory_allocate()

void* memory_allocate ( usize  size)

Allocate memory.

Parameters
sizenumber of bytes to be allocated
Returns
pointer to beginning of allocated block (zeroed out)

Definition at line 72 of file memory.c.

Here is the call graph for this function:

◆ memory_copy()

void* memory_copy ( void *  dst,
const void *  src,
usize  size 
)

Copy memory.

Parameters
dstpointer to beginning of the destination memory block
srcpointer to beginning of the source memory block
sizenumber of bytes to be copied
Returns
pointer to beginning of the destination block

Definition at line 83 of file memory.c.

Here is the call graph for this function:

◆ memory_free()

void memory_free ( void *  mem,
usize  size 
)

Free memory.

Parameters
mempointer to beginning of memory block
sizenumber of bytes to be freed

Definition at line 77 of file memory.c.

Here is the call graph for this function:

◆ memory_set()

void* memory_set ( void *  mem,
u8  byte,
usize  size 
)

Set content of memory block.

Parameters
mempointer to beginning of memory block
bytethe value to set every byte to
sizenumber of bytes to be set
Returns
pointer to beginning of the block

Definition at line 81 of file memory.c.

Here is the call graph for this function:

◆ memory_zero()

void* memory_zero ( void *  mem,
usize  size 
)

Zero out memory.

Parameters
mempointer to beginning of memory block
sizenumber of bytes to be zeroed out
Returns
pointer to beginning of zeroed block

Definition at line 79 of file memory.c.

Here is the call graph for this function: