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

VxWorks

开发平台:

C/C++

  1. /* zbufLib.h - zeroCopy buffer interface library header */
  2. /* Copyright 1984-1994 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,08nov94,dzb  written.
  7. */
  8. #ifndef __INCzbufLibh
  9. #define __INCzbufLibh
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. /* includes */
  14. #include "limits.h"
  15. #include "private/semLibP.h"
  16. /* typedefs */
  17. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  18. #pragma align 1                 /* tell gcc960 not to optimize alignments */
  19. #endif  /* CPU_FAMILY==I960 */
  20. /* HIDDEN */
  21. typedef struct /* ZBUF_FUNC */
  22.     {
  23.     FUNCPTR createRtn; /* zbufCreate() */
  24.     FUNCPTR deleteRtn; /* zbufDelete() */
  25.     FUNCPTR insertRtn; /* zbufInsert() */
  26.     FUNCPTR insertBufRtn; /* zbufInsertBuf() */
  27.     FUNCPTR insertCopyRtn; /* zbufInsertCopy() */
  28.     FUNCPTR extractCopyRtn; /* zbufExtractCopy() */
  29.     FUNCPTR cutRtn; /* zbufCut() */
  30.     FUNCPTR splitRtn; /* zbufSplit() */
  31.     FUNCPTR dupRtn; /* zbufDup() */
  32.     FUNCPTR lengthRtn; /* zbufLength() */
  33.     FUNCPTR segFindRtn; /* zbufSegFind() */
  34.     FUNCPTR segNextRtn; /* zbufSegNext() */
  35.     FUNCPTR segPrevRtn; /* zbufSegPrev() */
  36.     FUNCPTR segDataRtn; /* zbufSegData() */
  37.     FUNCPTR segLengthRtn; /* zbufSegLength() */
  38.     } ZBUF_FUNC;
  39. /* Pools not used */
  40. typedef struct zbufBlockId /* ZBUF_BLOCK_ID */
  41.     {
  42.     int length;
  43.     void * segFree;
  44.     struct zbufPoolId * zbufPoolId;
  45.     struct zbufBlockId * blockNext;
  46.     } *ZBUF_BLOCK_ID;
  47. typedef struct zbufPoolId /* ZBUF_POOL_ID */
  48.     {
  49.     int use;
  50.     SEMAPHORE poolSem;
  51.     SEMAPHORE waitSem;
  52.     struct zbufBlockId * blockHead;
  53.     } *ZBUF_POOL_ID;
  54. #if ((CPU_FAMILY==I960) && (defined __GNUC__))
  55. #pragma align 0                 /* turn off alignment requirement */
  56. #endif  /* CPU_FAMILY==I960 */
  57. typedef void * ZBUF_ID;
  58. typedef void * ZBUF_SEG;
  59. /* END_HIDDEN */
  60. /* defines */
  61. #define ZBUF_BEGIN -INT_MAX /* shortcut for prepending */
  62. #define ZBUF_END INT_MAX /* shortcut for appending */
  63. #define ZBUF_NONE ((ZBUF_SEG) NONE) /* cut past zbuf */
  64. /* function declarations */
  65. #if defined(__STDC__) || defined(__cplusplus)
  66. extern STATUS zbufLibInit (FUNCPTR libInitRtn);
  67. extern ZBUF_ID zbufCreate (void);
  68. extern STATUS zbufDelete (ZBUF_ID zbufId);
  69. extern ZBUF_SEG zbufInsert (ZBUF_ID zbufId1, ZBUF_SEG zbufSeg, int offset,
  70.                     ZBUF_ID zbufId2);
  71. extern ZBUF_SEG zbufInsertBuf (ZBUF_ID zbufId, ZBUF_SEG zbufSeg, int offset,
  72.     caddr_t buf, int len, VOIDFUNCPTR freeRtn, int freeArg);
  73. extern ZBUF_SEG zbufInsertCopy (ZBUF_ID zbufId, ZBUF_SEG zbufSeg,
  74.     int offset, caddr_t buf, int len);
  75. extern int zbufExtractCopy (ZBUF_ID zbufId, ZBUF_SEG zbufSeg,
  76.     int offset, caddr_t buf, int len);
  77. extern ZBUF_SEG zbufCut (ZBUF_ID zbufId, ZBUF_SEG zbufSeg, int offset, int len);
  78. extern ZBUF_ID zbufSplit (ZBUF_ID zbufId, ZBUF_SEG zbufSeg, int offset);
  79. extern ZBUF_ID zbufDup (ZBUF_ID zbufId, ZBUF_SEG zbufSeg, int offset, int len);
  80. extern int zbufLength (ZBUF_ID zbufId);
  81. extern ZBUF_SEG zbufSegFind (ZBUF_ID zbufId, ZBUF_SEG zbufSeg, int *pOffset);
  82. extern ZBUF_SEG zbufSegNext (ZBUF_ID zbufId, ZBUF_SEG zbufSeg);
  83. extern ZBUF_SEG zbufSegPrev (ZBUF_ID zbufId, ZBUF_SEG zbufSeg);
  84. extern caddr_t zbufSegData (ZBUF_ID zbufId, ZBUF_SEG zbufSeg);
  85. extern int zbufSegLength (ZBUF_ID zbufId, ZBUF_SEG zbufSeg);
  86. #else /* __STDC__ */
  87. extern STATUS zbufLibInit ();
  88. extern ZBUF_ID zbufCreate ();
  89. extern STATUS zbufDelete ();
  90. extern ZBUF_SEG zbufInsert ();
  91. extern ZBUF_SEG zbufInsertBuf ();
  92. extern ZBUF_SEG zbufInsertCopy ();
  93. extern int zbufExtractCopy ();
  94. extern ZBUF_SEG zbufCut ();
  95. extern ZBUF_ID zbufSplit ();
  96. extern ZBUF_ID zbufDup ();
  97. extern int zbufLength ();
  98. extern ZBUF_SEG zbufSegFind ();
  99. extern ZBUF_SEG zbufSegNext ();
  100. extern ZBUF_SEG zbufSegPrev ();
  101. extern caddr_t zbufSegData ();
  102. extern int zbufSegLength ();
  103. #endif /* __STDC__ */
  104. #ifdef __cplusplus
  105. }
  106. #endif
  107. #endif /* __INCzbufLibh */