ring_buffer.c
来自「* The functions debug_init() and debug()」· C语言 代码 · 共 61 行
C
61 行
/**
* \file ring_buffer.c
* \brief Ring (circular) buffer API.
*/
#include "ring_buffer.h"
void ring_buffer_init(
uint32_t size,
uint8_t *data,
ring_buffer_t *buf)
{
buf->wr = 0;
buf->rd = 0;
buf->count = 0;
buf->size = size;
buf->data = data;
}
int32_t ring_buffer_remove(
ring_buffer_t *buf)
{
int ch;
/* Empty check */
if (buf->count == 0) {
return -1;
}
ch = buf->data[buf->rd];
buf->rd++;
buf->count--;
/* Buffer read-pointer wrap */
if (buf->rd == buf->size) {
buf->rd = 0;
}
return ch;
}
int32_t ring_buffer_add(
ring_buffer_t *buf,
int8_t ch)
{
/* Full check */
if (buf->count == buf->size) {
return -1;
}
buf->data[buf->wr] = ch;
buf->wr++;
buf->count++;
/* Buffer write-pointer wrap */
if (buf->wr == buf->size) {
buf->wr = 0;
}
return 0;
}
uint32_t ring_buffer_count(
ring_buffer_t *buf)
{
return buf->count;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?