|
|
|
@ -1,6 +1,10 @@
|
|
|
|
|
|
|
|
|
|
#include <lighttpd/mempool.h>
|
|
|
|
|
|
|
|
|
|
#ifdef WITH_PROFILER
|
|
|
|
|
#include <lighttpd/profiler.h>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* available #defines:
|
|
|
|
|
* - MEMPOOL_MALLOC
|
|
|
|
@ -166,10 +170,17 @@ static inline void* mp_alloc_page(gsize size) {
|
|
|
|
|
g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes with mmap", G_STRLOC, size);
|
|
|
|
|
}
|
|
|
|
|
# else
|
|
|
|
|
if (G_UNLIKELY(NULL == (ptr = malloc(size)))) {
|
|
|
|
|
if (G_UNLIKELY(NULL == (ptr = g_malloc(size)))) {
|
|
|
|
|
g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes", G_STRLOC, size);
|
|
|
|
|
}
|
|
|
|
|
# endif
|
|
|
|
|
|
|
|
|
|
#ifdef WITH_PROFILER
|
|
|
|
|
if (G_UNLIKELY(li_profiler_enabled)) {
|
|
|
|
|
li_profiler_hashtable_insert((gpointer)ptr, size);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
return ptr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -178,8 +189,14 @@ static inline void mp_free_page(const void *ptr, gsize size) {
|
|
|
|
|
# ifdef MAP_ANON
|
|
|
|
|
munmap((void*) ptr, size);
|
|
|
|
|
# else
|
|
|
|
|
free(ptr);
|
|
|
|
|
g_free(ptr);
|
|
|
|
|
# endif
|
|
|
|
|
|
|
|
|
|
#ifdef WITH_PROFILER
|
|
|
|
|
if (G_UNLIKELY(li_profiler_enabled)) {
|
|
|
|
|
li_profiler_hashtable_remove((gpointer)ptr);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* how many chunks in an arey for a chunk size? */
|
|
|
|
|