[DeviceDrivers]Improve dataqueue resume suspended thread code. Thanks for @grissiom suggestion.
This commit is contained in:
parent
0970cf03a4
commit
6fe47a9537
|
@ -45,7 +45,6 @@ rt_data_queue_init(struct rt_data_queue *queue,
|
||||||
|
|
||||||
queue->size = size;
|
queue->size = size;
|
||||||
queue->lwm = lwm;
|
queue->lwm = lwm;
|
||||||
queue->waiting_lwm = RT_FALSE;
|
|
||||||
|
|
||||||
queue->get_index = 0;
|
queue->get_index = 0;
|
||||||
queue->put_index = 0;
|
queue->put_index = 0;
|
||||||
|
@ -80,8 +79,6 @@ rt_err_t rt_data_queue_push(struct rt_data_queue *queue,
|
||||||
level = rt_hw_interrupt_disable();
|
level = rt_hw_interrupt_disable();
|
||||||
while (queue->put_index - queue->get_index == queue->size)
|
while (queue->put_index - queue->get_index == queue->size)
|
||||||
{
|
{
|
||||||
queue->waiting_lwm = RT_TRUE;
|
|
||||||
|
|
||||||
/* queue is full */
|
/* queue is full */
|
||||||
if (timeout == 0)
|
if (timeout == 0)
|
||||||
{
|
{
|
||||||
|
@ -218,8 +215,7 @@ rt_err_t rt_data_queue_pop(struct rt_data_queue *queue,
|
||||||
|
|
||||||
queue->get_index += 1;
|
queue->get_index += 1;
|
||||||
|
|
||||||
if ((queue->waiting_lwm == RT_TRUE) &&
|
if ((queue->put_index - queue->get_index) <= queue->lwm)
|
||||||
(queue->put_index - queue->get_index) <= queue->lwm)
|
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* there is at least one thread in suspended list
|
* there is at least one thread in suspended list
|
||||||
|
@ -241,7 +237,6 @@ rt_err_t rt_data_queue_pop(struct rt_data_queue *queue,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
queue->waiting_lwm = RT_FALSE;
|
|
||||||
rt_hw_interrupt_enable(level);
|
rt_hw_interrupt_enable(level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue