summaryrefslogtreecommitdiff
path: root/components/drivers/include/ipc/dataqueue.h
diff options
context:
space:
mode:
authorchenjh <[email protected]>2021-02-26 18:23:52 +0800
committerchenjh <[email protected]>2021-02-26 18:23:52 +0800
commit055c3d3e1d75fedac44ffb41943350d9844f5b7e (patch)
treeab7ee8660930048e93cc2dcc944db40c59f08b5d /components/drivers/include/ipc/dataqueue.h
parent5f17cf9204e501d971cd28486e0a7193d2f1fae4 (diff)
[Update] Sync from v4.0.3
Diffstat (limited to 'components/drivers/include/ipc/dataqueue.h')
-rw-r--r--components/drivers/include/ipc/dataqueue.h16
1 files changed, 10 insertions, 6 deletions
diff --git a/components/drivers/include/ipc/dataqueue.h b/components/drivers/include/ipc/dataqueue.h
index f584c267bf..76203c404d 100644
--- a/components/drivers/include/ipc/dataqueue.h
+++ b/components/drivers/include/ipc/dataqueue.h
@@ -17,17 +17,19 @@
#define RT_DATAQUEUE_EVENT_LWM 0x03
struct rt_data_item;
-#define RT_DATAQUEUE_SIZE(dq) ((dq)->put_index - (dq)->get_index)
-#define RT_DATAQUEUE_EMPTY(dq) ((dq)->size - RT_DATAQUEUE_SIZE(dq))
+
/* data queue implementation */
struct rt_data_queue
{
+ rt_uint32_t magic;
+
rt_uint16_t size;
rt_uint16_t lwm;
- rt_bool_t waiting_lwm;
- rt_uint16_t get_index;
- rt_uint16_t put_index;
+ rt_uint16_t get_index : 15;
+ rt_uint16_t is_empty : 1;
+ rt_uint16_t put_index : 15;
+ rt_uint16_t is_full : 1;
struct rt_data_item *queue;
@@ -53,9 +55,11 @@ rt_err_t rt_data_queue_pop(struct rt_data_queue *queue,
const void **data_ptr,
rt_size_t *size,
rt_int32_t timeout);
-rt_err_t rt_data_queue_peak(struct rt_data_queue *queue,
+rt_err_t rt_data_queue_peek(struct rt_data_queue *queue,
const void **data_ptr,
rt_size_t *size);
void rt_data_queue_reset(struct rt_data_queue *queue);
+rt_err_t rt_data_queue_deinit(struct rt_data_queue *queue);
+rt_uint16_t rt_data_queue_len(struct rt_data_queue *queue);
#endif