yuandi
驱动牛犊
驱动牛犊
  • 注册日期2004-01-07
  • 最后登录2008-02-19
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:2300回复:1

环形缓冲

楼主#
更多 发布于:2005-06-17 10:00

在VxWorks中如何创建一个环形缓冲,如何对它进行操作?

谢谢!
xuhui250
驱动牛犊
驱动牛犊
  • 注册日期2003-08-20
  • 最后登录2005-08-30
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-23 00:28
恩,这个不是很难的,一般比较简单。

给你个例子:
typedef struct              /* RING - ring buffer */
    {
    int pToBuf;              /* offset from start of buffer where to write next */
    int pFromBuf;                      /* offset from start of buffer where to read next */
    int bufSize;                      /* size of ring in bytes */
    char *buf;                      /* pointer to start of buffer */
    } RING;
这个WindRiver公司的一个结构,可以参考使用。

该结构主要用于比较小的I/O系统的缓冲,比如串口等等。我明天会公司帮帮查查我写过的一个文档的。
提供的最基本的操作:

rngCreate
rngDelete

从缓冲区中取或者放多少个bytes
rngBufGet(RING *rng, void *buffer, int maxBytes)
rngBufPut(RING *rng, void *buffer, int maxBytes)

清空缓冲区:
rngBufFlush

释放多少个bytes
rngFreeBytes(RING *rng, int maxBytes)

rngIsEmpty
rngIsFull
这些都是最基本的操作,和数据结果类似!
简单的生活,平静的工作。
游客

返回顶部