对一块扁平的内存进行划分,并用链表串起来
扁平内存的每个块结构:
typedef struct pe_pool_unit_s {
struct list_head;
int id;
key_t key;
size_t size;
} pe_pool_unit_t;
struct list_head;
INIT_LIST_HEAD(&list_head);
扁平内存基地址base_addr(可以通过各种方式得到,malloc、mmap、shmget等等,其中mmap、shm用于跨进程的共享内存)
free_pool_unit = (pe_pool_unit_t *)((void *)base_addr + off_size);
for (i = 0; i < PE_POOL_UNIT_NUM_MAX; i++) {
list_add_tail(free_pool_unit + i, &list_head);
}