Main Page Modules Alphabetical List Data Structures File List Data Fields Globals # IxOsBuffPoolMgt.h Go to the documentation of this file.
    00001
    00078 #ifndef IXOSBUFFPOOLMGT_H
    00079 #define IXOSBUFFPOOLMGT_H
    00080
    00081 /*
    00082  * Put the system defined include files required.
    00083  */
    00084
    00085 #ifdef __vxworks
    00086 #include <netBufLib.h>
    00087 #endif
    00088
    00089 /*
    00090  * Put the user defined include files required.
    00091  */
    00092
    00093 #ifdef __vxworks
    00094 #include "IxOsServices.h"
    00095 #endif
    00096 #include "IxTypes.h"
    00097 #include "IxOsBuffMgt.h"
    00098 #include "IxOsCacheMMU.h"
    00099
    00100
    00101 /*
    00102  * #defines and macros used in this file.
    00103  */
    00104
    00117 #define IX_MBUF_POOL_SIZE_ALIGN(size)                 \
    00118     ((((size) + (IX_XSCALE_CACHE_LINE_SIZE - 1)) /      \
    00119         IX_XSCALE_CACHE_LINE_SIZE) *                  \
    00120             IX_XSCALE_CACHE_LINE_SIZE)
    00121
    00122
    00141 #define IX_MBUF_POOL_MBUF_AREA_SIZE_ALIGNED(count) \
    00142         ixOsBuffPoolMbufAreaSizeGet(count)
    00143
    00144
    00165 #define IX_MBUF_POOL_DATA_AREA_SIZE_ALIGNED(count, size) \
    00166         ixOsBuffPoolDataAreaSizeGet((count), (size))
    00167
    00168
    00182 #define IX_MBUF_POOL_MBUF_AREA_ALLOC(count, memAreaSize) \
    00183     IX_ACC_DRV_DMA_MALLOC((memAreaSize =                 \
    00184         IX_MBUF_POOL_MBUF_AREA_SIZE_ALIGNED(count)))
    00185
    00204 #define IX_MBUF_POOL_DATA_AREA_ALLOC(count, size, memAreaSize) \
    00205     IX_ACC_DRV_DMA_MALLOC((memAreaSize =                     \
    00206         IX_MBUF_POOL_DATA_AREA_SIZE_ALIGNED(count,size)))
    00207
    00217 #ifndef __vxworks
    00218 #  define IX_MBUF_POOL_FREE_COUNT(poolPtr) ((poolPtr)->freeBufsInPool)
    00219 #else
    00220 #  define IX_MBUF_POOL_FREE_COUNT(poolPtr) ix_get_free_mblk_count(poolPtr)
    00221
    00222 /*
    00223  * function to walk through the mbuf chain of a netBufLib pool to count
    00224  * the buffers currently available in the pool
    00225  */
    00226 static __inline__ int
    00227 ix_get_free_mblk_count(NET_POOL *poolPtr)
    00228 {
    00229     int i = 0;
    00230     IX_MBUF *head = poolPtr->pmBlkHead;
    00231     while(head)
    00232     {
    00233         head = head->mBlkHdr.mNext;
    00234         i++;
    00235     }
    00236     return i;
    00237 }
    00238
    00239 #endif
    00240
    00241
    00248 #define IX_MBUF_MAX_POOLS      32
    00249
    00255 #define IX_MBUF_POOL_NAME_LEN  64
    00256
    00257
    00258 #ifndef __vxworks
    00259
    00265 typedef enum
    00266 {
    00267     IX_MBUF_POOL_TYPE_SYS_ALLOC = 0,
    00268     IX_MBUF_POOL_TYPE_USER_ALLOC,
    00269 } IxMbufPoolAllocationType;
    00270
    00271
    00276 typedef struct
    00277 {
    00278     IX_MBUF *nextFreeBuf;
    00279     void *mbufMemPtr;
    00280     void *dataMemPtr;
    00281     int bufDataSize;
    00282     int totalBufsInPool;
    00283     int freeBufsInPool;
    00284     int mbufMemSize;
    00285     int dataMemSize;
    00286     char name[IX_MBUF_POOL_NAME_LEN + 1];
    00287     IxMbufPoolAllocationType poolAllocType;
    00288 } IxMbufPool;
    00289
    00290 typedef IxMbufPool IX_MBUF_POOL;
    00291
    00292 #else
    00293
    00300 typedef NET_POOL IX_MBUF_POOL;
    00301
    00302 #endif
    00303
    00304
    00311 #define IX_MBUF_POOL_INIT(poolPtrPtr, count, size, name) \
    00312     ixOsBuffPoolInit((poolPtrPtr), (count), (size), (name))
    00313
    00320 #define IX_MBUF_POOL_INIT_NO_ALLOC(poolPtrPtr, bufPtr, dataPtr, count, size, name) \
    00321     ixOsBuffPoolInitNoAlloc((poolPtrPtr), (bufPtr), (dataPtr), (count), (size), (name))
    00322
    00329 #define IX_MBUF_POOL_GET(poolPtr, bufPtrPtr) \
    00330     ixOsBuffPoolUnchainedBufGet((poolPtr), (bufPtrPtr))
    00331
    00338 #define IX_MBUF_POOL_PUT(bufPtr) \
    00339     ixOsBuffPoolBufFree(bufPtr)
    00340
    00347 #define IX_MBUF_POOL_PUT_CHAIN(bufPtr) \
    00348     ixOsBuffPoolBufChainFree(bufPtr)
    00349
    00356 #define IX_MBUF_POOL_SHOW(poolPtr) \
    00357     ixOsBuffPoolShow(poolPtr)
    00358
    00365 #define IX_MBUF_POOL_MDATA_RESET(bufPtr) \
    00366     ixOsBuffPoolBufDataPtrReset(bufPtr)
    00367
    00368
    00369
    00370 /*
    00371  * Prototypes for interface functions.
    00372  */
    00373
    00418 IX_STATUS
    00419 ixOsBuffPoolInit (IX_MBUF_POOL **poolPtrPtr, int count, int size, char *name);
    00420
    00421
    00434 IX_MBUF_POOL *
    00435 ixOsBuffPoolAllocate (void);
    00436
    00437
    00455 UINT32
    00456 ixOsBuffPoolDataAreaSizeGet(int count, int size);
    00457
    00458
    00478 IX_MBUF *
    00479 ixOsBuffPoolMbufInit (int mbufSizeAligned,
    00480                       int dataSizeAligned,
    00481                       IX_MBUF_POOL *poolPtr);
    00482
    00483
    00501 UINT32
    00502 ixOsBuffPoolMbufAreaSizeGet(int count);
    00503
    00565 IX_STATUS
    00566 ixOsBuffPoolInitNoAlloc (IX_MBUF_POOL **poolPtrPtr, void *poolBufPtr,
    00567              void *poolDataPtr, int count, int size, char *name);
    00568
    00598 IX_STATUS
    00599 ixOsBuffPoolUnchainedBufGet (IX_MBUF_POOL *poolPtr, IX_MBUF **newBufPtrPtr);
    00600
    00629 IX_MBUF *
    00630 ixOsBuffPoolBufFree (IX_MBUF *bufPtr);
    00631
    00658 void
    00659 ixOsBuffPoolBufChainFree (IX_MBUF *bufPtr);
    00660
    00685 IX_STATUS
    00686 ixOsBuffPoolShow (IX_MBUF_POOL *poolPtr);
    00687
    00688
    00727 IX_STATUS
    00728 ixOsBuffPoolBufDataPtrReset (IX_MBUF *bufPtr);
    00729
    00743 IX_STATUS
    00744 ixOsBuffPoolUninit(IX_MBUF_POOL *pool);
    00745
    00746 #endif  /* IXOSBUFFPOOLMGT_H */
    00747
    00748
Automatically generated from sources. © Intel Corp. 2003