在内存中建立一个环形队列的数据结构,此数据结构遵循先进先出的原则,它是用于对交通灯驱动程序的上半部和下半部之间缓冲数据,其中ring_buf_read()函数用于对环形队列进行读取数据。(本算法来自蒋静《操作系统原理。技术与编程》一书P392页)
#define R_SIGNATURE 0x860510
typedef struct{
long signature;
int *head;
int *tail;
int *end;
int *begin;
int buffer[64];
}ring_buf; //定义一个环形队列数据结构
#include <unistd.h>
#include <linux/kernel.h>
#include "ring.h"
int tag=0;
int * psudo_head=NULL;
void ring_buf_init(ring_buf *round)
{
round->signature=R_SIGNATURE;
round->head=round->buffer;
round->tail=round->buffer;
round->begin=round->buffer;
round->end=&round->buffer[sizeof(round->buffer)-1];
}
/** read the user_defined value from the ring_buffer,
** if no value