📄 ring.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 + -