linux内核队列实现

来源:互联网 发布:魔兽世界大脚mac 编辑:程序博客网 时间:2024/06/05 04:57

linux内核队列实现

/*****author:方福建date:2017/07/24*****/#ifndef _SIMPLEQUEUE_#define _SIMPLEQUEUE_#ifdef __cplusplusextern "C" {#endif#include "kdvtype.h"const u32 m_gMaxSize=100;class SimpleQueue{public:    SimpleQueue()    {        SetMaxSize(m_gMaxSize);        m_nIn=0;        m_nOut=0;           memset(m_pData,0,sizeof(m_pData));    }    virtual ~SimpleQueue()    {    }    u32 MaxSize()    {        return m_dwMaxSize;    }    u32 Size()    {        return m_nIn-m_nOut;    }    s32 Put(void *pIn)    {        if(m_nIn-m_nOut>=m_dwMaxSize)            return -1;        u32 nPos=m_nIn & m_dwMaxSizeLess;        m_pData[nPos]=pIn;        m_nIn++;        return 0;    }    s32 Fetch(void **pOut)    {        if(m_nIn-m_nOut<=0)            return -1;        u32 nPos=m_nOut & m_dwMaxSizeLess;        *pOut=m_pData[nPos];        m_nOut++;        return 0;    }private:    void SetMaxSize(u32 dwMaxSize)    {        m_dwMaxSize=dwMaxSize;        m_dwMaxSizeLess=m_dwMaxSize-1;    }private:    void * m_pData[m_gMaxSize];    u32 m_dwMaxSize;    u32 m_dwMaxSizeLess;    volatile u32 m_nIn;    volatile u32 m_nOut;};#ifdef __cplusplus}#endif#endif
原创粉丝点击