arena_list_t* anew_list(void *data) { /*if(arena == NULL){ // printf("should make new arena\n"); arena = create_arena(4096*10000); }*/ arena_list_t* list; //printf("should malloc arena\n"); //list = amalloc(arena,sizeof(arena_list_t)); if(free_head == NULL || empty(free_head)){ list = malloc(sizeof(arena_list_t)); }else{ list = free_head->succ; take_out(list); } if (list == NULL) { fprintf(stderr, "out of memory in %s\n", __func__); exit(1); } list->succ = list->pred = list; list->data = data; return list; }
void* take_out_first(list_t* list) { list_t* succ; void* data; if (list->succ->data == NULL) return NULL; data = list->succ->data; succ = list->succ; take_out(succ); free(succ); return data; }