funcBind.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:8k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* funcBind.c - function binding library */
  2. /* Copyright 1984-2002 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5. modification history
  6. --------------------
  7. 02m,26mar02,pai  added _func_sseTaskRegsShow (SPR 74103).
  8. 02l,14mar02,elr  replaced ftpErrorSuppress with ftplDebug (SPR 71496)
  9. 02k,09nov01,jn   add new internal symLib api
  10. 02j,02nov01,brk  added _func_selPtyAdd, _func_selPtyDelete (SPR 65498)
  11. 02i,05aug00,jgn  merge DOT-4 pthreads code
  12. 02h,29oct01,tcr  add Windview networking variables
  13. 02g,26sep01,jws  add vxMP and vxFusion show & info rtn ptrs (SPR 36055)
  14. 01f,20sep01,aeg  added _func_selWakeupListTerm.
  15. 01e,03apr01,kab  Added _WRS_ALTIVEC_SUPPORT
  16. 01d,16mar01,pcs  ADDED _func_altivecTaskRegsShow
  17. 01c,03mar00,zl   merged SH support into T2
  18. 01b,10aug98,pr   added WindView function pointers for i960
  19. 02a,15apr98,cth  added _func_evtLogReserveTaskName for WV2.0
  20. 01w,08apr98,pr   added _func_evtLogT0_noInt. Set evtAction as UINT32.
  21. 01y,13dec97,pr   replaced somw WindView 1.0 variables with WV2.0 ones
  22. 01x,17nov97,cth  removed all scrPad and evtBuf references, for WV2.0
  23. 01w,22jul97,pr   added _func_trgCheck
  24. 01v,24jun97,pr   added evtInstMode
  25. 01v,09oct97,tam  added _func_ioTaskStdSet
  26. 01u,21feb97,tam  added _dbgDsmInstRtn
  27. 01t,08jul96,pr   added _func_evtLogT1_noTS
  28. 01s,12may95,p_m  added _func_printErr, _func_symFindByValue, _func_spy*,
  29.        _func_taskCreateHookAdd and _func_taskDeleteHookAdd.
  30. 01r,24jan94,smb  added windview event logging functions for portable kernel.
  31. 01q,10dec93,smb  added windview event logging functions.
  32. 01p,05sep93,jcf  added _remCurId[SG]et.
  33. 01o,23aug93,jmm  added _func_bdall
  34. 01n,22jul93,jmm  added _netLsByName (spr 2305)
  35. 01m,13feb93,kdl  added _procNumWasSet (SPR #2011).
  36. 01l,13nov92,jcf  added _func_logMsg.
  37. 01k,29sep92,jwt  merged cacheLibInit(), cacheReset(), and cacheModeSet().
  38. 01j,20sep92,kdl  added _func_ftpLs, ftpErrorSuppress.
  39. 01i,31aug92,rrr  added _func_sigprocmask
  40. 01h,23aug92,jcf  added cache*, _func_{sel*,excJobAdd,memalign,valloc}
  41. 01g,02aug92,jcf  added/tuned _func_exc*.
  42. 01f,30jul92,rdc  added additional field to vmLibInfo.
  43. 01e,29jul92,jcf  added _func_fclose.
  44. 01d,29jul92,rrr  added hooks for signals and exceptions
  45. 01c,27jul92,rdc  added vmLibInfo.
  46. 01b,19jul92,pme  added _func_smObjObjShow.
  47. 01a,04jul92,jcf  created.
  48. */
  49. /*
  50. INTERNAL
  51. This library contains global function pointers to bind libraries together
  52. at runtime.  Someday a tool chain might initialize these variables
  53. automatically.  For now the library initialization routines fill in the
  54. function pointer for other libraries to utilize.
  55. NOMANUAL
  56. */
  57. #include "vxWorks.h"
  58. #include "cacheLib.h"
  59. #include "private/funcBindP.h"
  60. #include "private/vmLibP.h"
  61. #include "wvNetLib.h"
  62. /* global variables */
  63. FUNCPTR     _func_ioTaskStdSet;
  64. FUNCPTR     _func_bdall;
  65. FUNCPTR     _func_dspTaskRegsShow;
  66. VOIDFUNCPTR _func_dspRegsListHook; /* arch dependent DSP regs list */
  67. FUNCPTR     _func_dspMregsHook; /* arch dependent mRegs() hook */
  68. FUNCPTR     _func_excBaseHook;
  69. FUNCPTR     _func_excInfoShow;
  70. FUNCPTR     _func_excIntHook;
  71. FUNCPTR     _func_excJobAdd;
  72. FUNCPTR     _func_excPanicHook;
  73. FUNCPTR     _func_fclose;
  74. FUNCPTR     _func_fppTaskRegsShow;
  75. #ifdef _WRS_ALTIVEC_SUPPORT
  76. FUNCPTR     _func_altivecTaskRegsShow;
  77. #endif /* _WRS_ALTIVEC_SUPPORT */
  78. FUNCPTR     _func_ftpLs;
  79. FUNCPTR     _func_netLsByName;
  80. FUNCPTR     _func_logMsg;
  81. FUNCPTR     _func_memalign;
  82. FUNCPTR     _func_printErr;
  83. FUNCPTR     _func_selPtyAdd;
  84. FUNCPTR     _func_selPtyDelete;
  85. FUNCPTR     _func_pthread_setcanceltype;
  86. FUNCPTR     _func_selTyAdd;
  87. FUNCPTR     _func_selTyDelete;
  88. FUNCPTR     _func_selWakeupAll;
  89. FUNCPTR     _func_selWakeupListInit;
  90. FUNCPTR     _func_selWakeupListTerm;
  91. VOIDFUNCPTR _func_sigExcKill;
  92. FUNCPTR     _func_sigprocmask;
  93. FUNCPTR     _func_sigTimeoutRecalc;
  94. FUNCPTR     _func_smObjObjShow;
  95. FUNCPTR     _func_spy;
  96. FUNCPTR     _func_spyStop;
  97. FUNCPTR     _func_spyClkStart;
  98. FUNCPTR     _func_spyClkStop;
  99. FUNCPTR     _func_spyReport;
  100. FUNCPTR     _func_spyTask;
  101. FUNCPTR     _func_sseTaskRegsShow;
  102. FUNCPTR     _func_symFindByValueAndType;   /* obsolete - do not use. */
  103. FUNCPTR     _func_symFindByValue;          /* obsolete - do not use. */
  104. FUNCPTR     _func_symFindSymbol;
  105. FUNCPTR     _func_symNameGet;
  106. FUNCPTR     _func_symValueGet;
  107. FUNCPTR     _func_symTypeGet;
  108. FUNCPTR     _func_taskCreateHookAdd;
  109. FUNCPTR     _func_taskDeleteHookAdd;
  110. FUNCPTR     _func_valloc;
  111. FUNCPTR     _func_remCurIdGet;
  112. FUNCPTR     _func_remCurIdSet;
  113. FUNCPTR     _dbgDsmInstRtn = (FUNCPTR) NULL; /* disassembler routine */
  114. UINT32     ftplDebug = 0; /* FTPL_DEBUG_OFF */
  115. BOOL     _procNumWasSet = FALSE;
  116. /* triggering function pointers */
  117. VOIDFUNCPTR _func_trgCheck;
  118. /* windview function pointers */
  119. /* level 1 event logging function pointers */
  120. VOIDFUNCPTR _func_evtLogO;
  121. VOIDFUNCPTR _func_evtLogOIntLock;
  122. /* level 2 event logging function pointers */
  123. VOIDFUNCPTR _func_evtLogM0;
  124. VOIDFUNCPTR _func_evtLogM1;
  125. VOIDFUNCPTR _func_evtLogM2;
  126. VOIDFUNCPTR _func_evtLogM3;
  127. /* level 3 event logging function pointers */
  128. VOIDFUNCPTR _func_evtLogT0;
  129. VOIDFUNCPTR _func_evtLogT0_noInt;
  130. VOIDFUNCPTR _func_evtLogT1;
  131. VOIDFUNCPTR _func_evtLogT1_noTS;
  132. VOIDFUNCPTR _func_evtLogTSched;
  133. VOIDFUNCPTR _func_evtLogString;
  134. FUNCPTR     _func_evtLogPoint;
  135. FUNCPTR     _func_evtLogReserveTaskName;
  136. #if CPU_FAMILY==I960
  137. VOIDFUNCPTR _func_windInst1;
  138. VOIDFUNCPTR _func_windInstDispatch;
  139. VOIDFUNCPTR _func_windInstIdle;
  140. VOIDFUNCPTR _func_windInstIntEnt;
  141. VOIDFUNCPTR _func_windInstIntExit;
  142. #endif
  143. /* time stamp function pointer */
  144. FUNCPTR     _func_tmrStamp;
  145. FUNCPTR     _func_tmrStampLock;
  146. FUNCPTR     _func_tmrFreq;
  147. FUNCPTR     _func_tmrPeriod;
  148. FUNCPTR     _func_tmrConnect;
  149. FUNCPTR     _func_tmrEnable;
  150. FUNCPTR     _func_tmrDisable;
  151. int      trgCnt;       /* global variable for triggering */
  152. BOOL   wvInstIsOn;                /* windview instrumentation ON/OFF */
  153. BOOL   wvObjIsEnabled;            /* Level 1 event collection enable */
  154. /* ....FIXME  I am not sure these should not be defined here */
  155. UINT32          evtAction = 0; /* this one might go in evtLogLib.c */
  156. UINT32          trgEvtClass; /* this one might go in trgLib.c */
  157. UINT32          wvEvtClass; /* this one might go in wvLib.c */
  158. #if 0
  159. BOOL   evtLogTIsOn;               /* event collection ON/OFF */
  160. BOOL   evtLogOIsOn;               /* Level 1 event collection ON/OFF */
  161. #endif
  162. /* end of windview function pointers */
  163. /* WindView for networking variables */
  164. EVENT_MASK *    pWvNetEventMap;
  165. FUNCPTR         _func_wvNetAddressFilterTest;
  166. FUNCPTR         _func_wvNetPortFilterTest;
  167. /* End of WindView for networking variables */
  168. VM_LIB_INFO vmLibInfo =
  169.     {
  170.     FALSE,
  171.     FALSE,
  172.     FALSE,
  173.     (FUNCPTR) NULL,
  174.     (FUNCPTR) NULL,
  175.     (FUNCPTR) NULL,
  176.     (FUNCPTR) NULL,
  177.     (FUNCPTR) NULL
  178.     };
  179. /* Cache function pointers need to be in "data", not "bss" */
  180. CACHE_LIB cacheLib =  /* the cache primitives */
  181.     {
  182.     NULL,  /* cacheEnable() */
  183.     NULL,  /* cacheDisable() */
  184.     NULL,  /* cacheLock() */
  185.     NULL,  /* cacheUnlock() */
  186.     NULL,  /* cacheFlush() */
  187.     NULL,  /* cacheInvalidate() */
  188.     NULL,  /* cacheClear() */
  189.     NULL, /* cacheTextUpdate() */
  190.     NULL, /* cachePipeFlush() */
  191.     NULL,  /* cacheDmaMalloc() */
  192.     NULL, /* cacheDmaFree() */
  193.     NULL,  /* cacheDmaVirtToPhys() */
  194.     NULL /* cacheDmaPhysToVirt() */
  195.     };
  196. CACHE_FUNCS cacheNullFuncs =  /* null cache functions for non-cached mem */
  197.     {
  198.     NULL,
  199.     NULL,
  200.     NULL,
  201.     NULL
  202.     };
  203. CACHE_FUNCS cacheDmaFuncs = /* cache functions for dma memory */
  204.     {
  205.     NULL, /* cacheDmaFlush() */
  206.     NULL, /* cacheDmaInvalidate() */
  207.     NULL, /* cacheDmaVirtToPhys() */
  208.     NULL /* cacheDmaPhysToVirt() */
  209.     };
  210. CACHE_FUNCS cacheUserFuncs = /* cache functions for normal (user) memory */
  211.     {
  212.     NULL, /* cacheUserFlush() */
  213.     NULL, /* cacheUserInvalidate() */
  214.     NULL, /* Always NULL */
  215.     NULL /* Always NULL */
  216.     };
  217. /* vxMP and vxFusion show and info routine pointers */
  218. FUNCPTR  msgQSmShowRtn; /* shared message Q show routine pointer */
  219. FUNCPTR  msgQSmInfoGetRtn; /* shared message Q info get  routine pointer */
  220. FUNCPTR  semSmShowRtn;  /* shared semaphore show routine pointer */
  221. FUNCPTR  semSmInfoRtn;  /* shared semaphore info routine pointer */
  222. FUNCPTR  smMemPartShowRtn; /* shared memory partition show routine */
  223. FUNCPTR  msgQDistShowRtn;       /* distributed msgQ show routine pointer */
  224. FUNCPTR  msgQDistInfoGetRtn; /* distributed msgQ info get routine pointer */