bh_queue.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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_platform.h"
  11. struct bh_queue_node;
  12. typedef struct bh_queue_node *bh_message_t;
  13. struct bh_queue;
  14. typedef struct bh_queue bh_queue;
  15. typedef void (*bh_queue_handle_msg_callback)(void *message, void *arg);
  16. #define bh_queue_malloc BH_MALLOC
  17. #define bh_queue_free BH_FREE
  18. #define bh_queue_mutex korp_mutex
  19. #define bh_queue_cond korp_cond
  20. #define bh_queue_mutex_init os_mutex_init
  21. #define bh_queue_mutex_destroy os_mutex_destroy
  22. #define bh_queue_mutex_lock os_mutex_lock
  23. #define bh_queue_mutex_unlock os_mutex_unlock
  24. #define bh_queue_cond_init os_cond_init
  25. #define bh_queue_cond_destroy os_cond_destroy
  26. #define bh_queue_cond_wait os_cond_wait
  27. #define bh_queue_cond_timedwait os_cond_reltimedwait
  28. #define bh_queue_cond_signal os_cond_signal
  29. #define bh_queue_cond_broadcast os_cond_broadcast
  30. typedef void (*bh_msg_cleaner)(void *msg);
  31. bh_queue *
  32. bh_queue_create(void);
  33. void
  34. bh_queue_destroy(bh_queue *queue);
  35. char *
  36. bh_message_payload(bh_message_t message);
  37. uint32
  38. bh_message_payload_len(bh_message_t message);
  39. int
  40. bh_message_type(bh_message_t message);
  41. bh_message_t
  42. bh_new_msg(unsigned short tag, void *body, unsigned int len, void *handler);
  43. void
  44. bh_free_msg(bh_message_t msg);
  45. bool
  46. bh_post_msg(bh_queue *queue, unsigned short tag, void *body, unsigned int len);
  47. bool
  48. bh_post_msg2(bh_queue *queue, bh_message_t msg);
  49. bh_message_t
  50. bh_get_msg(bh_queue *queue, uint64 timeout_us);
  51. unsigned
  52. bh_queue_get_message_count(bh_queue *queue);
  53. void
  54. bh_queue_enter_loop_run(bh_queue *queue, bh_queue_handle_msg_callback handle_cb,
  55. void *arg);
  56. void
  57. bh_queue_exit_loop_run(bh_queue *queue);
  58. #ifdef __cplusplus
  59. }
  60. #endif
  61. #endif /* #ifndef _BH_QUEUE_H */