diff options
| author | qiyongzhong0 <[email protected]> | 2020-09-18 09:33:34 +0800 |
|---|---|---|
| committer | qiyongzhong0 <[email protected]> | 2020-09-18 09:33:34 +0800 |
| commit | 44baf269f79903d83359f23aab60ca17560e422c (patch) | |
| tree | 97e9b0fd5b4ed9b4dff7e2ab30d1f3a5cebf56ff /components/drivers/include/ipc/dataqueue.h | |
| parent | 8afb8b1e294883f50bc17a67cfa4321e61140681 (diff) | |
fix bug of dataqueue
Diffstat (limited to 'components/drivers/include/ipc/dataqueue.h')
| -rw-r--r-- | components/drivers/include/ipc/dataqueue.h | 11 |
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 |
