add wrapper for madvise
This commit is contained in:
		| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user