Dynamic Memory Management

Description

  • XWOS does not use the dynamic memory management algorithm provided by picolibc. It uses a memory pool algorithm:

Porting Method

  • Source path: xwmd/libc/picolibcac/mem.c
  • Rewrite picolibc’s functions:
void * malloc(size_t n);
void * realloc(void * p, size_t n);
void * calloc(size_t elem_nr, size_t elem_sz);
void * memalign(size_t alignment, size_t n);
void * valloc(size_t n);
void * pvalloc(size_t n);
void free(void * p);
int getpagesize(void);
  • Functions that do not need rewriting:
int posix_memalign(void ** memptr, size_t align, size_t size); // picolibc provides an implementation based on memalign
void * aligned_alloc(size_t alignment, size_t size); // picolibc provides an implementation based on memalign
  • Functions not yet implemented:
    • mallopt
    • malloc_usable_size
    • malloc_stats
    • mallinfo