| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 
							- #define MODULE "xalloc"
 
- #include "compiler.h"
 
- #include "xmalloc.h"
 
- #include "common.h"
 
- #include <assert.h>
 
- no_return __noinline alloc_panic(void)
 
- {
 
-     assert(!"FATAL: OUT OF MEMORY!!!");
 
-     while (1)
 
- 	suspend();
 
- }
 
- void *xrealloc(void *ptr, size_t len)
 
- {
 
-     return null_check(realloc(ptr, Max(len,1)));
 
- }
 
- void *xmalloc(size_t len)
 
- {
 
-     return null_check(malloc(Max(len,1)));
 
- }
 
- void *xmalloc_dma(size_t len)
 
- {
 
-     return null_check(heap_caps_malloc(Max(len,1), MALLOC_CAP_DMA));
 
- }
 
- void *xzalloc(size_t len)
 
- {
 
-     return null_check(calloc(Max(len,1), 1));
 
- }
 
- static inline size_t nsize(size_t nmemb, size_t size)
 
- {
 
-     size2_t len = nmemb * size;
 
-     if (unlikely(len >> CHAR_BIT*sizeof(size_t)))
 
- 	alloc_panic();
 
-     return (size_t)len;
 
- }
 
- void *xnmalloc(size_t nmemb, size_t size)
 
- {
 
-     return xmalloc(nsize(nmemb, size));
 
- }
 
- void *xcalloc(size_t nmemb, size_t size)
 
- {
 
-     return xzalloc(nsize(nmemb, size));
 
- }
 
- void *xnrealloc(void *ptr, size_t nmemb, size_t size)
 
- {
 
-     return xrealloc(ptr, nsize(nmemb, size));
 
- }
 
 
  |