Clean up code.

This commit is contained in:
Patrick Pelissier committed 2017-08-09 23:39:57 +02:00
1 parent 879e6da1d3
commit ee053a901a
1 file changed
+10 -11
+10 -11
View File
@@ -42,6 +42,8 @@
*/ */
// NOTE: Can not use m-list since it may be expanded from LIST_DEF // NOTE: Can not use m-list since it may be expanded from LIST_DEF
// TODO: user shall be able to cutomize the size of the segment.
#define MEMPOOL_DEF(name, type) \ #define MEMPOOL_DEF(name, type) \
\ \
typedef union M_C(name,_union_s) { \ typedef union M_C(name,_union_s) { \
@@ -64,11 +66,9 @@
M_C(name,_init)(M_C(name,_t) mem) \ M_C(name,_init)(M_C(name,_t) mem) \
{ \ { \
mem->free_list = NULL; \ mem->free_list = NULL; \
const size_t size = sizeof (M_C(name,_segment_t)); \ mem->current_segment = M_MEMORY_ALLOC(M_C(name,_segment_t)); \
mem->current_segment = M_ASSIGN_CAST(M_C(name,_segment_t)*, \
malloc (size)); \
if (mem->current_segment == NULL) { \ if (mem->current_segment == NULL) { \
M_MEMORY_FULL(size); \ M_MEMORY_FULL(sizeof (M_C(name,_segment_t))); \
return; \ return; \
} \ } \
mem->current_segment->next = NULL; \ mem->current_segment->next = NULL; \
@@ -83,9 +83,10 @@
M_C(name,_segment_t) *segment = mem->current_segment; \ M_C(name,_segment_t) *segment = mem->current_segment; \
while (segment != NULL) { \ while (segment != NULL) { \
M_C(name,_segment_t) *next = segment->next; \ M_C(name,_segment_t) *next = segment->next; \
free(segment); \ M_MEMORY_DEL (segment); \
segment = next; \ segment = next; \
} \ } \
/* Clean pointers to be safer */ \
mem->free_list = NULL; \ mem->free_list = NULL; \
mem->current_segment = NULL; \ mem->current_segment = NULL; \
} \ } \
@@ -102,12 +103,10 @@
M_C(name,_segment_t) *segment = mem->current_segment; \ M_C(name,_segment_t) *segment = mem->current_segment; \
assert(segment != NULL); \ assert(segment != NULL); \
unsigned int count = segment->count; \ unsigned int count = segment->count; \
if (count >= MEMPOOLI_MAX_PER_SEGMENT(type)) { \ if (M_UNLIKELY (count >= MEMPOOLI_MAX_PER_SEGMENT(type))) { \
const size_t s = sizeof (M_C(name,_segment_t)); \ M_C(name,_segment_t) *new_segment = M_MEMORY_ALLOC (M_C(name,_segment_t)); \
M_C(name,_segment_t) *new_segment = M_ASSIGN_CAST(M_C(name,_segment_t)*, \ if (M_UNLIKELY (new_segment == NULL)) { \
malloc (s)); \ M_MEMORY_FULL(sizeof (M_C(name,_segment_t))); \
if (new_segment == NULL) { \
M_MEMORY_FULL(s); \
return NULL; \ return NULL; \
} \ } \
new_segment->next = segment; \ new_segment->next = segment; \