00001
00002
00003
00004
00005
00006
00007 #ifndef EMEMOA_MEMPOOL_UNKNOWN_SIZE_H__
00008 # define EMEMOA_MEMPOOL_UNKNOWN_SIZE_H__
00009
00010
00011
00012
00013
00014
00015 #include "config.h"
00016 #include "ememoa_mempool.h"
00017 #include "ememoa_mempool_struct.h"
00018
00019 static const unsigned int default_map_size_count[] =
00020 {
00021 16, 9,
00022 32, 8,
00023 64, 7,
00024 128, 6,
00025 256, 5,
00026 512, 5,
00027 1024, 5,
00028 };
00029
00030 int ememoa_mempool_unknown_size_init (struct ememoa_mempool_unknown_size_s *memory,
00031 unsigned int map_items_count,
00032 const unsigned int *map_size_count,
00033 unsigned int options,
00034 const struct ememoa_mempool_desc_s *desc);
00035
00036 int ememoa_mempool_unknown_size_clean (struct ememoa_mempool_unknown_size_s *memory);
00037
00038 int ememoa_mempool_unknown_size_free_all_objects (struct ememoa_mempool_unknown_size_s *memory);
00039
00040 int ememoa_mempool_unknown_size_push_object (struct ememoa_mempool_unknown_size_s *memory,
00041 void *ptr);
00042
00043 void* ememoa_mempool_unknown_size_pop_object (struct ememoa_mempool_unknown_size_s *memory,
00044 unsigned int size);
00045
00046 #ifdef DEBUG
00047 void ememoa_mempool_unknown_size_display_statistic (struct ememoa_mempool_unknown_size_s *memory);
00048 #else
00049 #define ememoa_mempool_unknown_size_display_statistic(Memory) ;
00050 #endif
00051
00052 int ememoa_mempool_unknown_size_garbage_collect (struct ememoa_mempool_unknown_size_s *memory);
00053
00054 int ememoa_mempool_unknown_size_walk_over (struct ememoa_mempool_unknown_size_s *memory,
00055 ememoa_fctl fctl,
00056 void *data);
00057
00058 #endif
00059