X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/09a115a4c07e26b3a978c693c0d6d17abea80479..f09e806d5032150564df39a2f7b1192c4d84cf15:/lunaix-os/includes/lunaix/mm/cake.h diff --git a/lunaix-os/includes/lunaix/mm/cake.h b/lunaix-os/includes/lunaix/mm/cake.h index 0312c45..18d67e0 100644 --- a/lunaix-os/includes/lunaix/mm/cake.h +++ b/lunaix-os/includes/lunaix/mm/cake.h @@ -7,24 +7,30 @@ #define PILE_CACHELINE 1 +struct cake_pile; + +typedef void (*pile_cb)(struct cake_pile*, void*); + struct cake_pile { struct llist_header piles; struct llist_header full; struct llist_header partial; struct llist_header free; - unsigned int offset; - unsigned int piece_size; - unsigned int cakes_count; - unsigned int alloced_pieces; - unsigned int pieces_per_cake; - unsigned int pg_per_cake; + u32_t offset; + u32_t piece_size; + u32_t cakes_count; + u32_t alloced_pieces; + u32_t pieces_per_cake; + u32_t pg_per_cake; char pile_name[PILE_NAME_MAXLEN]; + + pile_cb ctor; }; typedef unsigned int piece_index_t; -#define EO_FREE_PIECE (-1) +#define EO_FREE_PIECE ((u32_t)-1) struct cake_s { @@ -49,6 +55,9 @@ cake_new_pile(char* name, unsigned int pg_per_cake, int options); +void +cake_set_constructor(struct cake_pile* pile, pile_cb ctor); + /** * @brief 拿一块儿蛋糕 * @@ -70,11 +79,12 @@ cake_release(struct cake_pile* pile, void* area); void cake_init(); -/** - * @brief 统计蛋糕数量 - 问问Pinkie :D - * - */ void -cake_stats(); +cake_export(); + +/********** some handy constructor ***********/ + +void +cake_ctor_zeroing(struct cake_pile* pile, void* piece); #endif /* __LUNAIX_VALLOC_H */