23 lines
935 B
C
23 lines
935 B
C
|
|
// madvise_guard_box.h - Box: Safe madvise wrapper with DSO guard
|
||
|
|
// Responsibility: guard madvise() against DSO/text pointers and handle ENOMEM once
|
||
|
|
// Controls: HAKMEM_SS_MADVISE_GUARD (default: on), HAKMEM_SS_MADVISE_GUARD_QUIET
|
||
|
|
#ifndef HAKMEM_MADVISE_GUARD_BOX_H
|
||
|
|
#define HAKMEM_MADVISE_GUARD_BOX_H
|
||
|
|
|
||
|
|
#include <stddef.h>
|
||
|
|
|
||
|
|
// Returns 1 when guard is enabled (default), 0 when disabled via env.
|
||
|
|
int ss_madvise_guard_enabled(void);
|
||
|
|
|
||
|
|
// Returns 1 when guard logging is silenced (HAKMEM_SS_MADVISE_GUARD_QUIET != 0).
|
||
|
|
int ss_madvise_guard_quiet_logs(void);
|
||
|
|
|
||
|
|
// Guarded madvise:
|
||
|
|
// - Skips DSO/text addresses (dladdr hit) to avoid touching .fini_array
|
||
|
|
// - ENOMEM: disables future madvise calls (soft fail)
|
||
|
|
// - EINVAL: returns -1 so caller can honor STRICT mode
|
||
|
|
// - Other errors: increments counters, returns 0
|
||
|
|
int ss_os_madvise_guarded(void* ptr, size_t len, int advice, const char* where);
|
||
|
|
|
||
|
|
#endif // HAKMEM_MADVISE_GUARD_BOX_H
|