add wrapper for madvise
This commit is contained in:
parent
73b78a8adb
commit
b84af9b499
@ -1773,7 +1773,7 @@ EXPORT int h_malloc_trim(UNUSED size_t pad) {
|
|||||||
for (size_t i = 0; i < slab_quarantine_random_length; i++) {
|
for (size_t i = 0; i < slab_quarantine_random_length; i++) {
|
||||||
void *p = c->quarantine_random[i];
|
void *p = c->quarantine_random[i];
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
madvise(p, size, MADV_DONTNEED);
|
memory_purge(p, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1783,7 +1783,7 @@ EXPORT int h_malloc_trim(UNUSED size_t pad) {
|
|||||||
for (size_t i = 0; i < slab_quarantine_queue_length; i++) {
|
for (size_t i = 0; i < slab_quarantine_queue_length; i++) {
|
||||||
void *p = c->quarantine_queue[i];
|
void *p = c->quarantine_queue[i];
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
madvise(p, size, MADV_DONTNEED);
|
memory_purge(p, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
8
memory.c
8
memory.c
@ -92,6 +92,14 @@ int memory_remap_fixed(void *old, size_t old_size, void *new, size_t new_size) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int memory_purge(void *ptr, size_t size) {
|
||||||
|
int ret = madvise(ptr, size, MADV_DONTNEED);
|
||||||
|
if (unlikely(ret) && errno != ENOMEM) {
|
||||||
|
fatal_error("non-ENOMEM MADV_DONTNEED madvise failure");
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void memory_set_name(UNUSED void *ptr, UNUSED size_t size, UNUSED const char *name) {
|
void memory_set_name(UNUSED void *ptr, UNUSED size_t size, UNUSED const char *name) {
|
||||||
#ifdef LABEL_MEMORY
|
#ifdef LABEL_MEMORY
|
||||||
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, ptr, size, name);
|
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, ptr, size, name);
|
||||||
|
1
memory.h
1
memory.h
@ -19,6 +19,7 @@ int memory_protect_rw_metadata(void *ptr, size_t size);
|
|||||||
int memory_remap(void *old, size_t old_size, size_t new_size);
|
int memory_remap(void *old, size_t old_size, size_t new_size);
|
||||||
int memory_remap_fixed(void *old, size_t old_size, void *new, size_t new_size);
|
int memory_remap_fixed(void *old, size_t old_size, void *new, size_t new_size);
|
||||||
#endif
|
#endif
|
||||||
|
int memory_purge(void *ptr, size_t size);
|
||||||
void memory_set_name(void *ptr, size_t size, const char *name);
|
void memory_set_name(void *ptr, size_t size, const char *name);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user