Files
vxWorks/h/qFifoGLib.h
2025-08-20 18:25:46 +08:00

84 lines
2.0 KiB
C

/* qFifoGLib.h - global fifo queue header file */
/* Copyright 1984-1992 Wind River Systems, Inc. */
/*
modification history
--------------------
01c,22sep92,rrr added support for c++
01b,30jul92,pme cleanup.
01a,19jul92,pme written.
*/
#ifndef __INCqFifoGLibh
#define __INCqFifoGLibh
#ifdef __cplusplus
extern "C" {
#endif
#include "vxWorks.h"
#include "qClass.h"
#include "smDllLib.h"
#include "taskLib.h"
/* fifo key defines */
#define FIFO_KEY_HEAD -1 /* put at head of queue */
#define FIFO_KEY_TAIL 0 /* put at tail of q (any != -1) */
/*
* qFifoGRemove returns a particular status called ALREADY_REMOVED
* when the shared TCB has been removed on give side.
*/
#define ALREADY_REMOVED 1
/* HIDDEN */
typedef SM_DL_NODE Q_FIFO_G_NODE;
typedef struct q_fifo_g_head /* Q_FIFO_G_HEAD */
{
UINT32 first; /* NOT USED! */
UINT32 * pLock; /* NULL if already acquired */
SM_DL_LIST * pFifoQ; /* shared memory pending queue */
Q_CLASS * pQClass; /* pointer to class */
} Q_FIFO_G_HEAD;
extern Q_CLASS_ID qFifoGClassId;
/* END HIDDEN */
/* function declarations */
#if defined(__STDC__) || defined(__cplusplus)
extern SM_DL_NODE * qFifoGEach (Q_FIFO_G_HEAD * pQFifoGHead,
FUNCPTR routine, int routineArg);
extern SM_DL_NODE * qFifoGGet (Q_FIFO_G_HEAD * pQFifoGHead);
extern STATUS qFifoGInit (Q_FIFO_G_HEAD * pQFifoGHead);
extern int qFifoGInfo (Q_FIFO_G_HEAD * pQFifoGHead,
int nodeArray[], int maxNodes);
extern void qFifoGPut (Q_FIFO_G_HEAD * pQFifoGHead,
SM_DL_NODE * pQFifoGNode, ULONG key);
extern STATUS qFifoGRemove (Q_FIFO_G_HEAD * pQFifoGHead,
SM_DL_NODE * pQFifoGNode);
#else /* __STDC__ */
extern SM_DL_NODE * qFifoGEach ();
extern SM_DL_NODE * qFifoGGet ();
extern STATUS qFifoGInit ();
extern int qFifoGInfo ();
extern void qFifoGPut ();
extern STATUS qFifoGRemove ();
#endif /* __STDC__ */
#ifdef __cplusplus
}
#endif
#endif /* __INCqFifoGLibh */