同步操作将从 魔罗/CodeBrick 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/******************************************************************************* @brief 环形缓冲区管理(参考linux/kfifo)** Copyright (c) 2016~2020, <morro_luo@163.com>** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date Author Notes* 2016年05月30日 Morro 初版完成******************************************************************************/#include "ringbuffer.h"#include <string.h>#include <stddef.h>#define min(a,b) ( (a) < (b) )? (a):(b)/**@brief 构造一个空环形缓冲区*@param[in] r - 环形缓冲区管理器*@param[in] buf - 数据缓冲区*@param[in] len - buf长度(必须是2的N次幂)*@retval bool*/bool ring_buf_init(ring_buf_t *r,unsigned char *buf, unsigned int len){r->buf = buf;r->size = len;r->front = r->rear = 0;return buf != NULL && (len & len -1) == 0;}/**@brief 清空环形缓冲区*@param[in] r - 待清空的环形缓冲区*@retval none*/void ring_buf_clr(ring_buf_t *r){r->front = r->rear = 0;}/**@brief 获取环形缓冲区数据长度*@retval 环形缓冲区中有效字节数*/unsigned int ring_buf_len(ring_buf_t *r){return r->rear - r->front;}/**@brief 将指定长度的数据放到环形缓冲区中*@param[in] buf - 数据缓冲区* len - 缓冲区长度*@retval 实际放到中的数据*/unsigned int ring_buf_put(ring_buf_t *r,unsigned char *buf,unsigned int len){unsigned int i;unsigned int left;left = r->size + r->front - r->rear;len = min(len , left);i = min(len, r->size - (r->rear & r->size - 1));memcpy(r->buf + (r->rear & r->size - 1), buf, i);memcpy(r->buf, buf + i, len - i);r->rear += len;return len;}/**@brief 从环形缓冲区中读取指定长度的数据*@param[in] len - 读取长度*@param[out] buf - 输出数据缓冲区*@retval 实际读取长度*/unsigned int ring_buf_get(ring_buf_t *r,unsigned char *buf,unsigned int len){unsigned int i;unsigned int left;left = r->rear - r->front;len = min(len , left);i = min(len, r->size - (r->front & r->size - 1));memcpy(buf, r->buf + (r->front & r->size - 1), i);memcpy(buf + i, r->buf, len - i);r->front += len;return len;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。