求大神帮助
渊赜 2019-05-18 09:47:35 下面代码是一个fifo读取函数,假设在一个单片机系统中,有两个任务在同一个fifo中获取数据,已知两个任务的优先级不同,高优先级任务会打断低优先级任务的执行。请问在这样的场景下,这段代码中的实现是否合理?如不合理应该怎样修改?
void* fifo_s_get(fifo_s_t* p_fifo)
{
void* retval = 0;
if (0 == p_fifo->used_num)
return 0;
if (0 == p_fifo->used_num)
{
return 0;
}
if(p_fifo->p_read_addr > p_fifo->p_end_addr)
p_fifo->p_read_addr = p_fifo->p_start_addr;
retval = *p_fifo->p_read_addr;
p_fifo->p_read_addr++;
p_fifo->free_num++;
p_fifo->used_num--;
return (retval);
}