mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-07-07 03:48:42 +03:00
add support for custom commit in arena loading
This commit is contained in:
parent
d41f7267d1
commit
d1d01deea7
6 changed files with 153 additions and 74 deletions
|
@ -330,11 +330,16 @@ mi_decl_export void mi_collect_reduce(size_t target_thread_owned) mi_attr_noexce
|
|||
|
||||
|
||||
// experimental
|
||||
typedef bool (mi_cdecl mi_commit_fun_t)(bool commit, void* start, size_t size, bool* is_zero, void* user_arg);
|
||||
mi_decl_export bool mi_manage_memory(void* start, size_t size, bool is_committed, bool is_pinned, bool is_zero, int numa_node, bool exclusive,
|
||||
mi_commit_fun_t* commit_fun, void* commit_fun_arg, mi_arena_id_t* arena_id) mi_attr_noexcept;
|
||||
|
||||
mi_decl_export bool mi_arena_unload(mi_arena_id_t arena_id, void** base, size_t* accessed_size, size_t* size);
|
||||
mi_decl_export bool mi_arena_reload(void* start, size_t size, mi_arena_id_t* arena_id);
|
||||
mi_decl_export bool mi_arena_reload(void* start, size_t size, mi_commit_fun_t* commit_fun, void* commit_fun_arg, mi_arena_id_t* arena_id);
|
||||
mi_decl_export bool mi_heap_reload(mi_heap_t* heap, mi_arena_id_t arena);
|
||||
mi_decl_export void mi_heap_unload(mi_heap_t* heap);
|
||||
|
||||
|
||||
// Is a pointer contained in the given arena area?
|
||||
mi_decl_export bool mi_arena_contains(mi_arena_id_t arena_id, const void* p);
|
||||
|
||||
|
|
|
@ -150,14 +150,14 @@ bool _mi_os_decommit(void* addr, size_t size);
|
|||
bool _mi_os_protect(void* addr, size_t size);
|
||||
bool _mi_os_unprotect(void* addr, size_t size);
|
||||
bool _mi_os_purge(void* p, size_t size);
|
||||
bool _mi_os_purge_ex(void* p, size_t size, bool allow_reset, size_t stats_size);
|
||||
bool _mi_os_purge_ex(void* p, size_t size, bool allow_reset, size_t stats_size, mi_commit_fun_t* commit_fun, void* commit_fun_arg);
|
||||
bool _mi_os_commit_ex(void* addr, size_t size, bool* is_zero, size_t stat_size);
|
||||
|
||||
size_t _mi_os_secure_guard_page_size(void);
|
||||
bool _mi_os_secure_guard_page_set_at(void* addr, bool is_pinned);
|
||||
bool _mi_os_secure_guard_page_set_before(void* addr, bool is_pinned);
|
||||
bool _mi_os_secure_guard_page_reset_at(void* addr);
|
||||
bool _mi_os_secure_guard_page_reset_before(void* addr);
|
||||
bool _mi_os_secure_guard_page_set_at(void* addr, mi_memid_t memid);
|
||||
bool _mi_os_secure_guard_page_set_before(void* addr, mi_memid_t memid);
|
||||
bool _mi_os_secure_guard_page_reset_at(void* addr, mi_memid_t memid);
|
||||
bool _mi_os_secure_guard_page_reset_before(void* addr, mi_memid_t memid);
|
||||
|
||||
int _mi_os_numa_node(void);
|
||||
int _mi_os_numa_node_count(void);
|
||||
|
|
|
@ -242,6 +242,10 @@ static inline bool mi_memid_needs_no_free(mi_memid_t memid) {
|
|||
return mi_memkind_needs_no_free(memid.memkind);
|
||||
}
|
||||
|
||||
static inline mi_arena_t* mi_memid_arena(mi_memid_t memid) {
|
||||
return (memid.memkind == MI_MEM_ARENA ? memid.mem.arena.arena : NULL);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------
|
||||
// Mimalloc pages contain allocated blocks
|
||||
// ------------------------------------------------------
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue