bh_queue.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * Copyright (C) 2019 Intel Corporation. All rights reserved.
  3. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. */
  5. #ifndef _BH_QUEUE_H
  6. #define _BH_QUEUE_H
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. #include "bh_types.h" /*For bool type*/
  11. #include "bh_platform.h"
  12. struct _bh_queue_node;
  13. typedef struct _bh_queue_node * bh_message_t;
  14. struct bh_queue;
  15. typedef struct bh_queue bh_queue;
  16. typedef void (*bh_queue_handle_msg_callback)(void *message, void *arg);
  17. #define bh_queue_malloc bh_malloc
  18. #define bh_queue_free bh_free
  19. #define bh_queue_mutex korp_mutex
  20. #define bh_queue_sem korp_sem
  21. #define bh_queue_cond korp_cond
  22. #define bh_queue_mutex_init vm_mutex_init
  23. #define bh_queue_mutex_destroy vm_mutex_destroy
  24. #define bh_queue_mutex_lock vm_mutex_lock
  25. #define bh_queue_mutex_unlock vm_mutex_unlock
  26. #define bh_queue_sem_init vm_sem_init
  27. #define bh_queue_sem_destroy vm_sem_destroy
  28. #define bh_queue_sem_wait vm_sem_wait
  29. #define bh_queue_sem_reltimedwait vm_sem_reltimedwait
  30. #define bh_queue_sem_post vm_sem_post
  31. #define bh_queue_cond_init vm_cond_init
  32. #define bh_queue_cond_destroy vm_cond_destroy
  33. #define bh_queue_cond_wait vm_cond_wait
  34. #define bh_queue_cond_timedwait vm_cond_reltimedwait
  35. #define bh_queue_cond_signal vm_cond_signal
  36. #define bh_queue_cond_broadcast vm_cond_broadcast
  37. typedef void (*bh_msg_cleaner)(void *msg);
  38. bh_queue *
  39. bh_queue_create();
  40. void
  41. bh_queue_destroy(bh_queue *queue);
  42. char * bh_message_payload(bh_message_t message);
  43. uint32 bh_message_payload_len(bh_message_t message);
  44. int bh_message_type(bh_message_t message);
  45. bh_message_t bh_new_msg(unsigned short tag, void *body, unsigned int len,
  46. void * handler);
  47. void bh_free_msg(bh_message_t msg);
  48. bool bh_post_msg(bh_queue *queue, unsigned short tag, void *body,
  49. unsigned int len);
  50. bool bh_post_msg2(bh_queue *queue, bh_message_t msg);
  51. bh_message_t bh_get_msg(bh_queue *queue, int timeout);
  52. unsigned
  53. bh_queue_get_message_count(bh_queue *queue);
  54. void
  55. bh_queue_enter_loop_run(bh_queue *queue,
  56. bh_queue_handle_msg_callback handle_cb,
  57. void *arg);
  58. void
  59. bh_queue_exit_loop_run(bh_queue *queue);
  60. #ifdef __cplusplus
  61. }
  62. #endif
  63. #endif /* #ifndef _BH_QUEUE_H */