diff options
Diffstat (limited to 'libglusterfs/src/mem-pool.h')
-rw-r--r-- | libglusterfs/src/mem-pool.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/libglusterfs/src/mem-pool.h b/libglusterfs/src/mem-pool.h index 9b8efbb95..2a064643c 100644 --- a/libglusterfs/src/mem-pool.h +++ b/libglusterfs/src/mem-pool.h @@ -22,7 +22,10 @@ #include "list.h" #include "locking.h" +#include "mem-types.h" #include <stdlib.h> +#include <inttypes.h> +#include <string.h> #define MALLOC(size) malloc(size) @@ -34,6 +37,65 @@ ptr = (void *)0xeeeeeeee; \ } +struct mem_acct { + uint32_t num_types; + struct mem_acct_rec *rec; +}; + +struct mem_acct_rec { + size_t size; + size_t max_size; + uint32_t num_allocs; + uint32_t max_num_allocs; + gf_lock_t lock; +}; + + +void * +__gf_calloc (size_t cnt, size_t size, uint32_t type); + +void * +__gf_malloc (size_t size, uint32_t type); + +void * +__gf_realloc (void *ptr, size_t size); + +int +gf_asprintf (char **string_ptr, const char *format, ...); + +#define GF_CALLOC(nmemb, size, type) __gf_calloc (nmemb, size, type) + +#define GF_MALLOC(size, type) __gf_malloc (size, type) + +#define GF_REALLOC(ptr, size) __gf_realloc (ptr, size) + +void +__gf_free (void *ptr); + + +#define GF_FREE(free_ptr) __gf_free (free_ptr); + +static inline +char * gf_strdup (const char *src) +{ + + char *dup_str = NULL; + size_t len = 0; + + len = strlen (src) + 1; + + dup_str = GF_CALLOC(1, len, gf_common_mt_strdup); + + if (!dup_str) + return NULL; + + memcpy (dup_str, src, len); + + return dup_str; +} + + + struct mem_pool { struct list_head list; int hot_count; @@ -55,4 +117,7 @@ void *mem_get (struct mem_pool *pool); void mem_pool_destroy (struct mem_pool *pool); +int gf_mem_acct_is_enabled (); +void gf_mem_acct_enable_set (); + #endif /* _MEM_POOL_H */ |