⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ring.c

📁 嵌入式linux学习之uclinux步进电机驱动实例(测试平台S3C44B0X,uclinux系统)
💻 C
字号:
#include "ring.h"
#include <stdlib.h>
#include <stdio.h>

void ring_buffer_init(ring_buffer_t *ring)
{
	ring->signature = RING_SIGNATURE;
	ring->begin_p = ring->buffer;
	ring->end_p = &ring->buffer[sizeof(ring->buffer)];
	ring->head_p = ring->buffer;
	ring->tail_p = ring->buffer; 
}

int ring_buffer_read(ring_buffer_t *ring, 
	unsigned char *buf, int count
{
	if(ring->tail_p == ring->end_p){
		ring->tail_p = ring->begin_p;
	}
	if(ring->tail_p == ring->head_p){
		printf("read buffer underflow");
		return(0);
	}
	*buf = *ring->tail_p++;
	return(1); 
}
	
int ring_buffer_write(ring_buffer_t *ring,
	unsigned char *buf, int count)
{
	unsigned char *tail_p;
	if(((ring->head_p == tail_p - 1))||
	((ring->head_p == ring->end_p)&&(ring->tail_p == ring->begin_p)
	)){
		printf("write buffer underflow");
		return(0);
	}
	*ring->head_p++ = *buf;

	if(ring->head_p == ring->end_p){
		ring->head_p = ring->begin_p;
	}
	return(1);
}

⌨️ 快捷键说明

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