qPriBMapLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:4k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* qPriBMapLib.h - bit mapped linked list library header file */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 02m,22sep92,rrr  added support for c++
  7. 02l,28jul92,jcf  removed arch dependence. added nPriorities. changed prototypes.
  8. 02k,19jul92,pme  made qPriBMapRemove return STATUS.
  9. 02j,04jul92,jcf  cleaned up.
  10. 02i,26may92,rrr  the tree shuffle
  11. 02h,04oct91,rrr  passed through the ansification filter
  12.   -fixed #else and #endif
  13.   -changed TINY and UTINY to INT8 and UINT8
  14.   -changed VOID to void
  15.   -changed copyright notice
  16. 02g,20sep91,hdn  changed a structure of BMAP_LIST of TRON.
  17. 02f,10sep91,wmd  added CPU==MIPS to conditional for BMAP_LIST struct.
  18. 02e,27aug91,shl  added CPU=MC68040 to conditional for BMAP_LIST struct.
  19. 02d,19jul91,hdn  changed CPU==G200 to CPU_FAMILY==TRON
  20. 02c,10jun91,del  added pragma for gnu960 alignment.
  21. 02b,10may91,wmd  added CPU=G200 to conditional for BMAP_LIST struct.
  22. 02a,22jan91,jcf  changed BMAP_LIST for portability to other architectures.
  23. 01e,05oct90,shl  added copyright notice.
  24.                  made #endif ANSI style.
  25. 01d,05oct90,shl  added ANSI function prototypes.
  26. 01c,10jul90,jcf  made priority key unsigned.
  27. 01b,26jun90,jcf  remove queue class definition.
  28. 01a,22oct89,jcf  written.
  29. */
  30. #ifndef __INCqPriBMapLibh
  31. #define __INCqPriBMapLibh
  32. #ifdef __cplusplus
  33. extern "C" {
  34. #endif
  35. #include "vxWorks.h"
  36. #include "qClass.h"
  37. #include "vwModNum.h"
  38. #include "qPriNode.h"
  39. #include "dllLib.h"
  40. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  41. #pragma align 1 /* tell gcc960 not to optimize alignments */
  42. #endif /* CPU_FAMILY==I960 */
  43. /* status codes */
  44. #define S_qPriBMapLib_NULL_BMAP_LIST (M_qPriBMapLib | 1)
  45. /* HIDDEN */
  46. typedef struct /* BMAP_LIST */
  47.     {
  48.     UINT32 metaBMap; /* lookup table for map */
  49.     UINT8 bMap [32]; /* lookup table for listArray */
  50.     DL_LIST listArray [256]; /* doubly linked list head */
  51.     } BMAP_LIST;
  52. typedef struct /* Q_PRI_BMAP_HEAD */
  53.     {
  54.     Q_PRI_NODE *highNode; /* highest priority node */
  55.     BMAP_LIST *pBMapList; /* pointer to mapped list */
  56.     UINT   nPriority; /* priorities in queue (1,256) */
  57.     } Q_PRI_BMAP_HEAD;
  58. /* END_HIDDEN */
  59. /* function declarations */
  60. #if defined(__STDC__) || defined(__cplusplus)
  61. extern BMAP_LIST * qPriBMapListCreate (UINT maxPriority);
  62. extern Q_PRI_BMAP_HEAD *qPriBMapCreate (BMAP_LIST *pBMapList, UINT maxPriority);
  63. extern STATUS  qPriBMapInit (Q_PRI_BMAP_HEAD *pQPriBMapHead,
  64.         BMAP_LIST *pBMapList, UINT maxPriority);
  65. extern STATUS   qPriBMapDelete (Q_PRI_BMAP_HEAD *pQPriBMapHead);
  66. extern Q_PRI_NODE * qPriBMapEach (Q_PRI_BMAP_HEAD *pQHead, FUNCPTR routine,
  67.       int routineArg);
  68. extern Q_PRI_NODE * qPriBMapGet (Q_PRI_BMAP_HEAD *pQPriBMapHead);
  69. extern STATUS  qPriBMapListDelete (BMAP_LIST *pBMapList);
  70. extern ULONG  qPriBMapKey (Q_PRI_NODE *pQPriNode);
  71. extern int  qPriBMapInfo (Q_PRI_BMAP_HEAD *pQPriBMapHead,
  72.       int nodeArray [], int maxNodes);
  73. extern void  qPriBMapPut (Q_PRI_BMAP_HEAD *pQPriBMapHead,
  74.      Q_PRI_NODE *pQPriNode, ULONG key);
  75. extern STATUS  qPriBMapRemove (Q_PRI_BMAP_HEAD *pQPriBMapHead,
  76. Q_PRI_NODE *pQPriNode);
  77. extern void  qPriBMapResort (Q_PRI_BMAP_HEAD *pQPriBMapHead,
  78. Q_PRI_NODE *pQPriNode, ULONG newKey);
  79. #else /* __STDC__ */
  80. extern BMAP_LIST * qPriBMapListCreate ();
  81. extern Q_PRI_BMAP_HEAD *qPriBMapCreate ();
  82. extern Q_PRI_NODE * qPriBMapEach ();
  83. extern Q_PRI_NODE * qPriBMapGet ();
  84. extern STATUS  qPriBMapDelete ();
  85. extern STATUS  qPriBMapInit ();
  86. extern STATUS  qPriBMapListDelete ();
  87. extern ULONG  qPriBMapKey ();
  88. extern int  qPriBMapInfo ();
  89. extern void  qPriBMapPut ();
  90. extern STATUS  qPriBMapRemove ();
  91. extern void  qPriBMapResort ();
  92. #endif /* __STDC__ */
  93. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  94. #pragma align 0 /* turn off alignment requirement */
  95. #endif /* CPU_FAMILY==I960 */
  96. #ifdef __cplusplus
  97. }
  98. #endif
  99. #endif /* __INCqPriBMapLibh */