12345678910111213141516171819202122232425262728 |
- #pragma once
- #include "compiler.h"
- #include <stdlib.h>
- extern_c no_return __noinline alloc_panic(void);
- #define null_check(x) ({ \
- __typeof__(x) __x = (x); \
- if (unlikely(!__x)) \
- alloc_panic(); \
- __x; \
- })
- extern_c void * __safe_alloc(1) __malloc_func xmalloc(size_t);
- extern_c void * __safe_alloc(1) __malloc_func xmalloc_dma(size_t);
- extern_c void * __safe_alloc(1) __malloc_func xzalloc(size_t);
- extern_c void * __safe_alloc(1,2) __malloc_func xncalloc(size_t, size_t);
- extern_c void * __safe_alloc(1,2) __malloc_func xcalloc(size_t, size_t);
- extern_c void * __safe_alloc(2) xrealloc(void *, size_t);
- extern_c void * __safe_alloc(2,3) xnrealloc(void *, size_t, size_t);
- #define xnew(x) ((x) = xzalloc(sizeof(*(x))))
- #define xnnew(x,n) ((x) = xcalloc((n),sizeof(*(x))))
- static inline void xfree(void *p)
- {
- if (p)
- free(p);
- }
|