lbuf_lite.h 950 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #ifndef LBUF_LITE_H
  2. #define LBUF_LITE_H
  3. #include "typedef.h"
  4. #include "list.h"
  5. #include "system/spinlock.h"
  6. struct lbuff_lite_head {
  7. int magic_a;
  8. struct list_head head;
  9. struct list_head free;
  10. spinlock_t lock;
  11. u8 align;
  12. u16 priv_len;
  13. u32 total_size;
  14. u32 last_addr;
  15. void *priv;
  16. int magic_b;
  17. };
  18. struct lbuff_lite_state {
  19. u32 avaliable;
  20. u32 fragment;
  21. u32 max_continue_len;
  22. int num;
  23. };
  24. struct lbuff_lite_head *lbuf_lite_init(void *buf, u32 len, int align, int priv_head_len);
  25. void *lbuf_lite_alloc(struct lbuff_lite_head *head, u32 len);
  26. void *lbuf_lite_realloc(void *lbuf, int size);
  27. void lbuf_lite_free(void *lbuf);
  28. u32 lbuf_lite_free_space(struct lbuff_lite_head *head);
  29. void lbuf_lite_state(struct lbuff_lite_head *head, struct lbuff_lite_state *state);
  30. void lbuf_lite_dump(struct lbuff_lite_head *head);
  31. int lbuf_lite_avaliable(struct lbuff_lite_head *head, int size);
  32. #endif