1 /******************************************************************************/
2 #ifdef JEMALLOC_H_TYPES
4 typedef struct quarantine_obj_s quarantine_obj_t
;
5 typedef struct quarantine_s quarantine_t
;
7 /* Default per thread quarantine size if valgrind is enabled. */
8 #define JEMALLOC_VALGRIND_QUARANTINE_DEFAULT (ZU(1) << 24)
10 #endif /* JEMALLOC_H_TYPES */
11 /******************************************************************************/
12 #ifdef JEMALLOC_H_STRUCTS
14 struct quarantine_obj_s
{
23 #define LG_MAXOBJS_INIT 10
25 quarantine_obj_t objs
[1]; /* Dynamically sized ring buffer. */
28 #endif /* JEMALLOC_H_STRUCTS */
29 /******************************************************************************/
30 #ifdef JEMALLOC_H_EXTERNS
32 void quarantine_alloc_hook_work(tsd_t
*tsd
);
33 void quarantine(tsd_t
*tsd
, void *ptr
);
34 void quarantine_cleanup(tsd_t
*tsd
);
36 #endif /* JEMALLOC_H_EXTERNS */
37 /******************************************************************************/
38 #ifdef JEMALLOC_H_INLINES
40 #ifndef JEMALLOC_ENABLE_INLINE
41 void quarantine_alloc_hook(void);
44 #if (defined(JEMALLOC_ENABLE_INLINE) || defined(JEMALLOC_QUARANTINE_C_))
45 JEMALLOC_ALWAYS_INLINE
void
46 quarantine_alloc_hook(void)
50 assert(config_fill
&& opt_quarantine
);
53 if (tsd_quarantine_get(tsd
) == NULL
)
54 quarantine_alloc_hook_work(tsd
);
58 #endif /* JEMALLOC_H_INLINES */
59 /******************************************************************************/