Files
MicrochipFor32/bsp_Device/bsp_Queue.h

44 lines
1.4 KiB
C
Raw Normal View History

/*----------------------------------------------------------------------------------------------------
# THIS FILE IS A PART OF XerolySkinner's PROJECT
#
# THIS PROGRAM IS FREE SOFTWARE
#
# E-mail:ZABBCCCBBAZ@163.com
# QQ:2715099320
#
# Copyright (c) 2022 XerolySkinner
# All rights reserved.
*/
/*----------------------------------------------------------------------------------------------------
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:bsp_Queue
ʱ<EFBFBD><EFBFBD>:20220806-0226
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա:<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
˵<EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#ifndef _BSP_QUEUE
#define _BSP_QUEUE
////////////////////////////////////////////////////////////////////////////////////////////////////
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ѭ<><D1AD>ֱ<EFBFBD><D6B1>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
#define bsp_QueuePopRunLoopVoid(Queue) \
do{ \
while(!bsp_QueueEmpty(Queue)) \
((void (*)(void))bsp_QueuePop(Queue))(); \
}while(0)
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define bsp_QueuePopRunIfVoid(Queue) \
do{ \
if(!bsp_QueueEmpty(Queue)) \
((void (*)(void))bsp_QueuePop(Queue))(); \
}while(0)
// <09><><EFBFBD>ö<EFBFBD><C3B6>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct _Queue* bsp_QueueInit(void);
char bsp_QueueEmpty(struct _Queue* list);
char bsp_QueuePush(struct _Queue* list, void* member);
void* bsp_QueuePop(struct _Queue* list);
void bsp_QueuePushCharPtrFree(char* member);
char bsp_QueuePushCharPtr(struct _Queue* list, char* member, unsigned int len);
////////////////////////////////////////////////////////////////////////////////////////////////////
#endif