b407a65401
This checks whether or not we're reentrant using thread-local data, and, if we are, moves certain internal allocations to use arena 0 (which should be properly initialized after bootstrapping). The immediate thing this allows is spinning up threads in arena_new, which will enable spinning up background threads there.
20 lines
811 B
C
20 lines
811 B
C
#ifndef JEMALLOC_INTERNAL_HOOKS_H
|
|
#define JEMALLOC_INTERNAL_HOOKS_H
|
|
|
|
extern JEMALLOC_EXPORT void (*hooks_arena_new_hook)();
|
|
extern JEMALLOC_EXPORT void (*hooks_libc_hook)();
|
|
|
|
#define JEMALLOC_HOOK(fn, hook) ((void)(hook != NULL && (hook(), 0)), fn)
|
|
|
|
#define open JEMALLOC_HOOK(open, hooks_libc_hook)
|
|
#define read JEMALLOC_HOOK(read, hooks_libc_hook)
|
|
#define write JEMALLOC_HOOK(write, hooks_libc_hook)
|
|
#define readlink JEMALLOC_HOOK(readlink, hooks_libc_hook)
|
|
#define close JEMALLOC_HOOK(close, hooks_libc_hook)
|
|
#define creat JEMALLOC_HOOK(creat, hooks_libc_hook)
|
|
#define secure_getenv JEMALLOC_HOOK(secure_getenv, hooks_libc_hook)
|
|
/* Note that this is undef'd and re-define'd in src/prof.c. */
|
|
#define _Unwind_Backtrace JEMALLOC_HOOK(_Unwind_Backtrace, hooks_libc_hook)
|
|
|
|
#endif /* JEMALLOC_INTERNAL_HOOKS_H */
|