Clean up code.
This commit is contained in:
1 parent
879e6da1d3
commit
ee053a901a
1 file changed
+10
-11
+10
-11
@@ -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; \
|
||||||
|
|||||||
Reference in new issue
Block a user