📄 in_malloc.h
字号:
#include "rtosstub.h"
#define MALLERR(a) if (!__no_malloc_warning) _lib_lib_error(2,a,sizeof(a)-1)
#define SBUSY 0x42555359 /* 'BUSY' */
#define SFREE 0x46524545 /* 'FREE' */
#define SDUMY 0x44554d59 /* 'DUMY' */
#define BOFFSET offsetof(struct node,u.buf)
#define ALIGN BOFFSET
#define MINSZ (sizeof(struct node)-BOFFSET)
#define DOALIGN(a,b) (((a) + (b)-1) & ~((b)-1))
#define ISBUSY(p) ((p)->status == SBUSY)
#define ISFREE(p) ((p)->status == SFREE)
#define ISDUMMY(p) ((p)->status == SDUMY)
#define SETBUSY(p) ((p)->status = SBUSY)
#define SETFREE(p) ((p)->status = SFREE)
#define SETDUMMY(p) ((p)->status = SDUMY)
#define SETCLEAR(p) ((p)->status = 0)
#define NEXT(p) ((p)->next)
#define SIZE(p) ((char *)(p->next)-p->u.buf)
#define SIZE2(p,n) ((char *)(n)-p->u.buf)
typedef struct node *NP;
struct node {
NP next; /* next node in mem BOOST_PP_TUPLE_TO_LIST */
long status; /* status number for checking */
union {
char buf[4]; /* buffer if BUSY (4 is a dummy)*/
struct {
NP next;/* free list */
NP prev;
} free;
long double align; /* use correct alignment */
} u;
};
#if 1 /* make Delete a macro */
#define Delete(ptr) { \
ptr->u.free.prev->u.free.next = ptr->u.free.next; \
ptr->u.free.next->u.free.prev = ptr->u.free.prev; \
}
#else
static Delete(NP ptr) /* Delete block from freetab */
{
ptr->u.free.prev->u.free.next = ptr->u.free.next;
ptr->u.free.next->u.free.prev = ptr->u.free.prev;
}
#endif
typedef struct { /* mallopt junk */
int avail; /* total available blocks */
int used; /* total used blocks */
} __m_hold;
extern __m_hold *__small_mall ;
extern int __m_mxfast; /* max size for "fast" allocation */
extern int __m_grain; /* alignment of m_mxfast */
extern int __m_nlblks; /* number of blocks in each holding blk */
extern int __m_keep; /* "safe" malloc */
extern struct node __freeptr;
extern long __brk_tot;
extern NP __brk_start;
extern int __malloc_check ;
extern int __no_malloc_warning;
extern _lib_mutex __malloc_mutex;
extern bool __malloc_check_fn(void);
extern void __mallopt_fix(size_t size, int inc_flag) ;
extern void __insert(NP ptr) ; /* insert block in freetab */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -