#include "fifo.h"
P_FIFO_T FIFO_Creat(int nNodeMax, int nNodeSize)
{
P_FIFO_T pstNewFifo = (P_FIFO_T)malloc(sizeof(FIFO_T));
if (pstNewFifo == NULL)
{
return NULL;
}
// pstNewFifo->nNodeCount = nNodeMax;
pstNewFifo->nNodeMax = nNodeMax;
pstNewFifo->nNodeSize = nNodeSize;
pstNewFifo->nNodeCount = 0;
pstNewFifo->pvDataBuff = (char *)malloc(nNodeMax * nNodeSize);
pstNewFifo->pvRead = pstNewFifo->pvDataBuff;
pstNewFifo->pvWrite = pstNewFifo->pvDataBuff;
pstNewFifo->nReadTimes = 0;
pstNewFifo->nWriteTimes = 0;
return pstNewFifo;
}
void FIFO_Push(P_FIFO_T hFifo, void *pvBuff)
{
P_FIFO_T pstFifo = hFifo;
char *pcNewBuff = (char *)pvBuff;
char *pcBuffEnd = (char *)pstFifo->pvDataBuff + pstFifo->nNodeSize * pstFifo->nNodeMax;
if (pstFifo->pvWrite == pcBuffEnd)
{
pstFifo->pvWrite = pstFifo->pvDataBuff;
pstFifo->nWriteTimes++;
if ((pstFifo->pvWrite == pstFifo->pvRead) &&
(pstFifo->nWriteTimes > pstFifo->nReadTimes))
{
if (pstFifo->pvRead == pcBuffEnd)
{
pstFifo->pvRead = pstFifo->pvDataBuff;
}
else
pstFifo->pvRead = (char *)pstFifo->pvRead + pstFifo->nNodeSize;
}
}
memcpy(pstFifo->pvWrite, pcNewBuff, pstFifo->nNodeSize);
pstFifo->pvWrite = (char *)pstFifo->pvWrite + pstFifo->nNodeSize;
pstFifo->nNodeCount++;
}
char * FIFO_Pop(P_FIFO_T hFifo)
{
if (hFifo->pvRead == hFifo->pvWrite &&hFifo->nReadTimes == hFifo->nWriteTimes)
{
return NULL;
}
P_FIFO_T pstFifo = hFifo;
char *pcReadBuff = (char *)malloc(pstFifo->nNodeSize);
memset(pcReadBuff, 0x00,pstFifo->nNodeSize);
char *pcBuffEnd = (char *)pstFifo->pvDataBuff + pstFifo->nNodeSize * pstFifo->nNodeMax;
if ( pstFifo->pvRead == pcBuffEnd)
{
pstFifo->pvRead = pstFifo->pvDataBuff;
pstFifo->nReadTimes++;
}
memcpy(pcReadBuff, pstFifo->pvRead, pstFifo->nNodeSize);
pstFifo->pvRead = (char *)pstFifo->pvRead + pstFifo->nNodeSize;
pstFifo->nNodeCount--;
return pcReadBuff;
}

zhu2020520
- 粉丝: 3
最新资源
- 大数据视角下的语文课堂提问方法探究.docx
- 云计算市场与技术发展趋势.doc
- 通信工程施工管理概述.doc
- 关于强电线路对通信线路的影响及其防护.doc
- 集团大数据平台安全方案规划.docx
- Matlab基于腐蚀和膨胀的边缘检测.doc
- 网络监控系统解决方案酒店.doc
- 电动机智能软起动控制系统的研究与方案设计书(PLC).doc
- jAVA2程序设计基础第十三章.ppt
- 基于PLC的机械手控制设计.doc
- 医院his计算机信息管理系统故障应急预案.doc
- 企业运用移动互联网进行青年职工思想政治教育路径.docx
- 数据挖掘的六大主要功能.doc
- 大数据行政尚在跑道入口.docx
- 用Proteus和Keil建立单片机仿真工程的步骤.doc
- Internet技术与应用网络——资源管理与开发.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



- 1
- 2
- 3
前往页