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