1313#include <rtdevice.h>
1414#include <rthw.h>
1515
16+ #define DATAQUEUE_MAGIC 0xbead0e0e
17+
1618struct 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