1 #ifndef __LUNAIX_CAKE_H
2 #define __LUNAIX_CAKE_H
4 #include <lunaix/ds/llist.h>
6 #define PILE_NAME_MAXLEN 20
8 #define PILE_CACHELINE 1
12 struct llist_header piles;
13 struct llist_header full;
14 struct llist_header partial;
15 struct llist_header free;
17 unsigned int piece_size;
18 unsigned int cakes_count;
19 unsigned int alloced_pieces;
20 unsigned int pieces_per_cake;
21 unsigned int pg_per_cake;
22 char pile_name[PILE_NAME_MAXLEN];
25 typedef unsigned int piece_index_t;
27 #define EO_FREE_PIECE (-1)
31 struct llist_header cakes;
33 unsigned int used_pieces;
34 unsigned int next_free;
35 piece_index_t free_list[0];
42 * @param piece_size 每个蛋糕切块儿的大小
43 * @param pg_per_cake 每个蛋糕所占据的页数
44 * @return struct cake_pile*
47 cake_new_pile(char* name,
48 unsigned int piece_size,
49 unsigned int pg_per_cake,
59 cake_grab(struct cake_pile* pile);
68 cake_release(struct cake_pile* pile, void* area);
74 * @brief 统计蛋糕数量 - 问问Pinkie :D
80 #endif /* __LUNAIX_VALLOC_H */