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

VxWorks

开发平台:

C/C++

  1. /* taskLibP.h - private task library interface header */
  2. /* Copyright 1984-2002 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01q,16jan02,to   add WIND_TCB_FPSTATUS for ARM
  7. 01p,09nov01,dee  add coldfire portions from T2.1.0
  8. 01o,04oct01,yvp  Fix SPR69306: changed WIND_TCB_REGS to 0x130 for PPC.
  9. 01n,19sep01,aeg  updated WIND_TCB* macros to match taskLib.h v04j changes;
  10.  deleted Am29K family support.
  11. 01m,04sep01,hdn  moved I80X86 macros to regsI86.h
  12. 01l,28feb00,frf  Add SH support for T2
  13. 01m,23jul98,mem  added pTaskLastDspTcb.
  14. 01l,23apr97,hk   added SH support.
  15. 01k,28nov96,cdp  added ARM support.
  16.  added WIND_TCB_PSTACKBASE.
  17. 01j,19mar95,dvs  removing tron references.
  18. 01j,26may94,yao  added PPC support.
  19. 01i,28jul94,dvs  added extern of pTaskLastFpTcb. (SPR #3033)
  20. 01h,12nov93,hdn  added support for I80X86
  21. 01g,02dec93,pme  added Am29K family support.
  22. 01f,03aug93,jwt  abstracted common WIND_TCB_XXX definitions; copyright.
  23. 01e,22sep92,rrr  added support for c++
  24. 01d,23aug92,jcf  added extern of taskBpHook.
  25. 01c,28jul92,jcf  changed offsets to match WIND_TCB.
  26. 01b,07jul92,ajm  removed external defines of taskSwapMaskClear/taskSwapMaskSet
  27. 01a,04jul92,jcf  written by extracting from taskLib.h v02x.
  28. */
  29. #ifndef __INCtaskLibPh
  30. #define __INCtaskLibPh
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34. /* task status values */
  35. #define WIND_READY 0x00 /* ready to run */
  36. #define WIND_SUSPEND 0x01 /* explicitly suspended */
  37. #define WIND_PEND 0x02 /* pending on semaphore */
  38. #define WIND_DELAY 0x04 /* task delay (or timeout) */
  39. #define WIND_DEAD 0x08 /* dead task */
  40. #ifndef _ASMLANGUAGE
  41. #include "vxWorks.h"
  42. #include "taskLib.h"
  43. #include "classLib.h"
  44. #include "objLib.h"
  45. /* variable declarations */
  46. extern REG_INDEX taskRegName [];
  47. extern FUNCPTR taskBpHook;
  48. extern FUNCPTR taskCreateTable [];
  49. extern FUNCPTR taskSwitchTable [];
  50. extern FUNCPTR  taskDeleteTable [];
  51. extern FUNCPTR  taskSwapTable [];
  52. extern int taskSwapReference [];
  53. extern WIND_TCB * pTaskLastFpTcb;
  54. extern WIND_TCB * pTaskLastDspTcb;
  55. /* function declarations */
  56. #if defined(__STDC__) || defined(__cplusplus)
  57. extern int taskCreat (char *name, int priority, int options, int stackSize,
  58.           FUNCPTR entryPt, int arg1, int arg2, int arg3,
  59.           int arg4, int arg5, int arg6, int arg7,
  60.           int arg8, int arg9, int arg10);
  61. extern STATUS taskTerminate (int tid);
  62. extern STATUS taskDestroy (int tid, BOOL dealloc, int timeout,
  63.      BOOL forceDestroy);
  64. extern STATUS taskUndelay (int tid);
  65. extern void taskBpHookSet (FUNCPTR bpHook);
  66. extern void taskIdListSort (int idList[], int nTasks);
  67. extern int taskCreate (char *name, int priority, int options,
  68.     char *pStackBase, int stackSize, WIND_TCB *pTcb,
  69.     FUNCPTR entryPt, int arg1, int arg2, int arg3,
  70.     int arg4, int arg5, int arg6, int arg7,
  71.     int arg8, int arg9, int arg10);
  72. #else /* __STDC__ */
  73. extern int taskCreat ();
  74. extern STATUS taskTerminate ();
  75. extern STATUS taskDestroy ();
  76. extern STATUS taskUndelay ();
  77. extern void taskIdListSort ();
  78. extern void taskBpHookSet ();
  79. extern int taskCreate ();
  80. #endif /* __STDC__ */
  81. #else /* _ASMLANGUAGE */
  82. /* architecture-independent WIND_TCB defines */
  83. #define WIND_TCB_STATUS 0x3c
  84. #define WIND_TCB_PRIORITY 0x40
  85. #define WIND_TCB_PRI_NORMAL 0x44
  86. #define WIND_TCB_MUTEX_CNT 0x48
  87. #define WIND_TCB_LOCK_CNT 0x50
  88. #define WIND_TCB_SWAP_IN 0x58
  89. #define WIND_TCB_SWAP_OUT 0x5a
  90. #define WIND_TCB_SAFE_CNT 0x60
  91. #define WIND_TCB_SAFETY_Q_HEAD 0x64
  92. #define WIND_TCB_ENTRY 0x74
  93. #define WIND_TCB_PSTACKBASE     0x78
  94. #define WIND_TCB_ERRNO 0x84
  95. /* architecture-dependent WIND_TCB defines */
  96. #if CPU_FAMILY==MC680X0
  97. #define WIND_TCB_REGS 0x11c
  98. #define WIND_TCB_DREGS 0x11c
  99. #define WIND_TCB_DREGS4 0x120
  100. #define WIND_TCB_DREGS8 0x124
  101. #define WIND_TCB_AREGS 0x13c
  102. #define WIND_TCB_AREGS4 0x140
  103. #define WIND_TCB_AREGS8 0x144
  104. #define WIND_TCB_SSP 0x158
  105. #define WIND_TCB_FRAME1 0x15e
  106. #define WIND_TCB_SR 0x15e
  107. #define WIND_TCB_PC 0x160
  108. #define WIND_TCB_FRAME2 0x162
  109. #define WIND_TCB_FOROFF 0x164
  110. #endif /* CPU_FAMILY==MC680X0 */
  111. #if CPU_FAMILY==I960
  112. #define WIND_TCB_REGS 0x130
  113. #define TCB_REG_SET_BASE  0x130
  114. #define TCB_REG_SET_SIZE  0x8c
  115. #define WIND_TCB_R0    TCB_REG_SET_BASE + 0x00
  116. #define WIND_TCB_PFP   TCB_REG_SET_BASE + 0x00
  117. #define WIND_TCB_SP    TCB_REG_SET_BASE + 0x04
  118. #define WIND_TCB_RIP   TCB_REG_SET_BASE + 0x08
  119. #define WIND_TCB_R3    TCB_REG_SET_BASE + 0x0c
  120. #define WIND_TCB_R4    TCB_REG_SET_BASE + 0x10
  121. #define WIND_TCB_R8    TCB_REG_SET_BASE + 0x20
  122. #define WIND_TCB_R12   TCB_REG_SET_BASE + 0x30
  123. #define WIND_TCB_G0    TCB_REG_SET_BASE + 0x40
  124. #define WIND_TCB_G4    TCB_REG_SET_BASE + 0x50
  125. #define WIND_TCB_G8    TCB_REG_SET_BASE + 0x60
  126. #define WIND_TCB_G12   TCB_REG_SET_BASE + 0x70
  127. #define WIND_TCB_FP    TCB_REG_SET_BASE + 0x7c
  128. #define WIND_TCB_PCW   TCB_REG_SET_BASE + 0x80
  129. #define WIND_TCB_ACW   TCB_REG_SET_BASE + 0x84
  130. #define WIND_TCB_TCW   TCB_REG_SET_BASE + 0x88
  131. #define WIND_TCB_DBG_STATE_PTR TCB_REG_SET_BASE + 0x8c
  132. #define WIND_TCB_RESUMPTION_RECORD TCB_REG_SET_BASE + 0x90
  133. #endif /* CPU_FAMILY==I960 */
  134. #if     CPU_FAMILY==MIPS
  135. #define WIND_TCB_REGS           0x128
  136. #include "arch/mips/taskMipsLib.h"
  137. #endif /* MIPS */
  138. #if (CPU_FAMILY == PPC)
  139. #define WIND_TCB_REGS 0x130
  140. #include "arch/ppc/regsPpc.h"
  141. #endif /* (CPU_FAMILY == PPC) */
  142. #if (CPU_FAMILY == SPARC)
  143. #define WIND_TCB_REGS 0x120
  144. #include "arch/sparc/regsSparc.h"
  145. #endif /* (CPU_FAMILY == SPARC) */
  146. #if     CPU_FAMILY==I80X86
  147. #define WIND_TCB_REGS           0x160
  148. #include "arch/i86/regsI86.h"
  149. #endif  /* CPU_FAMILY==I80X86 */
  150. #if (CPU_FAMILY == SH)
  151. #define WIND_TCB_REGS 0x11c
  152. #include "arch/sh/regsSh.h"
  153. #endif /* (CPU_FAMILY == SH) */
  154. #if     CPU_FAMILY==ARM
  155. #define WIND_TCB_FPSTATUS       0x118
  156. #define WIND_TCB_REGS   0x120
  157. #define WIND_TCB_R0     WIND_TCB_REGS
  158. #define WIND_TCB_R1     (WIND_TCB_R0+4*1)
  159. #define WIND_TCB_R4     (WIND_TCB_R0+4*4)
  160. #define WIND_TCB_PC     (WIND_TCB_R0+4*15)
  161. #define WIND_TCB_CPSR   (WIND_TCB_PC+4)
  162. #endif  /* CPU_FAMILY==ARM */
  163. #if CPU_FAMILY==COLDFIRE
  164. #include "regs.h"
  165. #define WIND_TCB_REGS 0x11c
  166. #define WIND_TCB_DREGS (WIND_TCB_REGS+OFF_REG_D0)
  167. #define WIND_TCB_DREGS4 (WIND_TCB_REGS+OFF_REG_D1)
  168. #define WIND_TCB_DREGS8 (WIND_TCB_REGS+OFF_REG_D2)
  169. #define WIND_TCB_AREGS (WIND_TCB_REGS+OFF_REG_A0)
  170. #define WIND_TCB_AREGS4 (WIND_TCB_REGS+OFF_REG_A1)
  171. #define WIND_TCB_AREGS8 (WIND_TCB_REGS+OFF_REG_A2)
  172. #define WIND_TCB_SSP (WIND_TCB_REGS+OFF_REG_SP)
  173. #define WIND_TCB_MAC (WIND_TCB_REGS+OFF_REG_MAC)
  174. #define WIND_TCB_MACSR (WIND_TCB_REGS+OFF_REG_MACSR)
  175. #define WIND_TCB_MASK (WIND_TCB_REGS+OFF_REG_MASK)
  176. #define WIND_TCB_HASMAC (WIND_TCB_REGS+OFF_REG_HASMAC)
  177. #define WIND_TCB_SR (WIND_TCB_REGS+OFF_REG_SR)
  178. #define WIND_TCB_PC (WIND_TCB_REGS+OFF_REG_PC)
  179. #endif /* CPU_FAMILY==COLDFIRE */
  180. #endif /* _ASMLANGUAGE */
  181. #ifdef __cplusplus
  182. }
  183. #endif
  184. #endif /* __INCtaskLibPh */