bb76cfd779
规则定案:常量在右(a>5)、保护宏XXX_H(禁双下划线)、 头文件常量用#define、存储类前缀(g_/s_)优先、允许void返回值 全库32个.h头文件保护宏 __XXX_H → XXX_H 改名(字节级替换) S1检查规则同步更新(拒绝双下划线),Inc/gpio.h 反向验证被正确拦截 规范示例矛盾修复:K&R括号、标准类型、变量初始化、命名常量、注释字段补全
43 lines
1.0 KiB
C
43 lines
1.0 KiB
C
/*
|
|
* 模块名称:Ring Buffer
|
|
* 模块功能:线程安全的字节环形缓冲区(单生产者-单消费者模型)
|
|
* 适用平台:通用嵌入式平台
|
|
* 作者:王建锋
|
|
* 创建日期:2026-07-19
|
|
* 修改记录:
|
|
* v1.0 2026-07-19 王建锋 创建初始版本
|
|
*/
|
|
|
|
#ifndef RINGBUF_H
|
|
#define RINGBUF_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
|
|
typedef struct {
|
|
uint8_t *buf;
|
|
size_t size;
|
|
size_t head;
|
|
size_t tail;
|
|
} ringbuf_t;
|
|
|
|
void ringbuf_init(ringbuf_t *rb, uint8_t *pool, size_t size);
|
|
size_t ringbuf_put(ringbuf_t *rb, const uint8_t *data, size_t len);
|
|
size_t ringbuf_get(ringbuf_t *rb, uint8_t *data, size_t len);
|
|
size_t ringbuf_peek(const ringbuf_t *rb, uint8_t *data, size_t len);
|
|
size_t ringbuf_avail(const ringbuf_t *rb);
|
|
size_t ringbuf_space(const ringbuf_t *rb);
|
|
int ringbuf_is_empty(const ringbuf_t *rb);
|
|
int ringbuf_is_full(const ringbuf_t *rb);
|
|
void ringbuf_reset(ringbuf_t *rb);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* RINGBUF_H */
|