19 #define NODE_MAGIC 0xBAADA555 39 printf(
"\n\n\t****************** TEST 1 *****************\n\n\n");
45 printf(
"main: pool_1=%p, count=%zu, block_size=%zu\n",
46 pool_1, count, block_size);
54 printf(
"main: destroy returned: %s\n",
55 returned_bool ?
"TRUE":
"FALSE");
64 printf(
"\n\n\t****************** TEST 2 *****************\n\n\n");
70 printf(
"main: pool_1=%p, count=%zu, block_size=%zu\n",
71 pool_2, count, block_size);
78 printf(
"main: pool_2=%p, pool_2->available=%zu\n", pool_2, available);
83 printf(
"main: pointer aquired=%p\n", test_block);
86 int too_many = count + 2;
87 for(
int n = 0; n < too_many; ++n ) {
91 printf(
"main: tried to aquire %d more from pool_1\n", too_many);
94 unsigned int u_data = *(
unsigned int*) test_block;
96 printf(
"main: test_block=%p, dereferenced=%u\n", test_block, u_data);
104 printf(
"main: destroy returned: %s\n",
105 returned_bool ?
"TRUE":
"FALSE");
118 printf(
"\n\n\t****************** TEST 3 *****************\n" 119 "\t* 1. create random size memory pool\n" 120 "\t* 2. acquire all data blocks\n" 121 "\t* 3. fill all data blocks using magic value\n" 122 "\t* 4. release all data blocks back into pool\n" 123 "\t* 5. dump all data before destruct\n" 124 "\t*******************************************\n\n\n");
130 count = (rand() % 9) +1;
135 printf(
"main: pool_1=%p, count=%zu, block_size=%zu\n",
136 pool_3, count, block_size);
142 void ** magic_array = (
void **) calloc(count,
sizeof(0xBAADA555));
145 for(
int n = 0; n <
count; ++n ) {
150 for(
int n = 0; n <
count; ++n ) {
151 printf(
"main: reading: magic_array[%d]=%p, data=%X\n",
152 n, magic_array[n], *(
unsigned int*) (magic_array[n]));
156 for(
int n = 0; n <
count; ++n ) {
157 *(
unsigned int*) magic_array[n] = 0xBAADA555;
158 printf(
"main: writing: magic_array[%d]=%p, data=%X\n",
159 n, magic_array[n], *(
unsigned int*) (magic_array[n]));
163 for(
int n = 0; n <
count; ++n ) {
168 for(
int n = 0; n <
count; ++n ) {
173 for(
int n = 0; n <
count; ++n ) {
174 printf(
"main: reading: magic_array[%d]=%p, data=%X\n",
175 n, magic_array[n], *(
unsigned int*) (magic_array[n]));
184 printf(
"main: destroy returned: %s\n",
185 returned_bool ?
"TRUE":
"FALSE");
size_t memory_pool_available(memory_pool_t *mp)
memory pool availability function
bool memory_pool_release(memory_pool_t *mp, void *data)
memory pool push function
memory_pool_t * memory_pool_init(size_t count, size_t block_size)
memory pool initializer
void * memory_pool_acquire(memory_pool_t *mp)
memory pool pop function
void memory_pool_dump(memory_pool_t *mp)
memory pool dump function
bool memory_pool_destroy(memory_pool_t *mp)