queue.c

来自「自己编写的飞利浦LPC2200的串口驱动,可以支持在OS下和非OS下,主要通过在」· C语言 代码 · 共 65 行

C
65
字号
#include "Queue.h"

QUEUE_RET QueueInit(QUEUE *queue, QUEUE_TYPE *buf, unsigned int length)
{
	if(NULL != queue && NULL != buf && 0 != length)
	{
		Queue_EnterCritical();
		queue->buf = buf;
		queue->front = queue->rear = 0;
		queue->length = 0;
		queue->max = length;
		queue->initFlag = 1;
		Queue_ExitCritical();

		return QRET_OK;
	}
	
	queue->initFlag = 0;
	return QRET_ERROR;
}

QUEUE_RET QueueIn(QUEUE *queue, QUEUE_TYPE data)
{
	if(NULL != queue && 1 == queue->initFlag)
	{
		Queue_EnterCritical();
		if(queue->length == queue->max)
		{
			Queue_ExitCritical();
			return QRET_FULL;
		}
		
		queue->buf[queue->rear] = data;
		queue->rear = (queue->rear + 1)%queue->max;
		queue->length++;
		Queue_ExitCritical();

		return QRET_OK;
	}
	
	return QRET_ERROR;	
}

QUEUE_RET QueueOut(QUEUE *queue, QUEUE_TYPE *data)
{
	if(NULL != queue && 1 == queue->initFlag)
	{
		Queue_EnterCritical();
		if(queue->length == 0)
		{
			Queue_ExitCritical();
			return QRET_EMPTY;
		}
		
		*data = queue->buf[queue->front];
		queue->front = (queue->front + 1)%queue->max;
		queue->length--;
		Queue_ExitCritical();

		return QRET_OK;
	}
	
	return QRET_ERROR;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?