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 9b8efbb9573..2a064643c7a 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 */  | 
