yb_arm/osp/inc/ospSoftQue.h

64 lines
1.6 KiB
C
Raw Normal View History

2023-07-12 14:14:31 +08:00
#ifndef __OSPSOFTH__
#define __OSPSOFTH__
#ifdef __cplusplus
extern "C" {
#endif
typedef struct tag_Osp_SoftQue
{
lx_sem_t mutex;
lx_sem_t sem;
int32_t Id; //QUEUE ID
char Name[32];
int32_t EnIdx; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int32_t DeIdx; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int32_t Dep; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int32_t CurNum;
uint64_t EnCnt; //<2F><><EFBFBD><EFBFBD>ͳ<EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>
uint64_t DeCnt; //<2F><><EFBFBD><EFBFBD>ͳ<EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>
uint64_t FullCnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>
uint64_t EmptyCnt; //<2F><><EFBFBD>п<EFBFBD>ͳ<EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>
uint32_t Mask;
uint64_t Buf[];
}Osp_SoftQue;
#define QUE_NEED_WAKE 1
#define QUE_NO_NEED_WAKE 0
#define QUE_ISBLOCK 1
#define QUE_NOBLOCK 0
int32_t osp_create_softque(Osp_SoftQue *que, int32_t Dep, char *name);
int32_t osp_soft_que_enque(uint64_t value, Osp_SoftQue *que, int32_t IsNeedWake);
int32_t osp_softque_deque(uint64_t *pvalue, Osp_SoftQue *que, int32_t IsBlock);
int32_t osp_softque_dequetry(uint64_t *pvalue, Osp_SoftQue *que);
int32_t osp_softque_dequeTimeOut(uint64_t *pvalue, Osp_SoftQue *que, uint32_t timeout);
int32_t osp_get_soft_que_info(Osp_SoftQue *que, char *pbuf);
int32_t osp_get_soft_que_desc(char *pbuf);
#define OSP_SOFTQ_ENCNT(que) que->EnCnt
#define OSP_SOFTQ_DECNT(que) que->DeCnt
#define OSP_SOFTQ_CUR(que) que->CurNum
#define OSP_SOFTQ_DEP(que) que->Dep
#define OSP_SOFTQ_SIZE(dep) (sizeof(Osp_SoftQue) + sizeof(uint64_t) * dep)
#ifdef __cplusplus
}
#endif
#endif /* __OSPSOFTH__ */