// wrapper_env_box.h - Environment variable cache for malloc/free wrappers // Eliminates getenv() calls from malloc/free hot paths #pragma once #include typedef struct { int inited; int step_trace; // HAKMEM_STEP_TRACE (default: 0) int ld_safe_mode; // HAKMEM_LD_SAFE (default: 1) int free_wrap_trace; // HAKMEM_FREE_WRAP_TRACE (default: 0) int wrap_diag; // HAKMEM_WRAP_DIAG (default: 0) - log first few libc fallbacks } wrapper_env_cfg_t; extern wrapper_env_cfg_t g_wrapper_env; void wrapper_env_init_once(void); static inline const wrapper_env_cfg_t* wrapper_env_cfg(void) { // Constructor ensures init at library load time // This check prevents repeated initialization in multi-threaded context if (__builtin_expect(!g_wrapper_env.inited, 0)) { wrapper_env_init_once(); } return &g_wrapper_env; }