mbufLib.h
资源名称:ixp425BSP.rar [点击查看]
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:5k
源码类别:
VxWorks
开发平台:
C/C++
- /* mbufLib.h - mbuf interface library header */
- /* Copyright 1984-1995 Wind River Systems, Inc. */
- /*
- modification history
- --------------------
- 01b,13mar95,dzb added MBUF_VALID, and changed macros to use (SPR #4066).
- 01a,08nov94,dzb written.
- */
- #ifndef __INCmbufLibh
- #define __INCmbufLibh
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* includes */
- #include "vwModNum.h"
- #include "intLib.h"
- #include "limits.h"
- #include "net/mbuf.h"
- /* typedefs */
- #if ((CPU_FAMILY==I960) && (defined __GNUC__))
- #pragma align 1 /* tell gcc960 not to optimize alignments */
- #endif /* CPU_FAMILY==I960 */
- /* definition of mbuf ID */
- typedef struct mbufId /* MBUF_ID */
- {
- union
- {
- struct mbuf * head; /* head of mbuf chain */
- struct mbufId * idNext; /* next ID in free chain */
- } uId;
- u_char type; /* mbuf ID type */
- } *MBUF_ID;
- /* definition of mbuf desc */
- typedef struct mbufDesc /* MBUF_DESC */
- {
- caddr_t buf; /* user buffer address */
- union
- {
- u_char refCnt; /* share counter */
- struct mbufDesc * descNext; /* next desc in free chain */
- } uDesc;
- } *MBUF_DESC;
- typedef struct mbuf * MBUF_SEG;
- extern struct mbufId * _mbufIdHead;
- #if ((CPU_FAMILY==I960) && (defined __GNUC__))
- #pragma align 0 /* turn off alignment requirement */
- #endif /* CPU_FAMILY==I960 */
- /* defines */
- #define mbufHead uId.head
- #define mbufIdNext uId.idNext
- #define mbufRefCnt uDesc.refCnt
- #define mbufDescNext uDesc.descNext
- /* status codes */
- #define S_mbufLib_ID_INVALID (M_mbufLib | 1)
- #define S_mbufLib_ID_EMPTY (M_mbufLib | 2)
- #define S_mbufLib_SEGMENT_NOT_FOUND (M_mbufLib | 3)
- #define S_mbufLib_LENGTH_INVALID (M_mbufLib | 4)
- #define S_mbufLib_OFFSET_INVALID (M_mbufLib | 5)
- #define MBUF_ID_INC 50 /* increment for ID alloc */
- #define MBUF_DESC_INC 50 /* increment for desc alloc */
- #define MBUF_BEGIN ZBUF_BEGIN /* start of chain */
- #define MBUF_END ZBUF_END /* end of chain */
- #define MBUF_NONE ((MBUF_SEG) NONE) /* cut past chain */
- #define MBUF_VALID 0x5e /* validate off magic number */
- #define MBUF_ID_CREATE(mbufId)
- {
- int lockKey = intLock ();
- if ((mbufId = _mbufIdHead) != NULL)
- {
- _mbufIdHead = mbufId->mbufIdNext;
- intUnlock (lockKey);
- mbufId->type = MBUF_VALID;
- mbufId->mbufHead = NULL;
- }
- else
- {
- intUnlock (lockKey);
- mbufId = _mbufCreate ();
- }
- }
- #define MBUF_ID_DELETE_EMPTY(mbufId)
- {
- int lockKey;
- mbufId->type = MT_FREE;
- lockKey = intLock ();
- mbufId->mbufIdNext = _mbufIdHead;
- _mbufIdHead = mbufId;
- intUnlock (lockKey);
- }
- #define MBUF_ID_DELETE(mbufId)
- {
- if (mbufId->mbufHead != NULL)
- m_freem (mbufId->mbufHead);
- MBUF_ID_DELETE_EMPTY(mbufId);
- }
- /* function declarations */
- #if defined(__STDC__) || defined(__cplusplus)
- extern void * _mbufLibInit (void);
- extern MBUF_ID _mbufCreate (void);
- extern STATUS _mbufDelete (MBUF_ID mbufId);
- extern MBUF_SEG _mbufInsert (MBUF_ID mbufId1, MBUF_SEG mbufSeg, int offset,
- MBUF_ID mbufId2);
- extern MBUF_SEG _mbufInsertBuf (MBUF_ID mbufId, MBUF_SEG mbufSeg, int offset,
- caddr_t buf, int len, VOIDFUNCPTR freeRtn, int freeArg);
- extern MBUF_SEG _mbufInsertCopy (MBUF_ID mbufId, MBUF_SEG mbufSeg,
- int offset, caddr_t buf, int len);
- extern int _mbufExtractCopy (MBUF_ID mbufId, MBUF_SEG mbufSeg,
- int offset, caddr_t buf, int len);
- extern MBUF_SEG _mbufCut (MBUF_ID mbufId, MBUF_SEG mbufSeg, int offset,
- int len);
- extern MBUF_ID _mbufSplit (MBUF_ID mbufId, MBUF_SEG mbufSeg, int offset);
- extern MBUF_ID _mbufDup (MBUF_ID mbufId, MBUF_SEG mbufSeg, int offset,
- int len);
- extern int _mbufLength (MBUF_ID mbufId);
- extern MBUF_SEG _mbufSegFind (MBUF_ID mbufId, MBUF_SEG mbufSeg, int *pOffset);
- extern MBUF_SEG _mbufSegNext (MBUF_ID mbufId, MBUF_SEG mbufSeg);
- extern MBUF_SEG _mbufSegPrev (MBUF_ID mbufId, MBUF_SEG mbufSeg);
- extern caddr_t _mbufSegData (MBUF_ID mbufId, MBUF_SEG mbufSeg);
- extern int _mbufSegLength (MBUF_ID mbufId, MBUF_SEG mbufSeg);
- #else /* __STDC__ */
- extern void * _mbufLibInit ();
- extern MBUF_ID _mbufCreate ();
- extern STATUS _mbufDelete ();
- extern MBUF_SEG _mbufInsert ();
- extern MBUF_SEG _mbufInsertBuf ();
- extern MBUF_SEG _mbufInsertCopy ();
- extern int _mbufExtractCopy ();
- extern MBUF_SEG _mbufCut ();
- extern MBUF_ID _mbufSplit ();
- extern MBUF_ID _mbufDup ();
- extern int _mbufLength ();
- extern MBUF_SEG _mbufSegFind ();
- extern MBUF_SEG _mbufSegNext ();
- extern MBUF_SEG _mbufSegPrev ();
- extern caddr_t _mbufSegData ();
- extern int _mbufSegLength ();
- #endif /* __STDC__ */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __INCmbufLibh */