summaryrefslogtreecommitdiff
path: root/components/drivers/include/ipc/dataqueue.h
diff options
context:
space:
mode:
authorWang-Huachen <[email protected]>2020-11-30 12:48:23 +0800
committerWang-Huachen <[email protected]>2020-11-30 12:48:23 +0800
commitf7b553b193deb179e23843d759d20d83da4b85d3 (patch)
treeff949a536a962896aec25ff73e0abd874c84a6af /components/drivers/include/ipc/dataqueue.h
parent9756c77f0447f9ce4f00a37600298a1f1fd90cda (diff)
parentaf95348bf1dd06ed2147cf9caee8a78513c31a72 (diff)
Merge branch 'master' of https://github.com/RT-Thread/rt-thread
Diffstat (limited to 'components/drivers/include/ipc/dataqueue.h')
-rw-r--r--components/drivers/include/ipc/dataqueue.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/components/drivers/include/ipc/dataqueue.h b/components/drivers/include/ipc/dataqueue.h
index d90be76ffb..0262f4702b 100644
--- a/components/drivers/include/ipc/dataqueue.h
+++ b/components/drivers/include/ipc/dataqueue.h
@@ -17,8 +17,7 @@
#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
{
@@ -26,10 +25,11 @@ struct rt_data_queue
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;
@@ -60,5 +60,6 @@ rt_err_t rt_data_queue_peak(struct rt_data_queue *queue,
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