#define disable_expand(M) ((M)->mflags |= USE_NOEXPAND_BIT)
#define use_trace(M) ((M)->mflags & USE_TRACE_BIT)
#define enable_trace(M) ((M)->mflags |= USE_TRACE_BIT)
-#define disable_trace(M) ((M)->mflags |= USE_TRACE_BIT)
+#define disable_trace(M) ((M)->mflags &= ~USE_TRACE_BIT)
#define set_lock(M,L)\
((M)->mflags = (L)?\
/* -------------------------- mspace management -------------------------- */
/* Initialize top chunk and its size */
+CLIB_NOSANITIZE_ADDR
static void init_top(mstate m, mchunkptr p, size_t psize) {
/* Ensure alignment */
size_t offset = align_offset(chunk2mem(p));
#endif /* PROCEED_ON_ERROR */
/* Allocate chunk and prepend remainder with chunk in successor base. */
+CLIB_NOSANITIZE_ADDR
static void* prepend_alloc(mstate m, char* newbase, char* oldbase,
size_t nb) {
mchunkptr p = align_as_chunk(newbase);
}
/* Add a segment to hold a new noncontiguous region */
+CLIB_NOSANITIZE_ADDR
static void add_segment(mstate m, char* tbase, size_t tsize, flag_t mmapped) {
/* Determine locations and sizes of segment, fenceposts, old top */
char* old_top = (char*)m->top;
/* -------------------------- System allocation -------------------------- */
/* Get memory from system using MORECORE or MMAP */
+CLIB_NOSANITIZE_ADDR
static void* sys_alloc(mstate m, size_t nb) {
char* tbase = CMFAIL;
size_t tsize = 0;
return ret;
}
+CLIB_NOSANITIZE_ADDR
size_t destroy_mspace(mspace msp) {
size_t freed = 0;
mstate ms = (mstate)msp;
*sizep = this_seg->size;
}
-CLIB_NOSANITIZE_ADDR
+CLIB_NOSANITIZE_ADDR __clib_export
int mspace_is_heap_object (mspace msp, void *p)
{
msegment *this_seg;
return 0;
}
-CLIB_NOSANITIZE_ADDR
+CLIB_NOSANITIZE_ADDR __clib_export
void* mspace_get_aligned (mspace msp,
unsigned long n_user_data_bytes,
unsigned long align,
* the base of the dlmalloc object
*/
n_user_data_bytes += sizeof(unsigned);
-
- /*
- * Alignment requests less than the size of an mmx vector are ignored
- */
- if (align < sizeof (uword)) {
- rv = mspace_malloc (msp, n_user_data_bytes);
- if (rv == 0)
- return rv;
-
- if (use_trace(ms)) {
- mchunkptr p = mem2chunk(rv);
- size_t psize = chunksize(p);
-
- mheap_get_trace ((unsigned long)rv + sizeof (unsigned), psize);
- }
-
- wwp = (unsigned *)rv;
- *wwp = 0;
- rv += sizeof (unsigned);
-
- return rv;
- }
+ align = align < MALLOC_ALIGNMENT ? MALLOC_ALIGNMENT : align;
/*
* Alignment requests greater than 4K must be at offset zero,
return (void *) searchp;
}
-CLIB_NOSANITIZE_ADDR
+CLIB_NOSANITIZE_ADDR __clib_export
void mspace_put (mspace msp, void *p_arg)
{
char *object_header;
mspace_free (msp, p_arg);
}
-CLIB_NOSANITIZE_ADDR
+CLIB_NOSANITIZE_ADDR __clib_export
size_t mspace_usable_size_with_delta (const void *p)
{
size_t usable_size;