5 #include <xtypes/xlock.h>
7 typedef uint64_t xpool_index;
8 typedef uint64_t xpool_data;
9 #define NoIndex ((xpool_index) -1)
14 //XPTR_TYPE(struct xpool_node) next;
15 //XPTR_TYPE(struct xpool_node) prev;
22 //XPTR_TYPE(struct xpool_node) list;
23 //XPTR_TYPE(struct xpool_node) free;
27 XPTR_TYPE(struct xpool_node) mem;
30 void xpool_init(struct xpool *xp, uint64_t size, struct xpool_node* mem);
31 void xpool_clear(struct xpool *xp, uint32_t who);
32 xpool_index xpool_add(struct xpool *xp, xpool_data data, uint32_t who);
33 xpool_index xpool_remove(struct xpool *xp, xpool_index idx, xpool_data *data, uint32_t who);
34 xpool_index xpool_peek(struct xpool *xp, xpool_data *data, uint32_t who);
35 xpool_index xpool_peek_idx(struct xpool *xp, xpool_index idx, xpool_data *data, uint32_t who);
36 xpool_index xpool_peek_and_fwd(struct xpool *xp, xpool_data *data, uint32_t who);
37 xpool_index xpool_set_idx(struct xpool *xp, xpool_index idx, xpool_data data, uint32_t who);
39 void __xpool_clear(struct xpool *xp);
40 xpool_index __xpool_add(struct xpool *xp, xpool_data data);
41 xpool_index __xpool_remove(struct xpool *xp, xpool_index idx, xpool_data *data);
42 xpool_index __xpool_peek(struct xpool *xp, xpool_data *data);
43 xpool_index __xpool_peek_idx(struct xpool *xp, xpool_index idx, xpool_data *data);
44 xpool_index __xpool_peek_and_fwd(struct xpool *xp, xpool_data *data);
45 xpool_index __xpool_set_idx(struct xpool *xp, xpool_index idx, xpool_data data);