2019-05-07 02:18:18 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
2019-11-11 23:45:21 +00:00
|
|
|
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
2019-05-07 02:18:18 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _BH_QUEUE_H
|
|
|
|
#define _BH_QUEUE_H
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "bh_platform.h"
|
|
|
|
|
2020-03-16 08:43:57 +00:00
|
|
|
struct bh_queue_node;
|
|
|
|
typedef struct bh_queue_node * bh_message_t;
|
2019-05-07 02:18:18 +00:00
|
|
|
struct bh_queue;
|
|
|
|
typedef struct bh_queue bh_queue;
|
|
|
|
|
2019-10-11 07:25:23 +00:00
|
|
|
typedef void (*bh_queue_handle_msg_callback)(void *message, void *arg);
|
2019-05-07 02:18:18 +00:00
|
|
|
|
2020-03-10 11:54:44 +00:00
|
|
|
#define bh_queue_malloc BH_MALLOC
|
|
|
|
#define bh_queue_free BH_FREE
|
2019-05-07 02:18:18 +00:00
|
|
|
|
|
|
|
#define bh_queue_mutex korp_mutex
|
|
|
|
#define bh_queue_cond korp_cond
|
|
|
|
|
2020-03-16 08:43:57 +00:00
|
|
|
#define bh_queue_mutex_init os_mutex_init
|
|
|
|
#define bh_queue_mutex_destroy os_mutex_destroy
|
|
|
|
#define bh_queue_mutex_lock os_mutex_lock
|
|
|
|
#define bh_queue_mutex_unlock os_mutex_unlock
|
2019-05-07 02:18:18 +00:00
|
|
|
|
2020-03-16 08:43:57 +00:00
|
|
|
#define bh_queue_cond_init os_cond_init
|
|
|
|
#define bh_queue_cond_destroy os_cond_destroy
|
|
|
|
#define bh_queue_cond_wait os_cond_wait
|
|
|
|
#define bh_queue_cond_timedwait os_cond_reltimedwait
|
|
|
|
#define bh_queue_cond_signal os_cond_signal
|
|
|
|
#define bh_queue_cond_broadcast os_cond_broadcast
|
2019-05-07 02:18:18 +00:00
|
|
|
|
|
|
|
typedef void (*bh_msg_cleaner)(void *msg);
|
|
|
|
|
|
|
|
bh_queue *
|
|
|
|
bh_queue_create();
|
|
|
|
|
|
|
|
void
|
|
|
|
bh_queue_destroy(bh_queue *queue);
|
|
|
|
|
|
|
|
char * bh_message_payload(bh_message_t message);
|
2019-11-20 13:16:36 +00:00
|
|
|
uint32 bh_message_payload_len(bh_message_t message);
|
2019-05-07 02:18:18 +00:00
|
|
|
int bh_message_type(bh_message_t message);
|
|
|
|
|
|
|
|
bh_message_t bh_new_msg(unsigned short tag, void *body, unsigned int len,
|
2020-03-16 08:43:57 +00:00
|
|
|
void * handler);
|
2019-05-07 02:18:18 +00:00
|
|
|
void bh_free_msg(bh_message_t msg);
|
|
|
|
bool bh_post_msg(bh_queue *queue, unsigned short tag, void *body,
|
2020-03-16 08:43:57 +00:00
|
|
|
unsigned int len);
|
2019-05-07 02:18:18 +00:00
|
|
|
bool bh_post_msg2(bh_queue *queue, bh_message_t msg);
|
|
|
|
|
2020-12-07 09:37:53 +00:00
|
|
|
bh_message_t bh_get_msg(bh_queue *queue, uint64 timeout_us);
|
2019-05-07 02:18:18 +00:00
|
|
|
|
|
|
|
unsigned
|
|
|
|
bh_queue_get_message_count(bh_queue *queue);
|
|
|
|
|
|
|
|
void
|
|
|
|
bh_queue_enter_loop_run(bh_queue *queue,
|
2019-10-11 07:25:23 +00:00
|
|
|
bh_queue_handle_msg_callback handle_cb,
|
|
|
|
void *arg);
|
2019-05-07 02:18:18 +00:00
|
|
|
void
|
|
|
|
bh_queue_exit_loop_run(bh_queue *queue);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* #ifndef _BH_QUEUE_H */
|
|
|
|
|