1 #ifndef __LUNAIX_SLAB_H
2 #define __LUNAIX_SLAB_H
4 #include <lunaix/ds/llist.h>
6 #define PILE_NAME_MAXLEN 20
10 struct llist_header piles;
11 struct llist_header full;
12 struct llist_header partial;
13 struct llist_header free;
14 unsigned int piece_size;
15 unsigned int cakes_count;
16 unsigned int alloced_pieces;
17 unsigned int pieces_per_cake;
18 unsigned int pg_per_cake;
19 char pile_name[PILE_NAME_MAXLEN];
22 typedef unsigned int piece_index_t;
24 #define EO_FREE_PIECE (-1)
28 struct llist_header cakes;
30 unsigned int used_pieces;
31 unsigned int next_free;
32 piece_index_t free_list[0];
39 * @param piece_size 每个蛋糕上可以被切分的大小
40 * @param pg_per_cake 每个蛋糕所占据的页数
41 * @return struct cake_pile*
44 cake_new_pile(char* name, unsigned int piece_size, unsigned int pg_per_cake);
53 cake_grab(struct cake_pile* pile);
62 cake_release(struct cake_pile* pile, void* area);
68 * @brief 统计蛋糕数量 - 问问Pinkie :D
74 #endif /* __LUNAIX_VALLOC_H */