memarea.h (1180B)
1 /* Copyright (c) 2008-2021, The Tor Project, Inc. */ 2 /* See LICENSE for licensing information */ 3 4 /** 5 * \file memarea.h 6 * 7 * \brief Header for memarea.c 8 **/ 9 10 #ifndef TOR_MEMAREA_H 11 #define TOR_MEMAREA_H 12 13 #include <stddef.h> 14 15 typedef struct memarea_t memarea_t; 16 17 memarea_t *memarea_new(void); 18 void memarea_drop_all_(memarea_t *area); 19 /** @copydoc memarea_drop_all_ 20 * 21 * Additionally, set <b>area</b> to NULL. */ 22 #define memarea_drop_all(area) \ 23 do { \ 24 memarea_drop_all_(area); \ 25 (area) = NULL; \ 26 } while (0) 27 void memarea_clear(memarea_t *area); 28 int memarea_owns_ptr(const memarea_t *area, const void *ptr); 29 void *memarea_alloc(memarea_t *area, size_t sz); 30 void *memarea_alloc_zero(memarea_t *area, size_t sz); 31 void *memarea_memdup(memarea_t *area, const void *s, size_t n); 32 char *memarea_strdup(memarea_t *area, const char *s); 33 char *memarea_strndup(memarea_t *area, const char *s, size_t n); 34 void memarea_get_stats(memarea_t *area, 35 size_t *allocated_out, size_t *used_out); 36 void memarea_assert_ok(memarea_t *area); 37 38 #endif /* !defined(TOR_MEMAREA_H) */