fb_queue.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #ifndef _FB_QUEUE_H_
  2. #define _FB_QUEUE_H_
  3. #if defined (__cplusplus)
  4. extern "C"{
  5. #endif
  6. typedef struct _queue_s {
  7. struct _queue_s *prev;
  8. struct _queue_s *next;
  9. } queue_s;
  10. typedef struct _fb_queue_s {
  11. void *prev;
  12. void *next;
  13. unsigned int fb_base;
  14. } fb_queue_s;
  15. /* queue toolbox procedure */
  16. void queue_initialize (queue_s *queue);
  17. void queue_insert (queue_s *entry, queue_s *queue);
  18. void queue_delete (queue_s *entry);
  19. queue_s * queue_delete_next (queue_s *queue);
  20. int queue_empty (queue_s *queue);
  21. queue_s * queue_head (queue_s *queue);
  22. queue_s * queue_tail (queue_s *queue);
  23. queue_s * queue_next (queue_s *queue);
  24. queue_s * queue_prev (queue_s *queue);
  25. void *fb_queue_init(uint32_t fb_count, uint32_t fb_size);
  26. void fb_queue_exit(void);
  27. fb_queue_s *fb_queue_get_free_unit(void);
  28. void fb_queue_set_free(fb_queue_s *unit);
  29. void fb_queue_set_ready(fb_queue_s *unit);
  30. fb_queue_s *fb_queue_get_ready_unit(void);
  31. fb_queue_s *fb_queue_get_unit_from_base(unsigned int base);
  32. fb_queue_s *fb_queue_get_ready_unit_isr(void);
  33. void fb_queue_set_free_isr (fb_queue_s *unit);
  34. #if defined (__cplusplus)
  35. }
  36. #endif /* end of __cplusplus */
  37. #endif //_FB_QUEUE_H_