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

VxWorks

开发平台:

C/C++

  1. /* endLib.h - definitions for Enhanced Network Drivers */
  2. /* Copyright 1984-2002 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01p,17may02,rcs  add for MIB-II interface callbacks. SPR# 77478
  7. 01o,08nov01,wap  Add missing prototype for txRcvRtnCall()
  8. 01n,10oct01,rae  update copyright
  9. 01m,27jun01,rcs  Merge Tor2.0.2 to Tornado-Comp-Drv
  10. 01l,23oct00,rae  fixed SPR #33687 by removing semicolon from END_OBJ_READY
  11. 01k,16oct00,spm  merged version 01k from tor3_0_x branch (base version 01j):
  12.                  adds link-level broadcast support
  13. 01j,29apr99,pul  Upgraded NPT phase3 code to tor2.0.0
  14. 01i,18mar99,sj   fixed typo in TK_RCV_RTN_CALL
  15. 01h,08dec97,gnn  END code review fixes.
  16. 01g,17oct97,vin  changed prototypes.
  17. 01f,25sep97,gnn  SENS beta feedback fixes
  18. 01e,19aug97,gnn  changes due to new buffering scheme.
  19. 01d,12aug97,gnn  changes necessitated by MUX/END update.
  20. 01c,07apr97,map  Added more prototypes and END_OBJ_UNLOAD.
  21. 01b,03feb97,gnn  Added speed as an argument to MIB stuff.
  22. 01a,26dec96,gnn  written.
  23. */
  24.  
  25. /*
  26. DESCRIPTION
  27. This include file contains definitions used by the Enhanced Network Driver
  28. library (endLib.c) and by all of the ENDs.
  29. If the macro END_MACROS is set during compilation then all of the functions in
  30. the library will included as macros instead of functions, otherwise all of the
  31. routines will be functions.  This is a time/space tradeoff that can be made at
  32. compile time.
  33. INCLUDE FILES:
  34. */
  35. #ifndef __INCendLibh
  36. #define __INCendLibh
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40. /* includes */
  41. #include "vxWorks.h"
  42. #include "end.h"
  43. #include "muxLib.h"
  44. /* defines */
  45. #define MIB2_IN_ERRS 0
  46. #define MIB2_IN_UCAST 1
  47. #define MIB2_OUT_ERRS 2
  48. #define MIB2_OUT_UCAST 3
  49. #ifdef END_MACROS
  50. #define MIB_ALLOC(m2Id, ifType, enetAddr, addrLen, mtu, speed, name, unit)   
  51. if ((pMibRtn != NULL) && (pMibRtn->mibAlloc != NULL))      
  52.     ((* (pMibRtn->mibAlloc)) (m2Id, ifType, (UINT8 *)enetAddr, addrLen, mtu, 
  53.                               speed, name, unit))                            
  54. #define MIB_FREE(m2Id)     
  55. if ((pMibRtn != NULL) && (pMibRtn->mibFree != NULL))     
  56.     ((* (pMibRtn->mibFree)) (m2Id))
  57. #define MIB_CNT_UPDATE(m2Id, cntName, pktData, pktLen)     
  58. if ((pMibRtn != NULL) && (pMibRtn->mibCntUpdate != NULL))     
  59.     ((* (pMibRtn->mibCntUpdate)) (m2Id, cntName, pktLen, pktData))
  60. #define MIB_VAR_UPDATE(m2Id, varName, data)     
  61. if ((pMibRtn != NULL) && (pMibRtn->mibVarUpdate != NULL))     
  62.     ((* (pMibRtn->mibVarUpdate)) (m2Id, varName, (caddr_t)data))
  63. #define END_RCV_RTN_CALL(pEnd,pMblk) 
  64.     if ((pEnd)->receiveRtn) 
  65. (pEnd)->receiveRtn ((pEnd), pMblk,NULL,NULL,NULL,NULL); 
  66. }
  67. #define TK_RCV_RTN_CALL(pEnd,pMblk, netSvcOffset, netSvcType, 
  68. wrongDstInt, pAsyncData) 
  69.             if ((pEnd)->receiveRtn) 
  70.                 { 
  71.                 (pEnd)->receiveRtn ((pEnd), pMblk, netSvcOffset, netSvcType, 
  72.     wrongDstInt, pAsyncData); 
  73.                 }
  74. #define END_TX_SEM_TAKE(pEnd,tmout) 
  75.     (semTake ((pEnd)->txSem,tmout))
  76. #define END_TX_SEM_GIVE(pEnd) 
  77.     (semGive ((pEnd)->txSem))
  78. #define END_FLAGS_CLR(pEnd,clrBits) 
  79.             ((pEnd)->flags &= ~(clrBits))
  80. #define END_FLAGS_SET(pEnd,setBits) 
  81.             ((pEnd)->flags |= (setBits))
  82. #define END_FLAGS_GET(pEnd) 
  83.     ((pEnd)->flags)
  84. #define END_MULTI_LST_CNT(pEnd) 
  85.     (lstCount (&(pEnd)->multiList))
  86. #define END_MULTI_LST_FIRST(pEnd) 
  87.     (ETHER_MULTI *)(lstFirst (&(pEnd)->multiList))
  88. #define END_MULTI_LST_NEXT(pCurrent) 
  89.     (ETHER_MULTI *)(lstNext (&pCurrent->node))
  90. #define END_DEV_NAME(end) 
  91.     (end.devObject.name)
  92. #define END_OBJECT_UNLOAD(pEnd) 
  93.     { 
  94.     lstFree (&(pEnd)->multiList); 
  95.     lstFree (&(pEnd)->protocols); 
  96.     }
  97. #define END_OBJ_INIT(pEnd,pDev,name,unit,pFuncs, pDesc) 
  98.     endObjInit ((pEnd),pDev,name,unit,pFuncs, pDesc)
  99. #define END_OBJ_READY(pEnd, flags) 
  100.     endObjFlagSet ((pEnd),flags)
  101. #define END_ERR_ADD(pEnd,code,value) 
  102.     (mib2ErrorAdd(&(pEnd)->mib2Tbl, code, value))
  103. #define END_MIB_INIT(pEnd,type,addr,addrLen,mtu,speed) 
  104.     (mib2Init(&(pEnd)->mib2Tbl, type,addr, addrLen, mtu, speed))
  105. #else
  106. #define END_RCV_RTN_CALL(pEnd,pData) 
  107.                 endRcvRtnCall((pEnd), pData)
  108.                 
  109. #define TK_RCV_RTN_CALL(pEnd,pData, netSvcOffset, netSvcType, 
  110. wrongDstInt, pAsyncData) 
  111.             tkRcvRtnCall((pEnd), pData, netSvcOffset, netSvcType, 
  112.      wrongDstInt, pAsyncData)
  113. #define END_TX_SEM_TAKE(pEnd,tmout) 
  114.                 endTxSemTake((pEnd), tmout)
  115. #define END_TX_SEM_GIVE(pEnd) 
  116.                 endTxSemGive(pEnd)
  117. #define END_FLAGS_CLR(pEnd,clrBits) 
  118.                 endFlagsClr((pEnd), clrBits)
  119. #define END_FLAGS_SET(pEnd,setBits) 
  120.                 endFlagsSet((pEnd), setBits)
  121. #define END_FLAGS_GET(pEnd) 
  122.                 (endFlagsGet((pEnd)))
  123. #define END_MULTI_LST_CNT(pEnd) 
  124.                 (endMultiLstCnt((pEnd)))
  125. #define END_MULTI_LST_FIRST(pEnd) 
  126.                 (endMultiLstFirst((pEnd)))
  127. #define END_MULTI_LST_NEXT(pCurrent) 
  128.                 (endMultiLstNext((pCurrent)))
  129. #define END_DEV_NAME(pEnd) 
  130.                 (endDevName((pEnd)))
  131. #define END_OBJECT_UNLOAD(pEnd) 
  132.                 endObjectUnload((pEnd))
  133.                 
  134. #define END_OBJ_UNLOAD(X) END_OBJECT_UNLOAD(X)
  135. #define END_OBJ_INIT(pEnd,pDev,name,unit,pFuncs, pDescription) 
  136.     endObjInit ((pEnd),pDev,name,unit,pFuncs, pDescription)
  137. #define END_OBJ_READY(pEnd, flags) 
  138.     endObjFlagSet ((pEnd),flags)
  139. #define END_ERR_ADD(pEnd,code,value) 
  140.     (mib2ErrorAdd(&(pEnd)->mib2Tbl, code, value))
  141. #define END_MIB_INIT(pEnd,type,addr,len,mtu,speed) 
  142.     (mib2Init(&(pEnd)->mib2Tbl, type, addr, len, mtu, speed))
  143. #endif /* END_MACROS */
  144.                 
  145. /* typedefs */
  146. typedef struct mib_routines
  147.     {
  148.     FUNCPTR mibAlloc; 
  149.     FUNCPTR mibFree; 
  150.     FUNCPTR mibCntUpdate; 
  151.     FUNCPTR mibVarUpdate;
  152.     } MIB_ROUTINES;
  153. /* globals */
  154. IMPORT MIB_ROUTINES * pMibRtn; 
  155. /* locals */
  156. /* forward declarations */
  157. STATUS endMibIfInit (FUNCPTR pMibAllocRtn, FUNCPTR pMibFreeRtn,
  158.                      FUNCPTR pMibCtrUpdate, FUNCPTR pMibVarUpdate); 
  159. STATUS endObjInit (END_OBJ* pEndObj, DEV_OBJ* pDevice,
  160.                     char* pBaseName ,int unit, NET_FUNCS* pFuncTable,
  161.                     char* pDescription);
  162. STATUS endObjFlagSet (END_OBJ*,UINT);
  163. STATUS mib2Init (M2_INTERFACETBL*,long,UCHAR*,int, int, int);
  164. STATUS mib2ErrorAdd (M2_INTERFACETBL*, int, int);
  165. void endTxSemTake (END_OBJ*, int);
  166. void endTxSemGive (END_OBJ*);
  167. void endRcvRtnCall (END_OBJ*, M_BLK_ID);
  168. void tkRcvRtnCall (END_OBJ *, M_BLK_ID, long, long, BOOL, void *);
  169. void endObjectUnload (END_OBJ*);
  170. void endFlagsSet (END_OBJ *, int);
  171. void endFlagsClr (END_OBJ *, int);
  172. int endFlagsGet (END_OBJ *);
  173. ETHER_MULTI* endMultiLstFirst (END_OBJ *);
  174. ETHER_MULTI* endMultiLstNext (ETHER_MULTI *);
  175. M_BLK_ID    endEtherAddressForm (M_BLK_ID pNBuff, M_BLK_ID pSrcAddr,
  176.                                  M_BLK_ID pDstAddr, BOOL bcastFlag);
  177. STATUS  endEtherPacketDataGet (M_BLK_ID pMblk, LL_HDR_INFO * pLinkHdrInfo);
  178. STATUS  endEtherPacketAddrGet (M_BLK_ID pMblk,
  179.                                M_BLK_ID pSrc,
  180.                                M_BLK_ID pDst,
  181.                                M_BLK_ID pESrc,
  182.                                M_BLK_ID pEDst);
  183. STATUS endEtherResolve (void* arg1, void* arg2, void* arg3, void* arg4,
  184.                         void* arg5, void* arg6);
  185. #ifdef __cplusplus
  186. }
  187. #endif
  188. #endif /* __INCendLibh */