#ifndef __SMCC_RT_ALLOC_H__ #define __SMCC_RT_ALLOC_H__ #include "std/rt_api_def.h" // Simple or Static Allocator void* salloc_alloc(int size); void* salloc_realloc(void* ptr, int size); void salloc_free(void* ptr); typedef struct fixed_alloc { void* page_list; void* free_list; int block_size; int blocks_per_page; } fixed_alloc_t; void falloc_init(fixed_alloc_t* fa, int fixed_size, int init_size); void* falloc_alloc(fixed_alloc_t* fa); void falloc_free(fixed_alloc_t* fa, void* ptr); void falloc_destroy(fixed_alloc_t* fa); typedef struct long_block { struct long_block* next; int used; } long_block_t; typedef struct long_alloc { long_block_t* current; int block_size; } long_alloc_t; void lalloc_init(long_alloc_t* la); void* lalloc_alloc(long_alloc_t* la, int size); void lalloc_free(long_alloc_t* la, void* ptr); void lalloc_destroy(long_alloc_t* la); #endif