VSF Documented
Data Structures | Macros | Typedefs | Functions | Variables
vsf_heap.c File Reference
#include "service/vsf_service_cfg.h"
#include "vsf_heap.h"
#include "utilities/vsf_utilities.h"
#include "kernel/vsf_kernel.h"
#include "../pool/vsf_pool.h"

Data Structures

struct  vsf_heap_mcb_t
 

Macros

#define __VSF_HEAP_CLASS_IMPLEMENT
 
#define VSF_HEAP_CFG_MCB_ALIGN_BIT   2
 
#define VSF_HEAP_CFG_MCB_ALIGN   (1 << VSF_HEAP_CFG_MCB_ALIGN_BIT)
 
#define VSF_HEAP_CFG_MCB_OFFSET_TYPE   uint16_t
 
#define VSF_HEAP_MCB_MAGIC   0x1ea01ea0
 
#define VSF_HEAP_CFG_FREELIST_NUM   1
 
#define VSF_HEAP_CFG_PROTECT_LEVEL   scheduler
 
#define __vsf_heap_protect   vsf_protect(VSF_HEAP_CFG_PROTECT_LEVEL)
 
#define __vsf_heap_unprotect   vsf_unprotect(VSF_HEAP_CFG_PROTECT_LEVEL)
 
#define __vsf_heap_mcb_get_size(__mcb)   ((__mcb)->linear.next << VSF_HEAP_CFG_MCB_ALIGN_BIT)
 
#define __vsf_heap_mcb_get_prev_size(__mcb)   ((__mcb)->linear.prev << VSF_HEAP_CFG_MCB_ALIGN_BIT)
 

Typedefs

typedef struct vsf_heap_mcb_t vsf_heap_mcb_t
 

Functions

vsf_dlist_tvsf_heap_get_freelist (vsf_dlist_t *freelist, uint_fast8_t freelist_num, uint_fast32_t size)
 
void __vsf_heap_add_buffer (vsf_heap_t *heap, uint8_t *buffer, uint_fast32_t size)
 
void * __vsf_heap_malloc_aligned (vsf_heap_t *heap, uint_fast32_t size, uint_fast32_t alignment)
 
void * __vsf_heap_realloc_aligned (vsf_heap_t *heap, void *buffer, uint_fast32_t size, uint_fast32_t alignment)
 
uint_fast32_t __vsf_heap_size (vsf_heap_t *heap, void *buffer)
 
void __vsf_heap_free (vsf_heap_t *heap, void *buffer)
 
void __vsf_heap_statistics (vsf_heap_t *heap, vsf_heap_statistics_t *statistics)
 
void vsf_heap_statistics (vsf_heap_statistics_t *statistics)
 
void * vsf_heap_malloc_aligned_imp (uint_fast32_t size, uint_fast32_t alignment)
 
void * vsf_heap_malloc_imp (uint_fast32_t size)
 
void * vsf_heap_realloc_aligned_imp (void *buffer, uint_fast32_t size, uint_fast32_t alignment)
 
void * vsf_heap_realloc_imp (void *buffer, uint_fast32_t size)
 
uint_fast32_t vsf_heap_size (uint8_t *buffer)
 
void vsf_heap_free_imp (void *buffer)
 
void * vsf_heap_calloc (uint_fast32_t n, uint_fast32_t size)
 
char * vsf_heap_strdup (const char *str)
 

Variables

const i_heap_t VSF_HEAP
 

Macro Definition Documentation

◆ __VSF_HEAP_CLASS_IMPLEMENT

#define __VSF_HEAP_CLASS_IMPLEMENT

◆ VSF_HEAP_CFG_MCB_ALIGN_BIT

#define VSF_HEAP_CFG_MCB_ALIGN_BIT   2

◆ VSF_HEAP_CFG_MCB_ALIGN

#define VSF_HEAP_CFG_MCB_ALIGN   (1 << VSF_HEAP_CFG_MCB_ALIGN_BIT)

◆ VSF_HEAP_CFG_MCB_OFFSET_TYPE

#define VSF_HEAP_CFG_MCB_OFFSET_TYPE   uint16_t

◆ VSF_HEAP_MCB_MAGIC

#define VSF_HEAP_MCB_MAGIC   0x1ea01ea0

◆ VSF_HEAP_CFG_FREELIST_NUM

#define VSF_HEAP_CFG_FREELIST_NUM   1

◆ VSF_HEAP_CFG_PROTECT_LEVEL

#define VSF_HEAP_CFG_PROTECT_LEVEL   scheduler

◆ __vsf_heap_protect

#define __vsf_heap_protect   vsf_protect(VSF_HEAP_CFG_PROTECT_LEVEL)

◆ __vsf_heap_unprotect

#define __vsf_heap_unprotect   vsf_unprotect(VSF_HEAP_CFG_PROTECT_LEVEL)

◆ __vsf_heap_mcb_get_size

#define __vsf_heap_mcb_get_size (   __mcb)    ((__mcb)->linear.next << VSF_HEAP_CFG_MCB_ALIGN_BIT)

◆ __vsf_heap_mcb_get_prev_size

#define __vsf_heap_mcb_get_prev_size (   __mcb)    ((__mcb)->linear.prev << VSF_HEAP_CFG_MCB_ALIGN_BIT)

Typedef Documentation

◆ vsf_heap_mcb_t

Function Documentation

◆ vsf_heap_get_freelist()

vsf_dlist_t * vsf_heap_get_freelist ( vsf_dlist_t freelist,
uint_fast8_t  freelist_num,
uint_fast32_t  size 
)
extern

◆ __vsf_heap_add_buffer()

void __vsf_heap_add_buffer ( vsf_heap_t heap,
uint8_t buffer,
uint_fast32_t  size 
)

◆ __vsf_heap_malloc_aligned()

void * __vsf_heap_malloc_aligned ( vsf_heap_t heap,
uint_fast32_t  size,
uint_fast32_t  alignment 
)

◆ __vsf_heap_realloc_aligned()

void * __vsf_heap_realloc_aligned ( vsf_heap_t heap,
void *  buffer,
uint_fast32_t  size,
uint_fast32_t  alignment 
)

◆ __vsf_heap_size()

uint_fast32_t __vsf_heap_size ( vsf_heap_t heap,
void *  buffer 
)

◆ __vsf_heap_free()

void __vsf_heap_free ( vsf_heap_t heap,
void *  buffer 
)

◆ __vsf_heap_statistics()

void __vsf_heap_statistics ( vsf_heap_t heap,
vsf_heap_statistics_t statistics 
)

◆ vsf_heap_statistics()

void vsf_heap_statistics ( vsf_heap_statistics_t statistics)

◆ vsf_heap_malloc_aligned_imp()

void * vsf_heap_malloc_aligned_imp ( uint_fast32_t  size,
uint_fast32_t  alignment 
)

◆ vsf_heap_malloc_imp()

void * vsf_heap_malloc_imp ( uint_fast32_t  size)

◆ vsf_heap_realloc_aligned_imp()

void * vsf_heap_realloc_aligned_imp ( void *  buffer,
uint_fast32_t  size,
uint_fast32_t  alignment 
)

◆ vsf_heap_realloc_imp()

void * vsf_heap_realloc_imp ( void *  buffer,
uint_fast32_t  size 
)

◆ vsf_heap_size()

uint_fast32_t vsf_heap_size ( uint8_t buffer)

◆ vsf_heap_free_imp()

void vsf_heap_free_imp ( void *  buffer)

◆ vsf_heap_calloc()

void * vsf_heap_calloc ( uint_fast32_t  n,
uint_fast32_t  size 
)

◆ vsf_heap_strdup()

char * vsf_heap_strdup ( const char *  str)

Variable Documentation

◆ VSF_HEAP

const i_heap_t VSF_HEAP
Initial value:
= {
.MallocAligned = &vsf_heap_malloc_aligned_imp,
.Malloc = &vsf_heap_malloc_imp,
.ReallocAligned = &vsf_heap_realloc_aligned_imp,
.Realloc = &vsf_heap_realloc_imp,
.Statistics = &vsf_heap_statistics,
}
void * vsf_heap_malloc_aligned_imp(uint_fast32_t size, uint_fast32_t alignment)
Definition vsf_heap.c:593
void vsf_heap_free_imp(void *buffer)
Definition vsf_heap.c:676
void vsf_heap_statistics(vsf_heap_statistics_t *statistics)
Definition vsf_heap.c:580
void * vsf_heap_realloc_imp(void *buffer, uint_fast32_t size)
Definition vsf_heap.c:642
void * vsf_heap_realloc_aligned_imp(void *buffer, uint_fast32_t size, uint_fast32_t alignment)
Definition vsf_heap.c:619
void * vsf_heap_malloc_imp(uint_fast32_t size)
Definition vsf_heap.c:606