Skip to content

Commit 1d7b34f

Browse files
committed
[components][dataqueue]修改is_init为magic数
1 parent dfcd38b commit 1d7b34f

File tree

2 files changed

+12
-28
lines changed

2 files changed

+12
-28
lines changed

components/drivers/include/ipc/dataqueue.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@ struct rt_data_item;
2222
/* data queue implementation */
2323
struct rt_data_queue
2424
{
25+
rt_uint32_t magic;
26+
2527
rt_uint16_t size;
2628
rt_uint16_t lwm;
2729
rt_bool_t waiting_lwm;
28-
rt_bool_t is_init;
2930

3031
rt_uint16_t get_index;
3132
rt_uint16_t put_index;

components/drivers/src/dataqueue.c

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
#include <rtdevice.h>
1414
#include <rthw.h>
1515

16+
#define DATAQUEUE_MAGIC 0xbead0e0e
17+
1618
struct rt_data_item
1719
{
1820
const void *data_ptr;
@@ -29,9 +31,9 @@ rt_data_queue_init(struct rt_data_queue *queue,
2931

3032
queue->evt_notify = evt_notify;
3133

34+
queue->magic = DATAQUEUE_MAGIC;
3235
queue->size = size;
3336
queue->lwm = lwm;
34-
queue->is_init = RT_TRUE;
3537

3638
queue->get_index = 0;
3739
queue->put_index = 0;
@@ -58,11 +60,7 @@ rt_err_t rt_data_queue_push(struct rt_data_queue *queue,
5860
rt_thread_t thread;
5961
rt_err_t result;
6062

61-
if(queue->is_init != RT_TRUE)
62-
{
63-
return RT_ERROR;
64-
}
65-
63+
RT_ASSERT(queue->magic == DATAQUEUE_MAGIC);
6664
RT_ASSERT(queue != RT_NULL);
6765

6866
result = RT_EOK;
@@ -152,11 +150,7 @@ rt_err_t rt_data_queue_pop(struct rt_data_queue *queue,
152150
rt_thread_t thread;
153151
rt_err_t result;
154152

155-
if(queue->is_init != RT_TRUE)
156-
{
157-
return RT_ERROR;
158-
}
159-
153+
RT_ASSERT(queue->magic == DATAQUEUE_MAGIC);
160154
RT_ASSERT(queue != RT_NULL);
161155
RT_ASSERT(data_ptr != RT_NULL);
162156
RT_ASSERT(size != RT_NULL);
@@ -256,11 +250,7 @@ rt_err_t rt_data_queue_peak(struct rt_data_queue *queue,
256250
{
257251
rt_ubase_t level;
258252

259-
if(queue->is_init != RT_TRUE)
260-
{
261-
return RT_ERROR;
262-
}
263-
253+
RT_ASSERT(queue->magic == DATAQUEUE_MAGIC);
264254
RT_ASSERT(queue != RT_NULL);
265255

266256
level = rt_hw_interrupt_disable();
@@ -286,11 +276,8 @@ void rt_data_queue_reset(struct rt_data_queue *queue)
286276
struct rt_thread *thread;
287277
register rt_ubase_t temp;
288278

289-
if(queue->is_init != RT_TRUE)
290-
{
291-
return;
292-
}
293-
279+
RT_ASSERT(queue->magic == DATAQUEUE_MAGIC);
280+
294281
rt_enter_critical();
295282
/* wakeup all suspend threads */
296283

@@ -351,19 +338,15 @@ rt_err_t rt_data_queue_deinit(struct rt_data_queue *queue)
351338
{
352339
rt_ubase_t level;
353340

354-
if(queue->is_init != RT_TRUE)
355-
{
356-
return RT_ERROR;
357-
}
358-
341+
RT_ASSERT(queue->magic == DATAQUEUE_MAGIC);
359342
RT_ASSERT(queue != RT_NULL);
360343

361344
level = rt_hw_interrupt_disable();
362345

363346
/* wakeup all suspend threads */
364347
rt_data_queue_reset(queue);
365348

366-
queue->is_init = RT_FALSE;
349+
queue->magic = 0;
367350
rt_free(queue->queue);
368351

369352
rt_hw_interrupt_enable(level);

0 commit comments

Comments
 (0)