qFifoGLib.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* qFifoGLib.h - global fifo queue header file */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01c,22sep92,rrr  added support for c++
  7. 01b,30jul92,pme    cleanup.
  8. 01a,19jul92,pme    written.
  9. */
  10. #ifndef __INCqFifoGLibh
  11. #define __INCqFifoGLibh
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. #include "vxWorks.h"
  16. #include "qClass.h"
  17. #include "smDllLib.h"
  18. #include "taskLib.h"
  19. /* fifo key defines */
  20. #define FIFO_KEY_HEAD -1 /* put at head of queue */
  21. #define FIFO_KEY_TAIL 0 /* put at tail of q (any != -1) */
  22. /*
  23.  * qFifoGRemove returns a particular status called ALREADY_REMOVED
  24.  * when the shared TCB has been removed on give side.
  25.  */
  26. #define ALREADY_REMOVED  1
  27. /* HIDDEN */
  28. typedef SM_DL_NODE Q_FIFO_G_NODE;
  29. typedef struct q_fifo_g_head /* Q_FIFO_G_HEAD */
  30.     {
  31.     UINT32   first; /* NOT USED! */
  32.     UINT32 *    pLock; /* NULL if already acquired */
  33.     SM_DL_LIST * pFifoQ; /* shared memory pending queue */
  34.     Q_CLASS * pQClass; /* pointer to class */
  35.     } Q_FIFO_G_HEAD;
  36. extern Q_CLASS_ID qFifoGClassId;
  37. /* END HIDDEN */
  38. /* function declarations */
  39. #if defined(__STDC__) || defined(__cplusplus)
  40. extern SM_DL_NODE * qFifoGEach (Q_FIFO_G_HEAD * pQFifoGHead,
  41.     FUNCPTR routine, int routineArg);
  42. extern SM_DL_NODE * qFifoGGet (Q_FIFO_G_HEAD * pQFifoGHead);
  43. extern STATUS  qFifoGInit (Q_FIFO_G_HEAD * pQFifoGHead);
  44. extern int  qFifoGInfo (Q_FIFO_G_HEAD * pQFifoGHead,
  45.     int nodeArray[], int maxNodes);
  46. extern void  qFifoGPut (Q_FIFO_G_HEAD * pQFifoGHead,
  47.    SM_DL_NODE * pQFifoGNode, ULONG key);
  48. extern STATUS  qFifoGRemove (Q_FIFO_G_HEAD * pQFifoGHead,
  49.       SM_DL_NODE * pQFifoGNode);
  50. #else /* __STDC__ */
  51. extern SM_DL_NODE *    qFifoGEach ();
  52. extern SM_DL_NODE *    qFifoGGet ();
  53. extern STATUS          qFifoGInit ();
  54. extern int             qFifoGInfo ();
  55. extern void            qFifoGPut ();
  56. extern STATUS          qFifoGRemove ();
  57. #endif /* __STDC__ */
  58. #ifdef __cplusplus
  59. }
  60. #endif
  61. #endif /* __INCqFifoGLibh */