usrConfig.c
上传用户:dqzhongke1
上传日期:2022-06-26
资源大小:667k
文件大小:75k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* usrConfig.c - user-defined system configuration library */
  2. /*
  3.  * Copyright (c) 1984-2006 Wind River Systems, Inc.
  4.  *
  5.  * The right to copy, distribute, modify or otherwise make use
  6.  * of this software may be licensed only pursuant to the terms
  7.  * of an applicable Wind River license agreement.
  8.  */
  9. /*
  10. modification history
  11. --------------------
  12. 26p,17oct06,gls  made maxIsrJobs argument a UINT (Defect #00059580)
  13. 26o,05sep06,tcr  add initialization for INCLUDE_POSIX_TRACE_TIMESTAMP
  14. 26n,17jul06,ggz  added initialization of TIPC WV instrumentation
  15. 26m,10jul06,gls  added sigeventLibInit()
  16. 26l,07jul06,pcs  update call to fn memRtpLibInit with 2nd parameter as
  17.                  MEM_PART_DEFAULT_OPTIONS
  18. 26k,06jul06,jln  added thread SPORADIC scheduling support
  19. 26j,04jul06,tcr  add INCLUDE_POSIX_TRACE
  20. 26i,16jun06,zl   added INCLUDE_MEM_MGR_INFO support.
  21. 26h,05may06,tcr  Ensure rBuffMgr priority set before calling rBuffLibInit()
  22. 26g,19apr06,dcc  fixed SPR 120265
  23. 26f,07apr06,dgp  doc: fix SEE ALSO references for library
  24. 26e,23feb06,jlk  added initialization of POSIX advisory file locking component
  25. 26d,14feb06,jln  added initialization of thread CPU-time clock
  26. 26c,13feb06,bwa  removed references to vxfusion.
  27. 26b,10feb06,jlk  Updated iosInit() call to take the IOS_POSIX_PSE52_MODE
  28.                  parameter.
  29. 26a,09feb06,gls  added posixMode parameter to sigInit()
  30. 25z,03feb06,md   SPR 117455, fix ED&R stub initialialisation
  31. 25y,20jan06,pad  Updated call to rtpLibInit() to pass the maximum number of
  32.                  file descriptors.
  33. 25x,17jan06,bpn  Simplified the initialization of the system symbol table.
  34. 25w,10jan06,agf  moving symbols from sysLib to here so as not to generate
  35.                  warning with sysComms in prj builds (SPR 114346)
  36. 25v,10jan06,zl   added INCLUDE_MAPPED_FILES_SHOW support.
  37. 25u,21dec05,rfr  Added INCLUDE_VRFS
  38. 25t,20dec05,pcm  added parameter to cdromFsInit() call
  39. 25s,26oct05,zl   added POSIX shared memory objects and memory mapped files.
  40. 25r,09oct05,mmi  added CPU power management initialization.
  41. 25q,28sep05,pcm  re-added usrFdConfig() as it was got lost
  42. 25p,21sep05,pcm  added calls to usrFdConfig() after fdDrv()
  43. 25o,15sep05,jln  Added taskPxLib initialization
  44. 25n,14sep05,ami  Initialization of USB Stack moved after the Initialization of
  45.                  Network Stack (SPR #111676)
  46. 25m,08sep05,dcc  removed INCLUDE_TAPEFS component (SPR# 111788).
  47. 25l,08aug05,dcc  added dosFs cache initialization.
  48. 25k,16jul05,jln  Added INCLUDE_POSIX_PTHREAD_SCEHD initialization 
  49. 25j,12jul05,mil  Added memAllotLibInit for minimal kernel.
  50. 25i,08jul05,mil  Conditionalized out memPartLibInit().
  51. 25h,04aug05,dcc  added an extra parameter to usrDosfsInit().
  52. 25g,04aug05,aeg  added inclusion of cdromFsLib.h
  53. 25f,03aug05,pcm  added parameters to usrDosfsInit()
  54. 25e,28jul05,pcm  simplified initialization of DosFs
  55. 25d,25jul05,jmp  added usrCoreDumpInit().
  56. 25c,19jul05,pcm  added INCLUDE_XBD_BLK_DEV
  57. 25e,24aug05,mmi  Add CPU Power Magmt. FrameWork
  58. 25m,15aug05,h_k  added INCLUDE_MMU_GLOBAL_MAP.
  59. 25l,05aug05,jln  removed configuration of POSIX scheduler
  60. 25k,04aug05,wap  Changes for microstack
  61. 25j,20jul05,pcm  added INCLUDE_XBD_BLK_DEV
  62. 25i,16jul05,jln  Added INCLUDE_POSIX_PTHREAD_SCEHD initialization 
  63. 25h,12jul05,mil  Added memAllotLibInit for minimal kernel.
  64. 25g,08jul05,mil  Conditionalized out memPartLibInit().
  65. 24f,23jun05,jlk  Fixed up fs event lib
  66. 24e,23jun05,jlk  Added fsPathWaitLibInit(). Removed inclusion of copyright 
  67.                  header file
  68. 24d,17jun05,pcm  used configlette init routines for dosfs & hrfs
  69. 24c,13jun05,pcm  added new component init routines
  70. 25b,06jun05,dbt  Added support for Wind River Agent Proxy.
  71. 25a,16may05,ebh  update for distributed SNS services
  72. 24z,22apr05,dr   SPR# 108100 - added call to aimFppLibInit.
  73. 24y,31mar05,hch  change the INCLUDE_USB_AUDIO_DEMO typo
  74. 24x,23mar05,dcc  added cdromFsInit() to usrRoot().
  75. 24w,21mar05,pcm  added tapeFsInit() to usrRoot()
  76. 24v,18mar05,yvp  Scalability mods.
  77. 24u,15dec04,md   Moved ED&R stub init code to below clock init code
  78. 24t,25feb05,pcs  Modified to reflect the change to the prototype of fn.
  79.                  rtpLibInit
  80. 24s,25feb05,h_k  removed prototype declaration for aimMmuShowInit(). (SPR
  81.                  #106193)
  82. 24r,07feb05,zl   enable text protection early
  83. 24q,08feb05,pch  SPR 102772: add INCLUDE_PROTECT_INTERRUPT_STACK
  84. 24o,01feb05,gls  added usrKernelCoreInit() (SPR #102214)
  85. 24n,22nov04,zl   test KERNEL_HEAP_SIZE parameter against sysMemTop().
  86. 24m,15nov04,yvp  Changed prototype for usrRtpAppInitString().
  87. 24l,11nov04,job  Moved location of system call initialization routines
  88. 24k,01nov04,slk  SPR92598: Add _WRS_OSM_INIT define for call to excOsmInit
  89.  add MIPS support for excOsmInit.
  90. 24j,01nov04,slk  Remove MIPS from architectures calling excOsmInit
  91. 24i,29oct04,slk  SPR 92598: Add MIPS to valid CPUs that can call excOsmInit()
  92. 24h,28oct04,pch  SPR 92598: add excOsmInit (exception stack overflow)
  93.  add excIntNestLogInit (LOG_FRAMELESS and LOG_DISPATCH support)
  94. 24g,27oct04,rec  fix power management compilation warning
  95. 24f,26oct04,dtr  Remove gnu compiler warning for IMPORT aimMmuShowInit.
  96. 24e,26oct04,fr   added msgQOpenInit() and timerOpenInit() (SPR 101491)
  97. 24d,19oct04,zl   call usrTextProtect() instead of vmTextProtect().
  98. 24c,15oct04,pad  Swapped order of calls to rtpHookLibInit() and rtpLibInit():
  99.                  rtpHookLibInit() must come first (SPR #102595).
  100. 24b,13oct04,dlk  Added NBIO_LOG.
  101. 24a,12oct04,rec  fix merge problem
  102. 23z,20sep04,ami  NET2280 tested on High Speed
  103. 23r,16aug04,pdg  Fix for long booting time of OHCI and EHCI
  104. 23q,09aug04,hch  added USB peripheral keyboard and mouse initialization
  105.  moved the pegasus driver initialization after usrNetInit
  106. 23p,04aug04,hch  add USB peripheral mass storage driver initialization
  107. 23o,29sep04,dtr  Add AIM MMU Show init. SPR 101412.
  108. 23n,21sep04,mig  Clear bss segment before cacheLibInit().
  109. 23m,23sep04,ann  merge from networking: Remove obsolete sysctl refs, 
  110. 23y,06oct04,zl   corrected location of vmShowShellCmdInit() prototype
  111. 23x,02oct04,gls  sdLibInit() and sdShowInit() now declared in sdLibP.h
  112. 23w,01oct04,zl   added memory management shell commands.
  113. 23w,01oct04,aeg  moved msgQLibInit/msgQShowInit out of usrKernelInit.
  114. 23v,30sep04,tam  removed INCLUDE_EDR_KH; added INCLUDE_PROTECT_TASK_STACK and
  115.  INCLUDE_TASK_STACK_NO_EXEC
  116. 23u,23sep04,kk   added rtpShowShellInit() initialization
  117. 23x,29sep04,dbt  Make use of usrWdbBanner.c configlette. wdbConfig() is
  118.  replaced by usrWdbInit().
  119. 23w,23sep04,md   fix ED&R debug flag message
  120. 23v,23sep04,ann  merge from networking: Remove obsolete sysctl refs, 
  121.  ftp login and security changes, SPR #100002.
  122. 23j,08sep04,jyo  Fixing SPR 100119: Removing references to RT11.
  123. 23u,24sep04,yvp  Fix SPR 99907: Stop calling ioGlobalStdSet in pre-kernel code.
  124. 23u,23sep04,jn   Add configuration parameter for system symbol table
  125. 23t,18sep04,jn   Add initialization routine for unldLib
  126. 23s,17sep04,jmp  made passFs cache configureable.
  127. 23r,09sep04,md   add carriage return to ED&R message
  128. 23q,13sep04,zl   corrected MM private headers.
  129. 23p,09sep04,bpn  Added shell command init routines.
  130. 23o,07sep04,yvp  rtpHookLibInit() prototype change.
  131. 23n,03sep04,ans  added INCLUDE_JOB_TASK and updated excInit () parameter list
  132. 23m,01sep04,jmp  removed simulator specific code.
  133. 23l,27aug04,gls  added SD_HOOK_TBL_SIZE parameter to sdLibInit()
  134. 23l,17sep04,sru  Add sysTextProtect global; undef MIPS vmTextProtect().
  135. 23k,24aug04,job  Changed call of posixScInit() to usrPosixScInit()
  136. 23j,28jul04,md   removed INCLUDE_EDR_SYMBOLIC, INCLUDE_SC_EDR; SPR78837
  137. 23j,15sep04,dtr  Remove usrSpeInit call with COPROCLIB.
  138. 23i,06jul04,dtr  Add in call to usrMmuOptimize and usrAimMmuConfig.
  139. 23h,07jul04,c_c  Get rid of romfs_image.h
  140. 23g,29jun04,job  INCLUDE_SYSCTL_HW inclusion dependent on INCLUDE_SYSCTL
  141. 23f,28jun04,job  changed INCLUDE_SYSCTL_API to INCLUDE_SYSCTL
  142. 23e,14jun04,job  Renamed usrSysctl2 to usrSysctl
  143. 23d,11jun04,dcc  added clockLibInit() call.
  144. 23c,09jun04,zl   removed references to vxVMI (INCLUDE_MMU_FULL).
  145. 23g,01jun04,mem  added call to palInit().
  146. 23t,14may04,syy  Remove DHCPv6 initilization code
  147. 23s,14may04,kk   added shlShellCmdInit() call
  148. 23r,08jun04,elg  Add ability to start WDB before kernel.
  149. 23q,02jun04,bpn  Register shell commands for the loader and the unloader.
  150. 23p,06may04,md   include cmd shell ED&R routines using INCLUDE_EDR_SHOW
  151. 23o,20may04,gls  renamed mmScLibInit to mmanScLibInit
  152. 23n,18may04,yvp  Added INCLUDE_RTP_APPL_INIT_CMD_SHELL_SCRIPT.
  153. 23m,18may04,bpn  Added call to usrRtpLibInit().
  154. 23l,06may04,md   include cmd shell ED&R routines using INCLUDE_EDR_SHOW
  155. 23k,03may04,kk   added INCLUDE_SHL_SHOW
  156. 23j,30apr04,fr   added edrShellCmdInit call
  157. 23i,02apr04,dms  Added INCLUDE_SHL.
  158. 23h,18mar04,md   added procfs component specific init calls
  159. 23g,14apr04,syy  Added DHCP6 client initialization
  160. 23f,07may04,yvp  Added support for various RTP Startup facility components.
  161. 23e,30apr04,kk  enable RTP_SHOW & SD_SHOW to be included standalone
  162. 23d,28apr04,zl   added memEdrRtpShowInit()
  163. 23c,27apr04,tam  fixed prototype of memRtpLibInit()
  164. 23b,27apr04,bpn  Replace loginPrompt() with loginPrompt2().
  165. 23a,21apr04,dat  move selectInit after iosInit, before tyLibInit (96540)
  166. 22z,14apr04,syy  Added DHCP6 client initialization
  167. 22y,14apr04,pch  SPR 95355: enable interrupts in root task after MMU is set up.
  168.  Fix warnings re constant conditionals involving NUM_TTY.
  169. 22x,09apr04,gls  added sdShowInit()
  170. 22w,06apr04,yp   reworking adrSpaceLib initialization
  171. 22v,06apr04,job  Pass TASK_STACK_OVERFLOW_SIZE and TASK_STACK_UNDERFLOW_SIZE
  172.  to rtpLibInit()
  173. 22u,06apr04,jn   Fix build warning in bsp builds.  Move loader related
  174.  includes here from usrConfig.h.
  175. 22t,01apr04,dat  adding INCLUDE_MEMDRV, (93390), INCLUDE_PTYDRV (6294)
  176. 22s,18mar04,dat  adding support for poolLib, poolShow, setLib
  177. 22r,10mar04,dbt  vi editing mode should be the default for the shell.
  178. 22q,23feb04,tcr  fix use of INCLUDE_TIMESTAMP
  179. 22p,23feb04,asr  Added protection around loginUserAdd
  180. 22o,20feb04,vvv  made changes for socket/sysctl separation from stack
  181. 22n,20feb04,yvp  Added RTP startup facility (INCLUDE_RTP_APPL).
  182. 22m,18feb04,ans  Added RTP_SIGNAL_QUEUE_SIZE for RTP initialization.
  183. 22l,11feb04,mil  Fixed shell not enabling SPE task option.
  184. 22k,18feb04,md   added INCLUDE_SC_EDR init code (ED&R syscall)
  185. 22j,03feb04,dat  chg init order for POSIX_AIO
  186. 22i,26jan04,elg  Add initialization of WDB hooks.
  187. 22h,26jan04,zl   added memEdrLib configuration.
  188. 22g,23jan04,syy  Eliminate compile warnings on wvNetDInit()
  189. 22f,16jan04,syy  Added wvNetDInit() to usrRoot()
  190. 22e,09jan04,als  correct pathname for SNS server RTP initialization (SPR#92606)
  191. 22d,08jan04,md   fix procfsFsDevCreate() prototype (SPR #92703)
  192. 22c,15dec03,dat  Copyright update to 2004
  193. 22b,08oct03,tcr  fix WindView timestamp inclusion for bsp builds
  194. 22a,04sep03,tcr  update WindView upload paths
  195. 21z,12dec03,yvp  Changed syscall.c to syscallTbl.h.
  196. 21y,09dec03,yvp  Added #include of syscall.c
  197. 21x,08dec03,m_s  included posix header files
  198. 21w,07dec03,md   moved procfs init code.
  199. 21v,05dec03,zl   added call of memRtpLibInit().
  200. 21u,04dec03,ans  Corrected #ifdef INCLUDE_POSIX_MMAN to #ifdef INCLUDE_SC_POSIX.
  201. 21t,02dec03,dbs  fix call to edrSystemDebugModeGet()
  202. 21s,24nov03,p_r  added SAL components
  203. 21r,18nov03,yp   code review changes
  204. 21q,12nov03,yp   adding adrSpaceShow
  205. 21p,04nov03,kk   added shared data initialization
  206. 21o,29oct03,gls  added pgMgrShowInit()
  207. 21n,23oct03,tam  fixed initialization of memPoolStartArs
  208. 21m,21oct03,dat  added IO system call component
  209. 21l,14oct03,gls  added INCLUDE_PG_MGR_LIB
  210. 21k,19nov03,cjj  Removed duplicate call to rtpLibInit().
  211. 21j,17nov03,yvp  Changed rtpLibInit() call to use new prototype.
  212. 21i,05nov03,cfc  USB2 Development Integration
  213. 21h,10oct03,md   Add new procfs init parameter
  214. 21g,08oct03,ans  Added timerLibInit.
  215. 21f,06oct03,dbs  add EDR KH support
  216. 21e,05oct03,kk   moved RTP initialize earlier, after pgPoolShowInit()
  217. 21d,25sep03,jkf  fixing comment error on endif
  218. 21c,22sep03,bpn  Modified shell initialization. Added command support for 
  219.  RTP and DISK_UTIL components.
  220. 21b,17sep03,kk   moved RTP initialization earlier.
  221. 21a,16sep03,zl   added INCLUDE_PROCFS
  222. 20z,12sep03,dbs  move ED&R init as early as possible
  223. 20y,11sep03,dbs  move edr init diagnosis into configlette
  224. 20x,10sep03,dbs  use edrStub to inject boot event
  225. 20w,09sep03,zl   added INCLUDE_SC_MMAN initialization.
  226. 20v,22aug03,dcc  added INCLUDE_SC_KERNEL initialization.
  227. 20u,29aug03,dbs  add diagnostic if ED&R init fails
  228. 20t,26aug03,dbs  added ED&R features
  229. 20s,18aug03,job  Add RTP show routine support
  230. 20r,16aug03,yp  fixing pgPoolLib header
  231. 20q,11aug03,yp  adding page pool library support
  232. 20p,06aug03,kk   add RTP support
  233. 20o,24jul03,jeg  added VxSim virtualDisk support
  234. 20n,22jul03,jmp  modified to share usrPassFsInit() and usrDosDiskInit() code
  235.  with comps/src.
  236. 20m,02jul03,md   added INCLUDE_ROMFS
  237. 20l,27jun03,tam  enabled text & vector table write-protection with MMU_BASIC
  238. 20k,29may03,rec  Power Management
  239. 20j,14may03,jmp  initialized passFs directory to CWD instead of BSP dir.
  240. 20i,23apr03,jmp  made passFsInit code common to all simulators.
  241. 20h,22apr03,dbt  Added SIMLINUX support.
  242. 20g,10apr03,pes  PAL Coprocessor Abstraction
  243. 20f,09apr03,bpn  Modified the shell initialisation to use the configlet.
  244. 20e,31mar03,bpn  Fixed typo error.
  245. 20d,26mar03,jeg  updated to use passFs for simsolaris and simnt
  246. 20c,20mar03,bpn  Changed ledRegister() to ledModeRegister().
  247. 20b,17mar03,lcs  Modify ledLib initialization code.
  248. 20a,20feb03,jmp  cleanup simulator code.
  249. 19z,17feb03,bpn  Reworked shell initialization code.
  250. 19y,20jun03,t_m  added pccardlib
  251. 19x,12nov02,dbt  Reworked symbol table synchronization initialization code
  252.  (SPR #25509).
  253. 19w,15may02,sbs  changing default sys clock rate to a macro (SPR #1918)
  254. 19v,24apr02,j_s  make WDB Banner the same as in
  255.  target/config/comps/src/usrWdbBanner.c (SPR #76099)
  256.  updated 2001 to 2002
  257. 19u,19apr02,pch  SPR 74348: Enable PPC Machine Check exception ASAP
  258. 19t,05apr02,hbh  Fixed SPR# 30368 and improved ntPassFs initialization.
  259. 19s,04mar02,pch  SPR 73609
  260. 19r,11feb02,jkf  SPR#73173, adding INCLUDE_DOSFS_MAIN init section.
  261. 19q,21jan02,sn   added INCLUDE_CTORS_DTORS
  262. 19p,10dec01,jlb  Change UGL to WindML product
  263. 19o,07dec01,wef  add USB initialization code.
  264. 19n,07dec01,sn   added INCLUDE_CPLUS_DEMANGLER
  265. 19m,08nov01,jmp  removed useless routeAdd() for SIMNT.
  266. 19l,31oct01,gls  added pthread code
  267. 19k,27oct01,dat  Adding trap for misaligned data section SPR 9006
  268. 19j,21sep01,aeg  updated initialization sequence of selectLib (SPR #31319).
  269. 19i,17sep01,pcm  added excShowInit() (SPR 7333), and lstLibInit () (SPR 20698)
  270. 19h,15may01,pch  Move call of usrAltivecInit() from sysLib.c to usrConfig.c,
  271.  to fix an undefined reference when building bootrom.
  272. 19g,20jan99,dbs  change VXCOM to COM
  273. 19f,18dec98,dbs  add VXCOM as separate item
  274. 19e,06nov98,dbs  add DCOM init when INCLUDE_DCOM is set
  275. 19g,22feb01,scm  add fast dram support capabilities for XScale...
  276. 19f,16mar99,jpd  changed copyright yearfrom 1998 to 1999.
  277. 19e,13nov98,jpd  call usrMmuInit if INCLUDE_MMU_MPU defined; conditionally
  278.  add sysHwInit0() call before cacheLibInit(); added
  279.  INCLUDE_INITIAL_MEM_ALLOCATION
  280.     cdp  make Thumb support for ARM CPUs dependent on ARM_THUMB.
  281. 19j,27feb01,hk   update INCLUDE_WDB_BANNER copyright notice to cover 2001.
  282. 19i,08jun00,csi  Merginf usrConfig.c for vxfusion
  283. 19h,19apr00,zl   updated copyright year to 2000.
  284. 19g,02mar00,zl   merged SH support into T2.
  285. 01g,07mar01,sn   simplify job of host val by using creationDate (which
  286.  is overridable) rather than __DATE__
  287. 19g,14oct99,jk   added conditional init code for sound driver support.
  288. 19i,30jul99,jkf  fixed SPR#4429. ideDrv, ataDrv, fdDrv, warn on ERROR.
  289. 19h,16mar99,jpd  changed copyright yearfrom 1998 to 1999.
  290. 19g,10mar99,drm  Changing WINDMP to VXFUSION to reflect new product name.
  291. 19f,13nov98,jpd  call usrMmuInit if INCLUDE_MMU_MPU defined; conditionally
  292.  add sysHwInit0() call before cacheLibInit(); added
  293.  INCLUDE_INITIAL_MEM_ALLOCATION
  294.     cdp  make Thumb support for ARM CPUs dependent on ARM_THUMB.
  295. 19e,08oct98,rlp  added support for UGL and HTML.
  296. 19d,17sep98,ms   call cplusDemanglerInit if INCLUDE_CPLUS and INCLUDE_LOADER
  297. 19c,17sep98,cym  added code to calculate proper IP address for PCSIM.
  298. 19b,01sep98,drm  added code to initialize WindMP
  299. 19a,10aug98,cym  added code to inform tornado when the NT simulator is up.
  300. 18z,23apr98,yp   merged in TrueFFS support
  301. 18y,22apr98,elp  created group 1 module when standalone (fixed SPR# 20301).
  302. 18w,22apr98,hdn  added comment for tffsDrv().
  303. 18t,17apr98,nps  added support for rBuffShow.
  304. 18s,09mar98,sjw  merge in HTTP and JAVA changes for conflict resolution
  305. 18r,18dec97,cth  replaced windview, timestamp initialization with windviewConfig
  306. 18q,13nov97,cth  changed WV evtInstInit to wvLibInit2; removed connRtnSet,
  307.  evtTaskInit; added include wvLib.h, rBuffLib.h
  308. 18p,18aug97,nps  changed WV buffer initialization with the rBuff API.
  309. 18x,06mar98,ms   changed copyright year from 1996 to 1998.
  310. 18v,04feb98,jpd  fix unsigned/signed warning (usrRoot); updated copyright date.
  311. 18u,25feb98,jgn  removed call to excShowInit(), it is called by excInit()
  312.  if needed (SPR #20625)
  313. 18t,19jan98,hdn  changed a condition macro to include tffsDrv().
  314. 18p,06jan98,cym  added SIMNT as processor not to clear bss.
  315. 18s,23sep97,yp   added support for TFFS.
  316. 18r,13aug97,cdp  add Thumb (ARM7TDMI_T) support;
  317.  'fix' unsigned/signed comparison in usrRoot.
  318. 18q,26feb97,dat  added INCLUDE_USER_APPL and USER_APPL_INIT, spr 8071.
  319. 18p,05feb97,cdp  remove ARM test hook (_func_armStartup).
  320. 18o,12dec96,cdp  added _func_armStartup for ARM platforms.
  321. 18n,13dec96,elp  changed syncLibInit() into symSyncLibInit().
  322. 18m,18nov96,dds  SPR 2529: return status for sysScsiInit is now checked.
  323. 18l,06nov96,ms   removed 17n hack to usrClock.
  324. 18k,01nov96,hdn  added support for PCMCIA.
  325. 18j,21oct96,hdn  changed paramerters for new LPT driver.
  326. 18i,04oct96,elp  added INCLUDE_SYM_TBL_SYNC (SPR# 6775).
  327. 18h,11jul96,tam  changed copyright year from 1995 to 1996.
  328. 18l,19jul96,hdn  added support for ATA driver.
  329. 18k,25jun96,jmb  Eliminated alternative WDB macro names (SPR #5707).
  330. 18j,25jun96,dbt  Initialized _func_selWakeupListInit before tyLib (SPR #3314).
  331. 18i,21jun96,jmb  update copyright. SPR #6364
  332. 18h,21jun96,jmb  long modhist -- deleted entries prior to 1994.  SPR #6528
  333. 18g,12mar96,tam  removed all #if (CPU == PPC403).
  334. 18p,06jun96,ism  bumped copyright to 1996.
  335. 18o,26jan96,ism  cleaned up vxsim/solaris version
  336. 18f,02oct95,kvk  added sysHwInit2() for PPC603.
  337. 18e,27sep95,tpr  removed #if (CPU_FAMILY != PPC) staff.
  338. 18n,07nov95,srh  fixed C++ support comments.
  339. 18m,29oct95,dat  fixed warnings about printf arguments
  340. 18l,11oct95,jdi  doc: changed .pG to .tG.
  341. 18k,10oct95,dat  new BSP revision id. Added WDB Banner printing
  342. 18j,15jun95,ms  updated for new serial drivers.
  343. 18i,09jun95,ms  cleaned up console initialization
  344. 18h,30may95,p_m  added initialization of formatted I/O library.
  345.  replaced spyStop() by spyLibInit().
  346. 18g,22may95,p_m  no longer initialize object format specific libraries if
  347.  loader is not included.
  348. 18f,22may95,myz  modified new serial device initialization for x86 support
  349. 18e,22may95,ms   added some WDB agent support
  350. 18e,30oct95,ism  updated for SIMSPARCSOLARIS
  351. 18d,28mar95,kkk  added scalability support, changed edata and end to arrays
  352.  (SPR #3917), changed baud rate to be a macro in configAll.h
  353. 18g,25may95,yao  changed to bzero bss segment for PPC.
  354. 18f,04apr95,caf  added PPC cache support.
  355. 18e,03mar95,yao  added shsHwInit2 () for PPC403.
  356. 18d,24feb95,caf  added PPC support.
  357. 18c,20nov94,kdl  added hashLibInit() when using dosFs.
  358. 18b,09nov94,jds  additions for scsi backward compatability ; scsi[12]IfInit()
  359. 18a,04nov94,kdl  merge cleanup.
  360. 17l,02aug94,tpr  added cacheEnable (BRANCH_CACHE) for the MC68060.
  361. 17m,15oct94,hdn  added LPT driver.
  362. 17o,20jul94,ms   changed INCLUDE_AOUT_HPPA to INCLUDE_SOM_COFF
  363. 17n,02may94,ms   added VxSim HP hack to usrClock().
  364. 17q,15mar94,smb  renamed tEvtTask parameters.
  365. 17p,15feb94,smb  defined WV_MODE, EVTBUFFER_ADDRESS for wvInstInit().
  366. 17o,12jan94,kdl  modified posix initialization; added queued signal init.
  367. */
  368. /*
  369. DESCRIPTION
  370. This library is the WRS-supplied configuration module for VxWorks.  It
  371. contains the root task, the primary system initialization routine, the
  372. network initialization routine, and the clock interrupt routine.
  373. The include file config.h includes a number of system-dependent parameters used
  374. in this file.
  375. In an effort to simplify the presentation of the configuration of vxWorks,
  376. this file has been split into smaller files.  These additional configuration
  377. source files are located in '../../src/config/usr[xxx].c' and are #included 
  378. into this file below.  This file contains the bulk of the code a customer is
  379. likely to customize.
  380. The module usrDepend.c contains checks that guard against unsupported
  381. configurations such as INCLUDE_NFS without INCLUDE_RPC.  The module
  382. usrKernel.c contains the core initialization of the kernel which is rarely
  383. customized, but provided for information.  The module usrNetwork.c now
  384. contains all network initialization code.  Finally, the module usrExtra.c
  385. contains the conditional inclusion of the optional packages selected in
  386. configAll.h.
  387. The source code necessary for the configuration selected is entirely
  388. included in this file during compilation as part of a standard build in
  389. the board support package.  No other make is necessary.
  390. INCLUDE FILES:
  391. config.h
  392. SEE ALSO:
  393. The VxWorks programmer guides.
  394. */
  395. #include <vxWorks.h> /* always first */
  396. #include <config.h> /* board support configuration header */
  397. #include <usrConfig.h> /* general configuration header */
  398. #include <usrDepend.c> /* include dependency rules */
  399. #include <usrKernel.c> /* kernel configuration */
  400. #include <usrExtra.c> /* conditionally included packages */
  401. #ifdef INCLUDE_HTTP
  402. #include <http/httpLib.h> /* Wind Web Server interfaces */
  403. #endif
  404. #ifdef INCLUDE_VRFS
  405. #include <vrfsLib.h>
  406. #endif
  407. #ifdef INCLUDE_ROMFS
  408. #include <romfsLib.h> /* read-only file system interfaces */
  409. #include <romfsDrv.h> /* romfs block device driver */
  410. /* 
  411.  * ROM filesystem image will come from romfs_image.o object file, which defines
  412.  * two symbols (see below): 
  413.  */
  414. extern const char romfsImage[];               /* The file system */
  415. extern const char romfsImageEnd[];    /* address of its end */
  416. int romfsImageLen;    /* size of ROM fs */
  417. #endif
  418. #if defined(INCLUDE_PG_POOL_LIB)
  419. #include <private/pgPoolLibP.h>
  420. #endif /* INCLUDE_PG_POOL_LIB */
  421. #if defined(INCLUDE_PG_POOL_VIRT_LIB)
  422. #include <private/pgPoolVirtLibP.h>
  423. #endif /* INCLUDE_PG_POOL_VIRT_LIB */
  424. #if defined(INCLUDE_PG_POOL_PHYS_LIB)
  425. #include <private/pgPoolPhysLibP.h>
  426. #endif /* INCLUDE_PG_POOL_PHYS_LIB */
  427. #if defined(INCLUDE_PG_MGR_LIB)
  428. #include <private/pgMgrLibP.h>
  429. #endif /* INCLUDE_PG_MGR_LIB */
  430. #ifdef INCLUDE_FD
  431. extern STATUS usrFdConfig (int, int, char *);
  432. #endif
  433. #ifdef INCLUDE_SIGEVENT
  434. #include <private/sigeventP.h>
  435. #endif
  436. #ifdef INCLUDE_RTP
  437. #include <rtpLib.h>
  438. #include <syscallTbl.h>
  439. extern char * pRtpStartupField;
  440. #ifdef INCLUDE_SHL
  441. #include <shlLib.h>
  442. extern STATUS shlLibInit (void);
  443. extern STATUS shlScLibInit (void);
  444. #endif /* INCLUDE_SHL */
  445. #ifdef INCLUDE_POSIX_MAPPED_FILES
  446. extern mmanFdLibInit (void);
  447. #endif
  448. #ifdef INCLUDE_POSIX_SHM
  449. extern STATUS shmFsLibInit (const char * devName);
  450. #endif
  451. #if defined (INCLUDE_ADR_SPACE_SHOW) || defined (INCLUDE_SHOW_ROUTINES)
  452. extern STATUS adrSpaceShellCmdInit (void);
  453. #endif
  454. #if defined (INCLUDE_MAPPED_FILES_SHOW)
  455. extern STATUS mmanShowInit (void);
  456. extern STATUS mmanShellCmdInit (void);
  457. #endif
  458. #include <rtpStartupFacility.c> /* RTP Startup Facility Components */
  459. #endif /* INCLUDE_RTP */
  460. #if defined (INCLUDE_VM_SHOW) || 
  461.     defined (INCLUDE_SHOW_ROUTINES) && defined (INCLUDE_MMU_BASIC)
  462. extern STATUS vmShowShellCmdInit (void);
  463. #endif
  464. #ifdef INCLUDE_SHARED_DATA
  465. #include <private/sdLibP.h>
  466. extern STATUS sdShowShellCmdInit (void);
  467. #endif /* INCLUDE_SHARED_DATA */
  468. #ifdef INCLUDE_COM
  469. extern int comLibInit ();
  470. #endif
  471. #ifdef INCLUDE_DCOM
  472. extern int dcomLibInit ();
  473. #endif
  474. #ifdef INCLUDE_NBIO_LOG
  475. #include <private/nbioLogLibP.h>
  476. #endif
  477. #ifdef INCLUDE_SC_IOS
  478. #include <iosScLib.h>
  479. #endif
  480. #ifdef INCLUDE_MEM_RTP
  481. extern void memRtpLibInit (UINT rtpHeapSize, UINT rtpHeapOptions);
  482. #endif
  483. #ifdef INCLUDE_SC_KERNEL
  484. extern STATUS windScInit (void);
  485. #endif
  486. #ifdef INCLUDE_SC_MMAN
  487. extern STATUS mmanScLibInit (void);
  488. #endif
  489. #ifdef INCLUDE_SC_POSIX
  490. extern void usrPosixScInit (void);
  491. #endif
  492. #ifdef INCLUDE_POSIX_ADVISORY_FILE_LOCKING
  493. #include "usrPosixAdvLock.c"
  494. #endif
  495. #ifdef INCLUDE_SC_SYSCTL
  496. extern STATUS sysctlScLibInit (void);
  497. #endif
  498. #ifdef INCLUDE_SC_SD
  499. extern STATUS sdScInit(void);
  500. #endif
  501. #ifdef INCLUDE_MEM_EDR_SHOW
  502. extern STATUS memEdrShowInit (void);
  503. extern STATUS memEdrShellCmdInit (void);
  504. #endif
  505. #ifdef INCLUDE_MEM_EDR_RTP_SHOW
  506. extern STATUS memEdrRtpShowInit (void);
  507. extern STATUS memEdrRtpShellCmdInit (void);
  508. #endif
  509. #ifdef INCLUDE_POSIX_CLOCKS
  510. extern int clockLibInit (void);
  511. #endif
  512. #ifdef INCLUDE_POSIX_TIMERS
  513. extern STATUS timerLibInit (void);
  514. #ifdef INCLUDE_OBJ_OPEN
  515. extern void timerOpenInit (void);
  516. #endif
  517. #endif
  518. #ifdef INCLUDE_POWER_MGMT_CPU_BSP_SUPPORT
  519. void sysCpuPwrEnable (void);
  520. #endif
  521. #if (defined (INCLUDE_CPU_PWR_MGMT) && (CPU_FAMILY == I80X86))
  522. #include <cpuPwrMgr.h>
  523. #include <cpuPwrLib.h>
  524. #include <private/cpuPwrLibP.h>
  525. #endif
  526. #ifdef INCLUDE_POSIX_SEM
  527. #include <private/semPxLibP.h>
  528. #ifdef INCLUDE_SHOW_ROUTINES
  529. #include <semPxShow.h>
  530. #endif
  531. #endif
  532. #ifdef INCLUDE_POSIX_MQ
  533. #include <private/mqPxLibP.h>
  534. #ifdef INCLUDE_SHOW_ROUTINES
  535. #include <mqPxShow.h>
  536. #endif
  537. #endif
  538. #ifdef INCLUDE_POSIX_THREAD_CPUTIME
  539. #include <private/pxCpuTimeLibP.h>
  540. #endif
  541. #if     defined(INCLUDE_LOADER)
  542. #include <loadElfLib.h>
  543. #endif
  544. #if     defined(INCLUDE_NET_SYM_TBL)
  545. #include <private/loadLibP.h>
  546. #endif
  547. #ifdef INCLUDE_STANDALONE_SYM_TBL
  548. #include <symbol.h>
  549. #endif /* INCLUDE_STANDALONE_SYM_TBL */
  550. #ifdef INCLUDE_POOL
  551. #include <poolLib.h>
  552. #endif
  553. #ifdef INCLUDE_SET
  554. #include <setLib.h>
  555. #endif
  556. #ifdef INCLUDE_MEMDRV
  557. #include <memDrv.h>
  558. #endif
  559. #ifdef INCLUDE_PTYDRV
  560. #include <ptyDrv.h>
  561. #endif
  562. #ifdef INCLUDE_TYLIB
  563. #include <tyLib.h>
  564. #endif
  565. #ifdef INCLUDE_EXC_TASK
  566. extern STATUS   excInit (UINT maxIsrJobs);
  567. #endif
  568. #ifdef INCLUDE_JOB_TASK
  569. extern STATUS jobLibInit (int jobTaskStackSize);
  570. #endif
  571. #ifdef INCLUDE_ERF
  572. extern STATUS erfLibInit (UINT16 maxUserCat, UINT16 maxUserType);
  573. #endif
  574. #ifdef INCLUDE_DEVICE_MANAGER
  575. extern STATUS devInit (uint16_t ndevs);
  576. #endif
  577. #ifdef INCLUDE_XBD
  578. extern STATUS xbdInit (void);
  579. #endif
  580. #ifdef INCLUDE_XBD_BLK_DEV
  581. extern STATUS xbdBlkDevLibInit (void);
  582. #endif
  583. #ifdef INCLUDE_FS_MONITOR
  584. extern STATUS fsMonitorInit (void);
  585. #endif
  586. #ifdef INCLUDE_FS_EVENT_UTIL
  587. extern STATUS fsEventUtilLibInit (void);
  588. #endif
  589. #ifdef INCLUDE_HRFS_FORMAT
  590. extern STATUS hrfsFormatLibInit (void);
  591. #endif
  592. #ifdef INCLUDE_DOSFS_MAIN
  593. #include "usrDosfs.c"
  594. #endif
  595. #if defined (INCLUDE_HRFS) || defined (INCLUDE_HRFS_READONLY)
  596. #include "usrHrfs.c"
  597. #endif
  598. #ifdef INCLUDE_CDROMFS
  599. #include "cdromFsLib.h"
  600. #endif /* INCLUDE_CDROMFS */
  601. #if defined (WV_INSTRUMENTATION) && defined (INCLUDE_WVNETD)
  602. #if defined(__STDC__) || defined(__cplusplus)
  603. extern void wvNetDInit (void);
  604. #else /* __STDC__ */
  605. extern void wvNetDInit ();
  606. #endif /* __STDC__ */
  607. #endif /* WV_INSTRUMENTATION && INCLUDE_WVNETD */
  608. #if defined (WV_INSTRUMENTATION) && defined (INCLUDE_WVTIPC)
  609. #if defined(__STDC__) || defined(__cplusplus)
  610. extern void wvTipcInit (void);
  611. #else /* __STDC__ */
  612. extern void wvTipcInit ();
  613. #endif /* __STDC__ */
  614. #endif /* WV_INSTRUMENTATION && INCLUDE_WVTIPC */
  615. #ifdef INCLUDE_POSIX_TRACE
  616. extern STATUS pxTraceStreamLibInit (void);
  617. #endif /* INCLUDE_POSIX_TRACE */
  618. #ifdef INCLUDE_POSIX_TRACE_TIMESTAMP
  619. #include <wvTmrLib.h>
  620. #endif /* INCLUDE_POSIX_TRACE_TIMESTAMP */
  621. #ifdef INCLUDE_WDB_PROXY
  622. #include <wrProxyLib.h>
  623. #endif /* INCLUDE_WDB_PROXY */
  624. /* defines - must be after include of usrDepend.c */
  625. #ifdef INCLUDE_WDB
  626. #define FREE_MEM_START_ADRS (FREE_RAM_ADRS + WDB_POOL_SIZE)
  627. #else
  628. #define FREE_MEM_START_ADRS FREE_RAM_ADRS
  629. #endif
  630. #ifdef INCLUDE_INITIAL_MEM_ALLOCATION
  631. #define MEM_POOL_START_ADRS 
  632.     (ROUND_UP(FREE_MEM_START_ADRS, (INITIAL_MEM_ALIGNMENT)) + 
  633.     (INITIAL_MEM_SIZE))
  634. #else /* INCLUDE_INITIAL_MEM_ALLOCATION */
  635. #define MEM_POOL_START_ADRS FREE_MEM_START_ADRS
  636. #endif /* INCLUDE_INITIAL_MEM_ALLOCATION */
  637. #if defined INCLUDE_PROTECT_TASK_STACK 
  638. || defined INCLUDE_PROTECT_INTERRUPT_STACK
  639. # if defined(_WRS_OSM_INIT)
  640. void excOsmInit (int, int);
  641. # endif /* defined(_WRS_OSM_INIT) */
  642. # if defined INCLUDE_PROTECT_INTERRUPT_STACK
  643. void usrKernelIntStkProtect(void);
  644. # endif /* INCLUDE_PROTECT_INTERRUPT_STACK */
  645. #endif /* INCLUDE_PROTECT_TASK_STACK || INCLUDE_PROTECT_INTERRUPT_STACK */
  646. #if (CPU_FAMILY == PPC)
  647. void excIntNestLogInit(void);
  648. #endif /* (CPU_FAMILY == PPC) */
  649. #if (CPU_FAMILY == MIPS)
  650. void palInit (void);
  651. #endif  /* (CPU_FAMILY == MIPS) */
  652. /* global variables */
  653. int consoleFd; /* fd of initial console device */
  654. char consoleName[20]; /* console device name, eg. "/tyCo/0" */
  655. SYMTAB_ID statSymTbl; /* system error status symbol table id*/
  656. SYMTAB_ID standAloneSymTbl; /* STANDALONE version symbol table id */
  657. SYMTAB_ID sysSymTbl; /* system symbol table id */
  658. BOOT_PARAMS sysBootParams; /* parameters from boot line */
  659. int sysStartType; /* type of boot (WARM, COLD, etc) */
  660. int sysFlags; /* boot flags */
  661. char sysBootHost [BOOT_FIELD_LEN];   /* name of boot host */
  662. char sysBootFile [BOOT_FIELD_LEN];   /* name of boot file */
  663. char * memPoolEndAdrs; /* end of the kernel memory pool */
  664. #ifdef INCLUDE_PROTECT_TEXT
  665. int sysTextProtect = 1;
  666. #else  /* INCLUDE_PROTECT_TEXT */
  667. int sysTextProtect = 0;
  668. #endif /* INCLUDE_PROTECT_TEXT */
  669. #if (CPU_FAMILY == PPC)
  670. IMPORT _RType taskMsrDefault;   /* from taskArchLib.c */
  671. #endif /* (CPU_FAMILY == PPC) */
  672. extern char * startupScriptFieldSplit (char *);
  673. /* Two magic cookies used to detect data section misalignment */
  674. #define TRAP_VALUE_1 0x12348765
  675. #define TRAP_VALUE_2 0x5a5ac3c3
  676. LOCAL volatile UINT32 trapValue1 = TRAP_VALUE_1;
  677. LOCAL volatile UINT32 trapValue2 = TRAP_VALUE_2;
  678. /*******************************************************************************
  679. *
  680. * usrInit - user-defined system initialization routine
  681. *
  682. * This is the first C code executed after the system boots.  This routine is
  683. * called by the assembly language start-up routine sysInit() which is in the
  684. * sysALib module of the target-specific directory.  It is called with
  685. * interrupts locked out.  The kernel is not multitasking at this point.
  686. *
  687. * This routine starts by clearing BSS; thus all variables are initialized to 0,
  688. * as per the C specification.  It then initializes the hardware by calling
  689. * sysHwInit(), sets up the interrupt/exception vectors, and starts kernel
  690. * multitasking with usrRoot() as the root task.
  691. *
  692. * RETURNS: N/A
  693. *
  694. * SEE ALSO: kernelLib
  695. *
  696. * ARGSUSED0
  697. */
  698. void usrInit
  699.     (
  700.     int startType
  701.     )
  702.     {
  703.     /*
  704.      * This trap will catch improper loading of the data section.
  705.      * We check the magic cookie values to make sure the data section is
  706.      * in the expected memory location. We do not want
  707.      * to proceed further if the data segment is not correct.
  708.      *
  709.      * It should be easy to detect entry into the trap using an ICE, JTAG,
  710.      * or logic analyzer. Without the trap, the processor is likely to run
  711.      * away out of control.
  712.      *
  713.      * Data section misalignment can occur when there is a change in tool
  714.      * chain, build rules, compiler, host utilites,  etc. 
  715.      */
  716.     while (trapValue1 != TRAP_VALUE_1 || trapValue2 != TRAP_VALUE_2)
  717. {
  718. /* infinite loop */;
  719. }
  720.     
  721. #if (CPU_FAMILY == MIPS)
  722.     palInit ();
  723. #endif /* (CPU_FAMILY == MIPS) */
  724. #if (CPU_FAMILY == SPARC)
  725.     excWindowInit (); /* SPARC window management */
  726. #endif
  727. #ifdef INCLUDE_SYS_HW_INIT_0
  728.     /*
  729.      * Perform any BSP-specific initialisation that must be done before
  730.      * cacheLibInit() is called and/or BSS is cleared.
  731.      */
  732.     SYS_HW_INIT_0 ();
  733. #endif /* INCLUDE_SYS_HW_INIT_0 */
  734.     /* configure data and instruction cache if available and leave disabled */
  735.     /* don't assume bss variables are zero before this call */
  736.     bzero (edata, end - edata); /* zero out bss variables */
  737. #ifdef  INCLUDE_CACHE_SUPPORT
  738.     /*
  739.      * SPR 73609:  If a cache is not to be enabled, don't require
  740.      * its mode to be defined.  Instead, default it to disabled.
  741.      */
  742. # if (!defined(USER_D_CACHE_ENABLE) && !defined(USER_D_CACHE_MODE))
  743. #  define USER_D_CACHE_MODE CACHE_DISABLED
  744. # endif /* !USER_D_CACHE_ENABLE && !USER_D_CACHE_MODE */
  745. # if (!defined(USER_I_CACHE_ENABLE) && !defined(USER_I_CACHE_MODE))
  746. #  define USER_I_CACHE_MODE CACHE_DISABLED
  747. # endif /* !USER_I_CACHE_ENABLE && !USER_I_CACHE_MODE */
  748.     cacheLibInit (USER_I_CACHE_MODE, USER_D_CACHE_MODE);
  749. #endif  /* INCLUDE_CACHE_SUPPORT */
  750.     sysStartType = startType; /* save type of system start */
  751.     intVecBaseSet ((FUNCPTR *) VEC_BASE_ADRS); /* set vector base table */
  752. #if (CPU_FAMILY == AM29XXX)
  753.     excSpillFillInit (); /* am29k stack cache managemt */
  754. #endif
  755. #ifdef  INCLUDE_EXC_HANDLING
  756. # if (CPU_FAMILY == PPC) && defined(INCLUDE_EXC_SHOW)
  757.     /*
  758.      * Do this ahead of excVecInit() to set up _func_excPanicHook, in case
  759.      * the enabling of Machine Check there allows a pending one to occur.
  760.      * excShowInit() will be called again later, harmlessly.
  761.      */
  762.     excShowInit ();
  763. # endif  /* CPU_FAMILY == PPC && defined(INCLUDE_EXC_SHOW) */
  764.     excVecInit (); /* install exception vectors */
  765. #endif  /* INCLUDE_EXC_HANDLING */
  766.     sysHwInit (); /* initialize system hardware */
  767.  
  768. #ifdef  INCLUDE_CACHE_SUPPORT
  769. #ifdef  USER_I_CACHE_ENABLE
  770.     cacheEnable (INSTRUCTION_CACHE); /* enable instruction cache */
  771. #endif /* USER_I_CACHE_ENABLE */
  772. #ifdef USER_D_CACHE_ENABLE
  773.     cacheEnable (DATA_CACHE); /* enable data cache */
  774. #endif  /* USER_D_CACHE_ENABLE */
  775. #if (CPU == MC68060)
  776. #ifdef  USER_B_CACHE_ENABLE
  777.     cacheEnable (BRANCH_CACHE); /* enable branch cache */
  778. #endif /* USER_B_CACHE_ENABLE */
  779. #endif /* (CPU == MC68060) */
  780. #endif  /* INCLUDE_CACHE_SUPPORT */
  781.     usrKernelInit (); /* configure the Wind kernel */
  782.     /* configure memory manager ED&R library (pre-kernel part) */
  783. #ifdef INCLUDE_MEM_EDR
  784.     memEdrInit ();
  785. #endif
  786.     /* if wanted, start WDB before kernel */
  787. #if defined (INCLUDE_WDB) && (WDB_INIT == WDB_PRE_KERNEL_INIT)
  788.     usrWdbInit ();
  789.     wdbSystemSuspend ();
  790. #endif /* defined (INCLUDE_WDB) && (WDB_INIT == WDB_PRE_KERNEL_INIT) */
  791. #ifdef INCLUDE_RTP
  792.     memPoolEndAdrs = min ((char *) MEM_POOL_START_ADRS + KERNEL_HEAP_SIZE, 
  793.   sysMemTop());
  794. #else
  795.     memPoolEndAdrs = sysMemTop();
  796. #endif
  797.     /* start the kernel specifying usrRoot as the root task */
  798.     kernelInit ((FUNCPTR) usrRoot, ROOT_STACK_SIZE,
  799. (char *) MEM_POOL_START_ADRS, memPoolEndAdrs,
  800. ISR_STACK_SIZE, INT_LOCK_LEVEL);
  801.     }
  802. /*******************************************************************************
  803. *
  804. * usrRoot - the root task
  805. *
  806. * This is the first task to run under the multitasking kernel.  It performs
  807. * all final initialization and then starts other tasks.
  808. *
  809. * It initializes the I/O system, installs drivers, creates devices, and sets
  810. * up the network, etc., as necessary for a particular configuration.  It
  811. * may also create and load the system symbol table, if one is to be included.
  812. * It may then load and spawn additional tasks as needed.  In the default
  813. * configuration, it simply initializes the VxWorks shell.
  814. *
  815. * RETURNS: N/A
  816. */
  817. void usrRoot
  818.     (
  819.     char * pMemPoolStart, /* start of system memory partition */
  820.     unsigned memPoolSize /* initial size of mem pool */
  821.     )
  822.     {
  823.     extern int (*funcUsrBootLineCrack)(char *bootString, BOOT_PARAMS *pParams);
  824.     funcUsrBootLineCrack = usrBootLineCrack;
  825. #if defined(INCLUDE_TTY_DEV) || defined(INCLUDE_PC_CONSOLE) || 
  826.     defined(INCLUDE_STAT_SYM_TBL) || defined(INCLUDE_ATA)
  827.     int  ix;
  828. #if defined(INCLUDE_TTY_DEV) || defined(INCLUDE_PC_CONSOLE)
  829.     char tyName [20];
  830. #endif
  831. #endif  /* INCLUDE_{TTY_DEV,PC_CONSOLE,STAT_SYM_TBL,ATA} */
  832.     /* initialize core kernel facilities */
  833.     usrKernelCoreInit();
  834.     /* New CPU power management only available on Pentium */
  835. #if defined (INCLUDE_CPU_PWR_MGMT) && (CPU_FAMILY == I80X86)
  836.     cpuPwrFrameWorkInit
  837. (
  838. CPU_PWR_TASK_P_STATE,
  839. CPU_PWR_ISR_P_STATE,
  840. CPU_PWR_UTIL_PERIOD1,
  841. CPU_PWR_UTIL_PERIOD2,
  842. CPU_PWR_HIGH_THRESHOLD,
  843. CPU_PWR_LOW_THRESHOLD
  844. );
  845. #ifdef INCLUDE_CPU_UTIL_PWR_MGR
  846.     cpuPwrUtilMgrInit (CPU_PWR_UP_UTIL, CPU_PWR_DOWN_UTIL);
  847. #else
  848.     cpuPwrLightMgrInit ();
  849. #endif
  850. #endif
  851.     /* Initialize the memory pool before initializing any other package.
  852.      * The memory associated with the root task will be reclaimed at the
  853.      * completion of its activities.
  854.      */
  855. #ifdef INCLUDE_MEM_ALLOT
  856.     /* initialize memory manager */
  857.     memAllotLibInit (pMemPoolStart, memPoolSize);
  858. #else  /* INCLUDE_MEM_ALLOT */
  859. # ifdef INCLUDE_MEM_MGR_FULL
  860.     memInit (pMemPoolStart, memPoolSize, MEM_PART_DEFAULT_OPTIONS);
  861. # else
  862.     memPartLibInit (pMemPoolStart, memPoolSize);
  863. # endif /* INCLUDE_MEM_MGR_FULL */
  864. # ifdef INCLUDE_MEM_MGR_INFO
  865.     memInfoInit();
  866. # endif /* INCLUDE_MEM_MGR_FULL */
  867. #endif  /* INCLUDE_MEM_ALLOT */
  868.     /* configure memory manager ED&R library (post kernel init part) */
  869. #ifdef INCLUDE_MEM_EDR
  870.     memEdrInit2 ();
  871. #ifdef INCLUDE_MEM_EDR_SHOW
  872.     memEdrShowInit ();
  873. #endif
  874. #endif
  875.     /* memEdrRtpShow is dependent on RTP support, but not on MEM_EDR */
  876. #ifdef INCLUDE_RTP
  877. #ifdef INCLUDE_MEM_EDR_RTP_SHOW
  878.     memEdrRtpShowInit ();
  879. #endif
  880. #endif
  881. #ifdef INCLUDE_SHOW_ROUTINES
  882.     memShowInit (); /* initialize memShow routine */
  883. #endif /* INCLUDE_SHOW_ROUTINES */
  884. #ifdef INCLUDE_USB
  885.     usbdPciInit ();
  886. #endif
  887. #ifdef INCLUDE_USB_TARG
  888.     usrUsbTargPciInit ();
  889. #endif
  890.     /* Initialize sysctl support */
  891. #ifdef INCLUDE_SYSCTL
  892.     usrSysctlInit();                            /* System control function */
  893. #ifdef INCLUDE_SYSCTL_HW
  894.     usrHwSysctlInit();                          /* System control h/w access */
  895. #endif /* INCLUDE_SYSCTL_HW */ 
  896. #endif /* INCLUDE_SYSCTL */ 
  897.     /* 
  898.      * Initialization of RTP should be early. Memory allocations
  899.      * may vary depending on whether RTP is initialized or not.
  900.      */
  901. /*
  902.  * RTP initialization is up here because the MM code relies on it. This needs
  903.  * to be moved once the dependency is removed. 
  904.  */
  905. #ifdef  INCLUDE_RTP
  906. #ifdef        INCLUDE_RTP_HOOKS
  907.     rtpHookLibInit (RTP_HOOK_TBL_SIZE);
  908. #endif        /* INCLUDE_RTP_HOOKS */
  909.     rtpLibInit (RTP_HOOK_TBL_SIZE, 
  910.                 SYSCALL_HOOK_TBL_SIZE, 
  911.                 RTP_SIGNAL_QUEUE_SIZE,
  912.                 TASK_USER_EXC_STACK_OVERFLOW_SIZE,
  913.                 TASK_USER_EXEC_STACK_OVERFLOW_SIZE,
  914.                 TASK_USER_EXEC_STACK_UNDERFLOW_SIZE,
  915. RTP_FD_NUM_MAX
  916. );
  917. #ifdef        INCLUDE_SYSCALL_HOOKS
  918.     syscallHookLibInit ();
  919. #endif        /* INCLUDE_RTP_HOOKS */
  920. #if defined (INCLUDE_RTP_SHOW) || defined (INCLUDE_SHOW_ROUTINES)
  921.     rtpShowInit ();                             /* initialize rtpShow routine */
  922. #endif  /* INCLUDE_SHOW_ROUTINES */
  923. #ifdef INCLUDE_SHARED_DATA
  924.     sdLibInit (SD_HOOK_TBL_SIZE); /* initialize shared data */
  925. #if defined(INCLUDE_SHARED_DATA_SHOW) || defined (INCLUDE_SHOW_ROUTINES)
  926.     sdShowInit ();                             /* initialize sdShow routine */
  927. #endif  /* INCLUDE_SHOW_ROUTINES */
  928. #endif /* INCLUDE_SHARED_DATA */
  929. #ifdef INCLUDE_SHL
  930.     shlLibInit (); /* initialize shared library */
  931. #if defined (INCLUDE_SHL_SHOW) || defined (INCLUDE_SHOW_ROUTINES)
  932.     shlShowInit(); /* initialize SHL show ruotines */
  933. #endif /* INCLUDE_SHL_SHOW || INCLUDE_SHOW_ROUTINES */
  934. #endif /* INCLUDE_SHL */
  935. #endif  /* INCLUDE_RTP */
  936.     /* setup the page pool library */
  937.     /*
  938.      * The MMU intialization code relies on the address space allocator being
  939.      * initialized. The address space allocator relies on the page pool
  940.      * libraries being initialized. Therefore this order needs to be
  941.      * preserved.
  942.      */
  943. #ifdef INCLUDE_PG_POOL_LIB
  944.     pgPoolLibInit();    /* always returns OK */
  945. #endif /* INCLUDE_PG_POOL_LIB */
  946. #ifdef INCLUDE_PG_POOL_VIRT_LIB
  947.     pgPoolVirtLibInit();        /* always returns OK */
  948. #endif /* INCLUDE_PG_POOL_VIRT_LIB */
  949. #ifdef INCLUDE_PG_POOL_PHYS_LIB
  950.     pgPoolPhysLibInit();        /* always returns OK */
  951. #endif /* INCLUDE_PG_POOL_PHYS_LIB */
  952. #if    defined(INCLUDE_MMU_BASIC) || defined(INCLUDE_MMU_GLOBAL_MAP)
  953. #ifdef INCLUDE_AIM_MMU_CONFIG
  954.     usrAimMmuConfig();
  955. #endif /* INCLUDE_AIM_MMU_CONFIG */
  956.     usrMmuInit ((VIRT_ADDR) pMemPoolStart, memPoolSize);/* initialize the mmu */
  957. #endif /* defined(INCLUDE_MMU_BASIC) || defined(INCLUDE_MMU_GLOBAL_MAP) */
  958. #if    defined(INCLUDE_MMU_BASIC)
  959. #ifdef INCLUDE_PROTECT_TEXT
  960.     usrTextProtect ();
  961. #endif /* INCLUDE_PROTECT_TEXT */
  962.     /*
  963.      * For arch which provide an OSM initialization function, it must be
  964.      * called if guard regions are being defined for either task stacks or
  965.      * the interrupt stack.  If the interrupt stack is protected and task
  966.      * stacks are not, pass the task stack overflow size parameter as zero.
  967.      */
  968. #if defined INCLUDE_PROTECT_TASK_STACK 
  969. || defined INCLUDE_PROTECT_INTERRUPT_STACK
  970. # if defined(_WRS_OSM_INIT)
  971. #  if defined INCLUDE_PROTECT_TASK_STACK
  972.     excOsmInit (TASK_USER_EXC_STACK_OVERFLOW_SIZE, VM_PAGE_SIZE);
  973. #  else  /* INCLUDE_PROTECT_TASK_STACK */
  974.     excOsmInit (0, VM_PAGE_SIZE);
  975. #  endif /* INCLUDE_PROTECT_TASK_STACK */
  976. # endif /* defined(_WRS_OSM_INIT) */
  977. #endif /* INCLUDE_PROTECT_TASK_STACK || INCLUDE_PROTECT_INTERRUPT_STACK */
  978. #if defined INCLUDE_PROTECT_INTERRUPT_STACK
  979.     /* Apply protection to interrupt stack guard regions */
  980.     usrKernelIntStkProtect();
  981. #endif /* INCLUDE_PROTECT_INTERRUPT_STACK */
  982. #if defined INCLUDE_PROTECT_TASK_STACK
  983.     taskStackGuardPageEnable ();
  984. #endif /* INCLUDE_PROTECT_TASK_STACK */
  985. #ifdef INCLUDE_TASK_STACK_NO_EXEC
  986.     taskStackNoExecEnable ();
  987. #endif /* INCLUDE_TASK_STACK_NO_EXEC */
  988. #ifdef INCLUDE_AIM_MMU_SHOW
  989.     aimMmuShowInit();
  990. #endif
  991. #endif /* defined(INCLUDE_MMU_BASIC) */
  992. #if (CPU_FAMILY == PPC)
  993.     excIntNestLogInit(); /* frameless nesting logger */
  994.     /* Enable interrupts immediately after MMU */
  995.     vxMsrSet(vxMsrGet() | taskMsrDefault);
  996. #endif /* (CPU_FAMILY == PPC) */
  997. #ifdef INCLUDE_RTP
  998. #ifdef INCLUDE_PG_MGR_LIB
  999.     pgMgrLibInit();    /* always returns OK */
  1000. #endif /* INCLUDE_PG_MGR_LIB */
  1001. #if defined (INCLUDE_RTP_SHOW) || defined (INCLUDE_SHOW_ROUTINES)
  1002.     pgPoolShowInit (); /* initialize pgPoolShow lib */
  1003.     pgMgrShowInit (); /* initialize pgMgrShow lib */
  1004. #endif /* defined(INCLUDE_RTP_SHOW) */
  1005. #if defined (INCLUDE_ADR_SPACE_SHOW) || defined (INCLUDE_SHOW_ROUTINES)
  1006.     adrSpaceShowInit (); /* initialize adrSpaceShow */
  1007. #endif /* defined(INCLUDE_ADR_SPACE_SHOW) */
  1008. #if defined (INCLUDE_MAPPED_FILES_SHOW)
  1009.     mmanShowInit (); /* initialize mmanShow lib */
  1010. #endif
  1011. #endif /* INCLUDE_RTP */
  1012. /* 
  1013.  * ED&R initialization needs to be as early as possible in the boot
  1014.  * sequence, in order to catch early exceptions. It is here,
  1015.  * immediately after the MMU is initialised, since it uses the
  1016.  * services of vmLib.
  1017.  */
  1018. #ifdef INCLUDE_EDR_PM
  1019.     usrPmInit ();
  1020. #endif /* INCLUDE_EDR_PM */
  1021. #ifdef INCLUDE_EDR_ERRLOG
  1022.     /* initialize the ED&R subsystem */
  1023.     usrEdrInit ();
  1024. #ifdef INCLUDE_EDR_SHOW
  1025.     edrShowInit ();
  1026. #endif /* INCLUDE_EDR_SHOW */
  1027. #endif /* INCLUDE_EDR_ERRLOG */
  1028. #ifdef INCLUDE_EDR_SYSDBG_FLAG
  1029.     edrSystemDebugModeInit ();
  1030. #endif /* INCLUDE_EDR_SYSDBG_FLAG */
  1031.     /* Now inject a 'boot' ED&R event - this takes place outside
  1032.      * the INCLUDE_EDR guards, as the stub is always included.
  1033.      */
  1034.     edrStubInit ();
  1035. #ifdef INCLUDE_CORE_DUMP
  1036.     usrCoreDumpInit ();
  1037. #endif /* INCLUDE_CORE_DUMP */
  1038.     /* set up system timer */
  1039.     sysClkConnect ((FUNCPTR) usrClock, 0); /* connect clock ISR */
  1040.     sysClkRateSet (SYS_CLK_RATE); /* set system clock rate */
  1041.     sysClkEnable (); /* start it */
  1042. #ifdef INCLUDE_FAST_DRAM
  1043. /*
  1044.  * make use of data cache as fast DRAM,
  1045.  * establish parameters in config.h, MMU
  1046.  * must be initialed before data cache is
  1047.  * initialized as data ram...
  1048.  */
  1049.   cacheCreateInternalDataRAM((UINT32 *)FD_ORIGIN, FD_NUMLINES);
  1050. #endif
  1051. #ifdef  INCLUDE_SET
  1052.     setLibInit ();
  1053. #endif
  1054.     /* initialize I/O system */
  1055. #ifdef  INCLUDE_IO_SYSTEM
  1056.     iosInit (NUM_DRIVERS, NUM_FILES, "/null", IOS_POSIX_PSE52_MODE);
  1057.     consoleFd = NONE;                           /* assume no console device */
  1058.     /*
  1059.      * The select library needs to be initialized before the tyLib module
  1060.      * since the _func_selWakeupListInit FUNCPTR is required (SPR #3314).
  1061.      * The installation of the select task delete hooks is performed
  1062.      * later in usrRoot() after NFS and RPC have been initialized.
  1063.      */
  1064. #ifdef  INCLUDE_SELECT
  1065.     selectInit (NUM_FILES);
  1066. #endif /* INCLUDE_SELECT */
  1067.     /* initialize process file system */
  1068. #ifdef  INCLUDE_PROCFS
  1069.     {
  1070.     extern int procfsFsDevCreate (char *, int);
  1071.     extern int rtpProcfsInit (void);
  1072.     extern int edrProcfsInit (void);
  1073.     procfsFsDevCreate ("/proc", 5);
  1074. #ifdef INCLUDE_RTP
  1075.     rtpProcfsInit(); /* install RTP specific entries */
  1076. #endif /* INCLUDE_RTP */
  1077. #ifdef INCLUDE_EDR_ERRLOG
  1078.     edrProcfsInit(); /* install ED&R specific entries */
  1079. #endif /* INCLUDE_EDR_ERRLOG */
  1080.     }
  1081. #endif /* INCLUDE_PROCFS */
  1082. #ifdef INCLUDE_TYLIB
  1083.     tyLibInit (TYLIB_XOFF_PCNT, TYLIB_XON_PCNT, TYLIB_WRT_THRESHLD);
  1084. #endif
  1085. #ifdef  INCLUDE_TYCODRV_5_2
  1086. #ifdef  INCLUDE_TTY_DEV
  1087.     if ((NUM_TTY > 0))
  1088. {
  1089. tyCoDrv (); /* install console driver */
  1090. for (ix = 0; ix < NUM_TTY; ix++) /* create serial devices */
  1091.     {
  1092.     sprintf (tyName, "%s%d", "/tyCo/", ix);
  1093.     (void) tyCoDevCreate (tyName, ix, 512, 512);
  1094.     if (ix == CONSOLE_TTY)
  1095. strcpy (consoleName, tyName); /* store console name */
  1096.     }
  1097. consoleFd = open (consoleName, O_RDWR, 0);
  1098. /* set baud rate */
  1099. (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE);
  1100. (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL);
  1101. }
  1102. #endif /* INCLUDE_TTY_DEV */
  1103. #else   /* !INCLUDE_TYCODRV_5_2 */
  1104. #ifdef  INCLUDE_TTY_DEV
  1105.     ttyDrv (); /* install console driver */
  1106.     if ((NUM_TTY > 0))
  1107. {
  1108. for (ix = 0; ix < NUM_TTY; ix++) /* create serial devices */
  1109.     {
  1110. #if     (defined(INCLUDE_WDB) && (WDB_COMM_TYPE == WDB_COMM_SERIAL))
  1111.     if (ix == WDB_TTY_CHANNEL) /* don't use WDBs channel */
  1112. continue;
  1113. #endif
  1114.     sprintf (tyName, "%s%d", "/tyCo/", ix);
  1115.     (void) ttyDevCreate (tyName, sysSerialChanGet(ix), 512, 512);
  1116.     if (ix == CONSOLE_TTY) /* init the tty console */
  1117. {
  1118. strcpy (consoleName, tyName);
  1119. consoleFd = open (consoleName, O_RDWR, 0);
  1120. (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE);
  1121. (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL);
  1122. }
  1123.     }
  1124. }
  1125. #endif  /* INCLUDE_TTY_DEV */
  1126. #ifdef INCLUDE_PC_CONSOLE
  1127.     pcConDrv ();
  1128.     for (ix = 0; ix < N_VIRTUAL_CONSOLES; ix++)
  1129. {
  1130. sprintf (tyName, "%s%d", "/pcConsole/", ix);
  1131. (void) pcConDevCreate (tyName,ix, 512, 512);
  1132. if (ix == PC_CONSOLE) /* init the console device */
  1133.     {
  1134.     strcpy (consoleName, tyName);
  1135.     consoleFd = open (consoleName, O_RDWR, 0);
  1136.     (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE);
  1137.     (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL);
  1138.     }
  1139. }
  1140. #endif /* INCLUDE_PC_CONSOLE */
  1141. #endif  /* !INCLUDE_TYCODRV_5_2 */
  1142.     ioGlobalStdSet (STD_IN,  consoleFd);
  1143.     ioGlobalStdSet (STD_OUT, consoleFd);
  1144.     ioGlobalStdSet (STD_ERR, consoleFd);
  1145. #endif  /* INCLUDE_IO_SYSTEM */
  1146. #if defined (_WRS_PAL_COPROC_LIB)
  1147.     coprocLibInit();
  1148. #ifdef INCLUDE_HW_FP
  1149.     aimFppLibInit();        /* dummy function to include fppTaskRegsSet/Get */
  1150. #endif
  1151. #endif /* _WRS_PAL_COPROC_LIB */
  1152.     /* initialize symbol table facilities */
  1153. #ifdef INCLUDE_SYM_TBL
  1154.     hashLibInit (); /* initialize hash table package */
  1155.     symLibInit ();                 /* initialize symbol table package */
  1156. #ifdef  INCLUDE_SHOW_ROUTINES
  1157.     symShowInit (); /* initialize symbol table show */
  1158. #endif /* INCLUDE_SHOW_ROUTINES */
  1159. #endif /* INCLUDE_SYM_TBL */
  1160.     /* initialize exception handling */
  1161. #if     defined(INCLUDE_EXC_HANDLING) && defined(INCLUDE_EXC_TASK)
  1162. #ifdef INCLUDE_EXC_SHOW
  1163.     excShowInit ();
  1164. #endif
  1165.     /* initialize exception handling */
  1166.     excInit (MAX_ISR_JOBS);
  1167. #endif  /* defined(INCLUDE_EXC_HANDLING) && defined(INCLUDE_EXC_TASK) */
  1168. #if defined(INCLUDE_JOB_TASK)
  1169.     jobLibInit (JOB_TASK_STACK_SIZE);
  1170. #endif /* INCLUDE_JOB_TASK */
  1171. #ifdef INCLUDE_LSTLIB
  1172.     lstLibInit ();
  1173. #endif
  1174. #ifdef INCLUDE_LOGGING
  1175.     logInit (consoleFd, MAX_LOG_MSGS); /* initialize logging */
  1176. # ifdef INCLUDE_LOG_STARTUP
  1177.     logMsg ("logging started to %s [%d], queue size %dn",
  1178. consoleName, consoleFd, MAX_LOG_MSGS, 4,5,6);
  1179.     taskDelay (2); /* allow time for message to be displayed */
  1180. # endif /* INCLUDE_LOG_STARTUP */
  1181. #endif /* INCLUDE_LOGGING */
  1182. #ifdef INCLUDE_NBIO_LOG
  1183.     nbioLogInit (consoleFd, INIT_NBIO_MSGS);
  1184. #endif /* INCLUDE_NBIO_LOG */
  1185. #ifdef INCLUDE_SIGNALS
  1186.     sigInit (POSIX_SIGNAL_MODE);        /* initialize signals */
  1187. #endif /* INCLUDE_SIGNALS */
  1188. #ifdef INCLUDE_POSIX_CLOCKS
  1189.     clockLibInit (); /* initialize clock */
  1190. #endif /* INCLUDE_POSIX_CLOCKS */
  1191. #ifdef INCLUDE_POSIX_TIMERS
  1192.     timerLibInit (); /* initialize timers */
  1193. #ifdef INCLUDE_OBJ_OPEN
  1194.     timerOpenInit ();
  1195. #endif
  1196. #endif /* INCLUDE_POSIX_TIMERS */
  1197. #ifdef INCLUDE_POSIX_SHM
  1198.     shmFsLibInit (SHM_DEV_NAME); /* initialize POSIX shared memory */
  1199. /* objects option */
  1200. #endif
  1201. #ifdef INCLUDE_POSIX_MAPPED_FILES
  1202.     mmanFdLibInit(); /* initialize POSIX memory mapped */
  1203. /* files option */
  1204. #endif
  1205. #ifdef INCLUDE_POSIX_ADVISORY_FILE_LOCKING
  1206.     usrPosixAdvLockInit();
  1207. #endif
  1208.     /* initialize debugging */
  1209. #ifdef INCLUDE_DEBUG
  1210.     dbgInit (); /* initialize debugging */
  1211. #endif /* INCLUDE_DEBUG */
  1212.     /* initialize pipe driver */
  1213. #ifdef INCLUDE_PIPES
  1214.     pipeDrv (); /* install pipe driver */
  1215. #endif /* INCLUDE_PIPES */
  1216.     /* initialize POSIX async I/O support */
  1217. #ifdef INCLUDE_POSIX_AIO
  1218.     aioPxLibInit (MAX_LIO_CALLS);
  1219. #ifdef INCLUDE_POSIX_AIO_SYSDRV
  1220.     aioSysInit (MAX_AIO_SYS_TASKS, AIO_TASK_PRIORITY, AIO_TASK_STACK_SIZE);
  1221. #endif  /* INCLUDE_POSIX_AIO_SYSDRV */
  1222. #endif  /* INCLUDE_POSIX_AIO */
  1223.     /* initialize standard I/O package */
  1224. #ifdef INCLUDE_STDIO
  1225.     stdioInit (); /* initialize standard I/O library */
  1226. #ifdef  INCLUDE_SHOW_ROUTINES
  1227.     stdioShowInit ();
  1228. #endif  /* INCLUDE_SHOW_ROUTINES */
  1229. #endif /* INCLUDE_STDIO */
  1230.     /* initialize POSIX queued signals */
  1231. #if defined(INCLUDE_POSIX_SIGNALS) && defined(INCLUDE_SIGNALS)
  1232.     sigqueueInit (NUM_SIGNAL_QUEUES); /* initialize queued signals */
  1233. #endif
  1234.     /* initialize POSIX semaphores */
  1235. #ifdef  INCLUDE_POSIX_SEM
  1236.     semPxLibInit ();
  1237. #ifdef INCLUDE_SHOW_ROUTINES
  1238.     semPxShowInit ();
  1239. #endif  /* INCLUDE_SHOW_POUTINES */
  1240. #endif  /* INCLUDE_POSIX_SEM */
  1241.     /* initialize POSIX threads */
  1242. #ifdef INCLUDE_POSIX_PTHREADS
  1243.     pthreadLibInit ();
  1244. #endif  /* INCLUDE_POSIX_PTHREADS */
  1245.     /* initialize POSIX scheduler interface to pthread */
  1246. #ifdef INCLUDE_POSIX_PTHREAD_SCHEDULER
  1247.     taskPxLibInit ();
  1248. #ifdef INCLUDE_PX_SCHED_SPORADIC_POLICY
  1249.     pxSSThreadLibInit ();
  1250. #endif /* INCLUDE_PX_SCHED_SPORADIC_POLICY */
  1251. #endif /* INCLUDE_POSIX_PTHREAD_SCHEDULER */
  1252.     /* initialize Signal Events */
  1253. #ifdef INCLUDE_SIGEVENT
  1254.     sigeventLibInit ();
  1255. #endif  /* INCLUDE_SIGEVENT */
  1256.     /* initialize POSIX message queues */
  1257. #ifdef INCLUDE_POSIX_MQ
  1258.     mqPxLibInit (MQ_HASH_SIZE);
  1259. #ifdef INCLUDE_SHOW_ROUTINES
  1260.     mqPxShowInit ();
  1261. #endif  /* INCLUDE_SHOW_ROUTINES */
  1262. #endif  /* INCLUDE_POSIX_MQ */
  1263. #ifdef INCLUDE_POSIX_THREAD_CPUTIME
  1264.     pxCpuTimeLibInit();
  1265. #endif
  1266. #ifdef INCLUDE_ERF
  1267.     erfLibInit (ERF_MAX_USR_CATEGORIES, ERF_MAX_USR_TYPES);
  1268. #endif
  1269. #ifdef INCLUDE_DEVICE_MANAGER
  1270.     devInit (DEVICE_MANAGER_MAX_NUM_DEVICES);
  1271. #endif
  1272. #ifdef INCLUDE_XBD
  1273.     xbdInit ();
  1274. #endif
  1275. #ifdef INCLUDE_XBD_BLK_DEV
  1276.     xbdBlkDevLibInit ();
  1277. #endif
  1278. #ifdef INCLUDE_FS_MONITOR
  1279.     fsMonitorInit ();
  1280. #endif
  1281. #ifdef INCLUDE_FS_EVENT_UTIL
  1282.     fsEventUtilLibInit ();
  1283. #endif
  1284. #if defined(INCLUDE_HRFS) || defined (INCLUDE_HRFS_READONLY)
  1285.     usrHrfsInit (HRFS_DEFAULT_MAX_BUFFERS, HRFS_DEFAULT_MAX_FILES);
  1286. #endif
  1287. #ifdef INCLUDE_CBIO /* init main CBIO module, cbioLib() */
  1288.     cbioLibInit();
  1289. #endif /* INCLUDE_CBIO */
  1290.     /* initialize filesystems and disk drivers */
  1291. #ifdef INCLUDE_DOSFS_MAIN  /* dosFs2 file system initialization */
  1292.     usrDosfsInit (DOSFS_DEFAULT_MAX_FILES, DOSFS_DEFAULT_CREATE_OPTIONS);
  1293. #endif /* INCLUDE_DOSFS_MAIN */
  1294. #ifdef INCLUDE_DOSFS_CACHE
  1295.     dosFsCacheLibInit (DOSFS_DEFAULT_CACHE_SIZE);
  1296. #endif
  1297. #ifdef INCLUDE_RAWFS
  1298.     rawFsInit (NUM_RAWFS_FILES);  /* init rawFs filesystem */
  1299. #endif /* INCLUDE_RAWFS */
  1300. #ifdef INCLUDE_HRFS_FORMAT
  1301.     hrfsFormatLibInit ();
  1302. #endif
  1303. #ifdef INCLUDE_RAMDRV
  1304.     ramDrv (); /* initialize ram disk driver */
  1305. #endif /* INCLUDE_RAMDRV */
  1306. #ifdef INCLUDE_CDROMFS
  1307.     cdromFsInit (CDROM_COM_BUF_SIZE);   /* initialize the cdromFs library */
  1308. #endif
  1309. #ifdef INCLUDE_MEMDRV
  1310.     memDrv (); /* initialize memory disk driver */
  1311. #endif /* INCLUDE_MEMDRV */
  1312. #ifdef INCLUDE_PTYDRV
  1313.     ptyDrv (); /* initialize pseudo-terminal driver */
  1314. #endif /* INCLUDE_PTYDRV */
  1315. #ifdef INCLUDE_VRFS
  1316.     vrfsInit();
  1317.     vrfsDevCreate();
  1318. #endif
  1319. #ifdef INCLUDE_ROMFS
  1320.     romfsImageLen = romfsImageEnd-romfsImage;
  1321.     if (romfsImageLen != 0) /* initialize ROMFS file system */
  1322. {
  1323. BLK_DEV *pBlkDev;
  1324. void *pVolDesc;
  1325. pBlkDev=(BLK_DEV *)romfsBlkDevCreate((char *)&romfsImage,
  1326.   romfsImageLen, 0);
  1327. if (pBlkDev == NULL)
  1328.     {
  1329.     printErr ("Error creating romfs block device!n");
  1330.     }
  1331. else
  1332.     {
  1333.     pVolDesc = (void *)romfsFsDevCreate ("/romfs", pBlkDev);
  1334.     }
  1335. }
  1336. #endif /* INCLUDE_ROMFS */
  1337.     /* Initialize PCCARD services */
  1338. #ifdef INCLUDE_PCCARD
  1339.     csInit (CS_PCCARD_STACK);
  1340. #ifdef INCLUDE_PCCARD_SHOW
  1341.     csShowInit ();
  1342. #endif /* INCLUDE_PCCARD_SHOW */
  1343. #endif /* INCLUDE_PCCARD */
  1344. #ifdef INCLUDE_SCSI
  1345.     /*
  1346.      * initialize either the SCSI1 or SCSI2 interface; initialize SCSI2 when
  1347.      * the SCSI2 interface is available.
  1348.      */
  1349. #ifndef INCLUDE_SCSI2
  1350.     scsi1IfInit ();
  1351. #else
  1352.     scsi2IfInit ();
  1353. #endif
  1354.     /* initialize SCSI controller */
  1355.     if (sysScsiInit () == OK)
  1356. {
  1357. usrScsiConfig (); /* configure SCSI peripherals */
  1358.         }
  1359.     else
  1360.         {
  1361. #ifdef INCLUDE_STDIO
  1362.         printf ("sysScsiInit() Failed, SCSI system not initializedn");
  1363. #endif  /* INCLUDE_STDIO */
  1364.         }
  1365. #endif /* INCLUDE_SCSI */
  1366. #ifdef  INCLUDE_FD     /* initialize floppy disk driver */
  1367.     if ((fdDrv (FD_INT_VEC, FD_INT_LVL)) == ERROR)
  1368.      {
  1369. #ifdef INCLUDE_STDIO
  1370. printf ("fdDrv returned ERROR from usrRoot.n");
  1371. #endif /* INCLUDE_STDIO */
  1372. }
  1373.     usrFdConfig (0, FD_0_TYPE, FD_DEV_NAME "0");
  1374.     usrFdConfig (1, FD_1_TYPE, FD_DEV_NAME "1");
  1375. #endif /* INCLUDE_FD */
  1376. #ifdef  INCLUDE_IDE
  1377.     /* init IDE disk driver */
  1378.     if ((ideDrv (IDE_INT_VEC, IDE_INT_LVL, IDE_CONFIG)) == ERROR)
  1379. {
  1380. #ifdef INCLUDE_STDIO
  1381. printf ("ideDrv returned ERROR from usrRoot.n");
  1382. #endif /* INCLUDE_STDIO */
  1383. }
  1384. #endif  /* INCLUDE_IDE */
  1385. #ifdef  INCLUDE_ATA
  1386.     {                                   /* initialize hard disk driver */
  1387.     IMPORT ATA_RESOURCE ataResources[];
  1388.     ATA_RESOURCE *pAtaResource;
  1389.     for (ix = 0; ix < ATA_MAX_CTRLS; ix++)
  1390.         {
  1391.         pAtaResource = &ataResources[ix];
  1392.         if (pAtaResource->ctrlType == IDE_LOCAL)
  1393.             if ((ataDrv (ix, pAtaResource->drives, pAtaResource->intVector,
  1394.    pAtaResource->intLevel, pAtaResource->configType,
  1395.                    pAtaResource->semTimeout, pAtaResource->wdgTimeout))
  1396. == ERROR)
  1397. {
  1398. #ifdef INCLUDE_STDIO
  1399. printf ("ataDrv returned ERROR from usrRoot.n");
  1400. #endif /* INCLUDE_STDIO */
  1401. }
  1402.         }
  1403.     }
  1404. #ifdef  INCLUDE_SHOW_ROUTINES
  1405.     ataShowInit ();                     /* install ATA/IDE show routine */
  1406. #endif  /* INCLUDE_SHOW_ROUTINES */
  1407. #endif  /* INCLUDE_ATA */
  1408. #ifdef INCLUDE_PCCARD
  1409.     csClientLoad (CS_ATA_ENABLER);
  1410. #endif /* INCLUDE_PCCARD */
  1411. #ifdef  INCLUDE_LPT
  1412.     {
  1413.     IMPORT LPT_RESOURCE lptResources[];
  1414.     lptDrv (LPT_CHANNELS, &lptResources[0]); /* init LPT parallel driver */
  1415.     }
  1416. #endif  /* INCLUDE_LPT */
  1417. #ifdef  INCLUDE_PCMCIA
  1418. #ifdef  INCLUDE_SHOW_ROUTINES
  1419.     pcmciaShowInit (); /* install PCMCIA show routines */
  1420. #endif  /* INCLUDE_SHOW_ROUTINES */
  1421.     pcmciaInit (); /* init PCMCIA Lib */
  1422. #endif  /* INCLUDE_PCMCIA */
  1423. #ifdef INCLUDE_TFFS
  1424.     tffsDrv (); /* it should be after pcmciaInit() */
  1425. #endif /* INCLUDE_TFFS */
  1426. #ifdef  INCLUDE_FLASH
  1427.     flashFsLibInit(); 
  1428. #endif  /* INCLUDE_FLASH */
  1429. #ifdef  INCLUDE_FORMATTED_IO
  1430.     fioLibInit (); /* initialize formatted I/O */
  1431. #endif  /* INCLUDE_FORMATTED_IO */
  1432.     /* initialize floating point facilities */
  1433. #ifdef INCLUDE_FLOATING_POINT
  1434.     floatInit (); /* initialize floating point I/O */
  1435. #endif /* INCLUDE_FLOATING_POINT */
  1436.     /* install software floating point emulation (if applicable) */
  1437. #ifdef INCLUDE_SW_FP
  1438.     mathSoftInit (); /* use software emulation for fp math */
  1439. #endif /* INCLUDE_SW_FP */
  1440. #if defined (_WRS_PAL_COPROC_LIB) && defined(INCLUDE_SHOW_ROUTINES)
  1441.     coprocShowInit();
  1442. #endif /* _WRS_PAL_COPROC_LIB && INCLUDE_SHOW_ROUTINES */
  1443. #if !defined (_WRS_PAL_COPROC_LIB)
  1444.     /* install hardware floating point support (if applicable) */
  1445. #ifdef INCLUDE_HW_FP
  1446.     mathHardInit ();  /* do fppInit() & install hw fp math */
  1447. #ifdef INCLUDE_SHOW_ROUTINES
  1448.     fppShowInit (); /* install hardware fp show routine */
  1449. #endif /* INCLUDE_SHOW_ROUTINES */
  1450. #endif /* INCLUDE_HW_FP */
  1451.     /* install dsp support (if applicable) */
  1452. #ifdef INCLUDE_DSP
  1453.     usrDspInit ();  /* do dspInit() */
  1454. #endif /* INCLUDE_DSP */
  1455.     /* initialize AltiVec library (if applicable) */
  1456. #ifdef INCLUDE_ALTIVEC
  1457.     usrAltivecInit ();
  1458. #endif /* INCLUDE_ALTIVEC */
  1459.     /* initialize Spe library (if applicable) */
  1460. #ifdef INCLUDE_SPE
  1461.     usrSpeInit ();
  1462. #endif /* INCLUDE_SPE */
  1463. #endif /* _WRS_PAL_COPROC_LIB */
  1464.    /* Initialize system calls */
  1465. #ifdef INCLUDE_RTP
  1466. #ifdef INCLUDE_SC_POSIX
  1467.     usrPosixScInit ();
  1468. #endif
  1469. #ifdef INCLUDE_MEM_RTP
  1470.     memRtpLibInit (RTP_HEAP_INIT_SIZE, MEM_PART_DEFAULT_OPTIONS);
  1471. #endif
  1472. #ifdef INCLUDE_SC_KERNEL
  1473.     windScInit ();
  1474. #endif
  1475. #ifdef INCLUDE_SC_MMAN
  1476.     mmanScLibInit ();
  1477. #endif
  1478. #ifdef INCLUDE_SHL
  1479.     shlScLibInit (); /* initialize SL syscalls */
  1480. #endif /* INCLUDE_SHL */
  1481. #ifdef INCLUDE_SC_IOS
  1482.     iosScLibInit ();
  1483. #endif
  1484. #ifdef  INCLUDE_SC_SYSCTL
  1485.     sysctlScLibInit();                          /* Syscall support for sysctl */
  1486. #endif /* INCLUDE_SC_SYSCTL */
  1487. #ifdef INCLUDE_SC_SD
  1488.     sdScInit();
  1489. #endif
  1490. #endif /* INCLUDE_RTP */
  1491.     /* initialize performance monitoring tools */
  1492. #ifdef INCLUDE_SPY
  1493.     spyLibInit (); /* install task cpu utilization tool */
  1494. #endif /* INCLUDE_SPY */
  1495. #ifdef INCLUDE_TIMEX
  1496.     timexInit (); /* install function timing tool */
  1497. #endif /* INCLUDE_TIMEX */
  1498. #ifdef  INCLUDE_ENV_VARS
  1499.     envLibInit (ENV_VAR_USE_HOOKS); /* initialize environment variable */
  1500. #endif /* INCLUDE_ENV_VARS */
  1501.     /* initialize object module loader and unloader */
  1502. #ifdef INCLUDE_LOADER
  1503.     moduleLibInit (); /* initialize module manager */
  1504.     loadLibInit (STORE_ABS_SYMBOLS);            /* Initialize loader */
  1505.     loadElfInit (); /* use elf format */
  1506. #endif /* INCLUDE_LOADER */
  1507. #ifdef INCLUDE_UNLOADER
  1508.     unldLibInit ();
  1509. #endif /* INCLUDE_UNLOADER */
  1510.     
  1511. /*
  1512.  * Initialize network if network support is included. If network support is not
  1513.  * included call usrNetworkCommonInit() which initializes common components
  1514.  * like sockets, sysctl if support for these has been included.
  1515.  */
  1516. #if  defined(INCLUDE_NETWORK) || defined(INCLUDE_NET_MICRO_STACK)
  1517. #ifdef  INCLUDE_NET_INIT
  1518. #ifdef INCLUDE_BOOT_LINE_INIT
  1519.     usrBootLineInit (sysStartType); /* crack the bootline */
  1520. #endif /* INCLUDE_BOOT_LINE_INIT */
  1521. # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP)
  1522.     logMsg ("before usrNetInit()n", 1,2,3,4,5,6);
  1523.     taskDelay (2); /* allow time for message to be displayed */
  1524. # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */
  1525.     usrNetInit (BOOT_LINE_ADRS); /* initialize network support */
  1526. # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP)
  1527.     logMsg ("after usrNetInit()n", 1,2,3,4,5,6);
  1528.     taskDelay (2); /* allow time for message to be displayed */
  1529. # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */
  1530. #endif /* INCLUDE_NET_INIT */
  1531. #else   /* INCLUDE_NETWORK */
  1532.     usrNetworkCommonInit ();
  1533. #endif  /* INCLUDE_NETWORK || INCLUDE_NET_MICRO_STACK */
  1534. #ifdef INCLUDE_PASSFS
  1535.     usrPassFsInit (PASSFS_CACHE);
  1536. #endif /* INCLUDE_PASSFS */
  1537. /* initialize USB components */
  1538. #ifdef INCLUDE_USB_INIT
  1539.     usbInit ();  /* USB Host Stack Initialization */
  1540. #endif
  1541. #ifdef INCLUDE_UHCI_INIT
  1542.     usrUsbHcdUhciAttach ();  /* UHCI Initialization */
  1543. #endif
  1544. #ifdef INCLUDE_OHCI_INIT
  1545.     usrUsbHcdOhciAttach ();  /* OHCI Initialization */
  1546. #endif
  1547. #ifdef INCLUDE_EHCI_INIT
  1548.     usrUsbHcdEhciAttach ();     /* EHCI Initialization */
  1549. #endif
  1550. #ifdef INCLUDE_USB_MOUSE_INIT
  1551.     usrUsbMseInit ();  /* Mouse Driver Initialization */
  1552. #endif
  1553. #ifdef INCLUDE_USB_KEYBOARD_INIT
  1554.     usrUsbKbdInit ();  /* Keyboard Driver Initialization */
  1555. #endif
  1556. #ifdef INCLUDE_USB_PRINTER_INIT
  1557.     usrUsbPrnInit ();  /* Printer Driver Initialization */
  1558. #endif
  1559. #ifdef INCLUDE_USB_SPEAKER_INIT
  1560.     usrUsbSpkrInit ();  /* Speaker Driver Initialization */
  1561. #endif
  1562. #ifdef INCLUDE_USB_AUDIO_DEMO
  1563.     usrUsbAudioDemo ();  /* USB Audio Demo */
  1564. #endif
  1565. #ifdef INCLUDE_USB_MS_BULKONLY_INIT
  1566.     usrUsbBulkDevInit();  /* Bulk Driver Initialization */
  1567. #endif
  1568. #ifdef INCLUDE_USB_MS_CBI_INIT
  1569.     usrUsbCbiUfiDevInit ();  /* CBI Driver Initialization */
  1570. #endif
  1571. #ifdef INCLUDE_USB_PEGASUS_END_INIT
  1572.     usrUsbPegasusEndInit ();    /* Pegasus Driver Initialization */
  1573. #endif
  1574. #ifdef INCLUDE_PHILIPS1582
  1575.     /* The following is to workaround the PCI interrupt issue with ISP1582 */
  1576.     sysIsp1582PciDisconnect ();
  1577. #endif
  1578. #ifdef INCLUDE_MS_EMULATOR_INIT
  1579.     /* Peripheral Mass Storage driver initialization */
  1580.     usbTargMsInit();
  1581. #endif
  1582. #ifdef INCLUDE_KBD_EMULATOR_INIT
  1583.     usrUsbTargKbdInit ();        /* Peripheral Keyboard driver initialization */
  1584. #endif
  1585. #ifdef INCLUDE_PRN_EMULATOR_INIT
  1586.     usrUsbTargPrnInit ();        /* Peripheral Printer driver initialization */
  1587. #endif
  1588. #ifdef INCLUDE_DOS_DISK
  1589.     usrDosDiskInit ();
  1590. #endif /* INCLUDE_DOS_DISK */
  1591. #ifdef INCLUDE_VIRTUAL_DISK
  1592.     virtualDiskInit ();
  1593. #endif /* INCLUDE_VIRTUAL_DISK */
  1594.     /* initialize shared memory objects */
  1595. #ifdef INCLUDE_SM_OBJ /* unbundled shared memory objects */
  1596.     usrSmObjInit (BOOT_LINE_ADRS);
  1597. #endif /* INCLUDE_SM_OBJ */
  1598.     /* 
  1599.      * write protect vector table only after shared memory has been 
  1600.      * initialized. The anchor may shares a page with it.
  1601.      */
  1602. #if defined(INCLUDE_MMU_BASIC)
  1603. #ifdef INCLUDE_PROTECT_VEC_TABLE
  1604.     intVecTableWriteProtect ();
  1605. #endif /* INCLUDE_PROTECT_VEC_TABLE */
  1606. #endif /* INCLUDE_MMU_BASIC */
  1607.     /* install select hook only after NFS/RPC for proper delete hook order */
  1608. #ifdef INCLUDE_SELECT
  1609.     selTaskDeleteHookAdd ();
  1610. #endif /* INCLUDE_SELECT */
  1611.     /* create system and status symbol tables */
  1612. #if defined(INCLUDE_SYM_TBL_INIT)
  1613. # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP)
  1614.     logMsg ("before symTblCreate()n", 1,2,3,4,5,6);
  1615.     taskDelay (2); /* allow time for message to be displayed */
  1616. # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */
  1617.     usrSysSymTblInit ();
  1618. # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP)
  1619.     logMsg ("sysSymTbl initialization complete.n", 1,2,3,4,5,6);
  1620.     taskDelay (2); /* allow time for message to be displayed */
  1621. # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */
  1622. #endif /* INCLUDE_SYM_TBL_INIT */
  1623. #ifdef  INCLUDE_STANDALONE_SYM_TBL
  1624.     usrStandaloneInit ();
  1625. #elif (defined(INCLUDE_NET_SYM_TBL) || defined(INCLUDE_PASSFS_SYM_TBL))
  1626.     usrLoadSyms ();
  1627. #endif /* INCLUDE_NET_SYM_TBL || INCLUDE_PASSFS_SYM_TBL */
  1628. #ifdef  INCLUDE_STAT_SYM_TBL
  1629.     usrStatTblInit ();
  1630. #endif /* INCLUDE_STAT_SYM_TBL */
  1631.     /* initialize C++ support library */
  1632. #if defined (INCLUDE_CPLUS) && defined (INCLUDE_CPLUS_MIN)
  1633. #error Define only one of INCLUDE_CPLUS or INCLUDE_CPLUS_MIN, not both
  1634. #endif
  1635. #if defined (INCLUDE_CPLUS) || defined (INCLUDE_CPLUS_MIN)
  1636. #ifndef INCLUDE_CTORS_DTORS
  1637. #define INCLUDE_CTORS_DTORS
  1638. #endif
  1639. #endif
  1640. #ifdef  INCLUDE_CTORS_DTORS 
  1641.   /* 
  1642.    * call compiler generated init functions (usually - but not necessarily -
  1643.    * C++ related)
  1644.    */
  1645.    cplusCtorsLink ();
  1646. #endif
  1647. #ifdef INCLUDE_CPLUS /* all standard C++ runtime support */
  1648.     cplusLibInit ();
  1649. #endif
  1650. #ifdef INCLUDE_CPLUS_MIN /* minimal C++ runtime support */
  1651.     cplusLibMinInit ();
  1652. #endif
  1653. #ifdef INCLUDE_CPLUS_DEMANGLER
  1654.     cplusDemanglerInit ();
  1655. #endif
  1656.     /* initialize COM/DCOM runtime support */
  1657. #ifdef INCLUDE_COM
  1658.     comLibInit ();
  1659. #endif
  1660. #ifdef INCLUDE_DCOM
  1661.     dcomLibInit ();
  1662. #endif
  1663.     /* initialize Wind Web Server */
  1664. #ifdef INCLUDE_HTTP
  1665.     httpd ();
  1666. #endif /* INCLUDE_HTTP */
  1667. #ifdef INCLUDE_WINDVIEW
  1668. #ifdef INCLUDE_WVUPLOAD_SOCK
  1669.     wvSockUploadPathLibInit ();
  1670. #endif /* INCLUDE_WVUPLOAD_SOCK */
  1671.     
  1672. #ifdef INCLUDE_WVUPLOAD_FILE
  1673.     wvFileUploadPathLibInit ();
  1674. #endif /* INCLUDE_WVUPLOAD_FILE */
  1675. #ifdef INCLUDE_WVUPLOAD_TSFSSOCK
  1676.     wvTsfsUploadPathLibInit ();
  1677. #endif /* INCLUDE_WVUPLOAD_TSFSSOCK */
  1678.     windviewConfig ();
  1679. #ifdef   INCLUDE_RBUFF                  /* install rBuff support */
  1680.     rBuffLibInit();
  1681. #ifdef  INCLUDE_SHOW_ROUTINES
  1682.     rBuffShowInit ();                   /* install rBuff show routine */
  1683. #endif  /* INCLUDE_SHOW_ROUTINES */
  1684. #endif /* INCLUDE_RBUFF */
  1685. #ifdef INCLUDE_WVNETD
  1686.     wvNetDInit();
  1687. #endif /* INCLUDE_WVNETD */
  1688. #if defined (WV_INSTRUMENTATION) && defined (INCLUDE_WVTIPC)
  1689.     wvTipcInit();
  1690. #endif /* INCLUDE_WVTIPC */
  1691. /* If WindView included, must have a timestamp of some sort */
  1692. #if defined (INCLUDE_SYS_TIMESTAMP) || defined (INCLUDE_POSIX_TRACE)
  1693.     wvTmrRegister ((UINTFUNCPTR) sysTimestamp,
  1694.                    (UINTFUNCPTR) sysTimestampLock,
  1695.                    (FUNCPTR)     sysTimestampEnable,
  1696.                    (FUNCPTR)     sysTimestampDisable,
  1697.                    (FUNCPTR)     sysTimestampConnect,
  1698.                    (UINTFUNCPTR) sysTimestampPeriod,
  1699.                    (UINTFUNCPTR) sysTimestampFreq);
  1700. #else /* INCLUDE_SYS_TIMESTAMP */
  1701.     wvTmrRegister ((UINTFUNCPTR) seqStamp,
  1702.                    (UINTFUNCPTR) seqStampLock,
  1703.                    (FUNCPTR)     seqEnable,
  1704.                    (FUNCPTR)     seqDisable,
  1705.                    (FUNCPTR)     seqConnect,
  1706.                    (UINTFUNCPTR) seqPeriod,
  1707.                    (UINTFUNCPTR) seqFreq);
  1708. #endif /* INCLUDE_SYS_TIMESTAMP */
  1709. #endif /* INCLUDE_WINDVIEW */
  1710. #ifdef INCLUDE_POSIX_TRACE
  1711.     traceTmrRegister ((UINTFUNCPTR) sysTimestamp,
  1712.                       (FUNCPTR)sysTimestampEnable,
  1713.                       (FUNCPTR)sysTimestampDisable,
  1714.                       (FUNCPTR)sysTimestampConnect,
  1715.                       (UINTFUNCPTR)sysTimestampPeriod,
  1716.                       (UINTFUNCPTR)sysTimestampFreq);
  1717.     pxTraceStreamLibInit ();
  1718. #endif /* INCLUDE_POSIX_TRACE */
  1719.     /* Include Sysctl command line support */
  1720. #ifdef INCLUDE_SYSCTL_CLI
  1721.     sysctlLibInit();                               /* Command line SYSCTL */
  1722. #endif /* INCLUDE_SYSCTL_CLI */ 
  1723.     /* initialize the WDB debug agent */
  1724. #if defined (INCLUDE_WDB) && (WDB_INIT == WDB_POST_KERNEL_INIT)
  1725. # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP)
  1726.     logMsg ("before usrWdbInit()n", 1,2,3,4,5,6);
  1727.     taskDelay (2); /* allow time for message to be displayed */
  1728. # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */
  1729.     usrWdbInit();
  1730. # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP)
  1731.     logMsg ("after usrWdbInit()n", 1,2,3,4,5,6);
  1732.     taskDelay (2); /* allow time for message to be displayed */
  1733. # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */
  1734. #ifdef INCLUDE_WDB_BANNER
  1735. #ifndef INCLUDE_SHELL
  1736.     usrWdbBanner ();
  1737. #endif /* INCLUDE_SHELL */
  1738. #endif /* INCLUDE_WDB_BANNER */
  1739. #endif  /* defined (INCLUDE_WDB) && (WDB_INIT == WDB_POST_KERNEL_INIT) */
  1740.     /* initialize interactive shell */
  1741. #ifdef  INCLUDE_SHELL
  1742. #ifdef INCLUDE_SECURITY /* include shell security */
  1743.     /* initialize login table */
  1744.     loginInit ();
  1745.     /* add additional users here as required */
  1746. #if defined(LOGIN_USER_NAME) && defined(LOGIN_PASSWORD)
  1747.     loginUserAdd (LOGIN_USER_NAME, LOGIN_PASSWORD);
  1748. #endif
  1749.     if ((sysFlags & SYSFLG_NO_SECURITY) == 0)
  1750. {
  1751.         /* install security program */
  1752.         shellLoginInstall (loginPrompt2, 0);
  1753. }
  1754. #endif /* INCLUDE_SECURITY */
  1755. #if 0
  1756.     printLogo (); /* print out the banner page */
  1757. #endif
  1758.     printf (" CPU: %s.  Processor #%d.n", sysModel (), sysProcNumGet ());
  1759.     printf (" Memory Size: 0x%x.",
  1760. #ifdef HITACHI_SH_KERNEL_ON_SDRAM
  1761.      (UINT)(sysMemTop () - (char *)FREE_RAM_ADRS));
  1762. #else /* HITACHI_SH_KERNEL_ON_SDRAM */
  1763.      (UINT)(sysMemTop () - (char *)LOCAL_MEM_LOCAL_ADRS));
  1764. #endif /* HITACHI_SH_KERNEL_ON_SDRAM */
  1765.     printf ("  BSP version " BSP_VERSION BSP_REV ".n");
  1766.     printf (" Created: %sn", creationDate);
  1767.     printf (" ED&R Policy Mode: %sn",
  1768. #ifdef INCLUDE_EDR_SYSDBG_FLAG
  1769.     edrIsDebugMode() ? "lab" : "deployed");
  1770. #else
  1771.     "Permanently Deployed");
  1772. #endif
  1773. #if defined(INCLUDE_WDB) && defined(INCLUDE_WDB_BANNER)
  1774.     printf (" WDB Comm Type: %sn", WDB_COMM_TYPE_STR);
  1775.     printf (" WDB: %s.n",
  1776.     ((wdbRunsExternal () || wdbRunsTasking ()) ?
  1777.  "Ready" : "Agent configuration failed") );
  1778. #endif /*INCLUDE_WDB && INCLUDE_WDB_BANNER*/
  1779. #if (!defined(INCLUDE_SHELL_EMACS_MODE) && !defined(INCLUDE_SHELL_VI_MODE)) || defined (INCLUDE_SHELL_VI_MODE)
  1780.     /*
  1781.      * Editing mode similar to the vi editing mode - this will be the
  1782.      * default mode
  1783.      */
  1784.     ledModeRegister (viLedLibInit);
  1785. #endif
  1786. #ifdef INCLUDE_SHELL_EMACS_MODE
  1787.     /* Editing mode similar to the emacs editing mode */
  1788.     ledModeRegister (emacsLedLibInit);
  1789. #endif
  1790. #if (!defined(INCLUDE_SHELL_INTERP_CMD) && !defined(INCLUDE_SHELL_INTERP_C)) || defined (INCLUDE_SHELL_INTERP_C)
  1791.     /* The C interpreter for the target-resident shell */
  1792.     shellInterpRegister (shellInterpCInit);
  1793. #endif
  1794. #ifdef INCLUDE_SHELL_INTERP_CMD
  1795.     /* The command interpreter for the target-resident shell */
  1796.     shellInterpRegister (shellInterpCmdInit);
  1797. #ifdef INCLUDE_DISK_UTIL
  1798.     /* Add the shell commands for the file system support */
  1799.     usrFsShellCmdInit ();
  1800. #endif
  1801. #if defined (INCLUDE_VM_SHOW) || 
  1802.     defined (INCLUDE_SHOW_ROUTINES) && defined (INCLUDE_MMU_BASIC)
  1803.     vmShowShellCmdInit (); /* initialize shell commands for vmShow */
  1804. #endif
  1805. #ifdef INCLUDE_RTP
  1806. #ifdef INCLUDE_DEBUG
  1807.     dbgRtpInit (); /* initialize process debugging */
  1808. #endif /* INCLUDE_DEBUG */
  1809.     /* Add the shell commands for the RTP */ 
  1810.     
  1811.     rtpShellCmdInit (); /* initialize shell commands for RTPs */
  1812. #ifdef INCLUDE_SHOW_ROUTINES
  1813.     {
  1814.     extern STATUS rtpShowShellCmdInit(void);
  1815.     rtpShowShellCmdInit(); /* initialize shell commands for RTP info */
  1816.     }
  1817. #endif /* INCLUDE_RTP_SHOW */
  1818. #ifdef INCLUDE_SHL
  1819.     shlShellCmdInit (); /* initialize shell commands for SHLs */
  1820. #endif /* INCLUDE_SHL */
  1821. #if defined (INCLUDE_SHARED_DATA_SHOW) || 
  1822.     defined (INCLUDE_SHARED_DATA) && defined (INCLUDE_SHOW_ROUTINES)
  1823.     sdShowShellCmdInit (); /* initialize shell commands for SDs */
  1824. #endif /* INCLUDE_SHARED_DATA_SHOW */
  1825. #if defined (INCLUDE_ADR_SPACE_SHOW) || defined (INCLUDE_SHOW_ROUTINES)
  1826.     adrSpaceShellCmdInit(); /* initialize shell commands for adrSpaceShow */
  1827. #endif /* INCLUDE_ADR_SPACE_SHOW */
  1828. #if defined (INCLUDE_MAPPED_FILES_SHOW)
  1829.     mmanShowShellCmdInit(); /* initialize shell commands for mmanShow */
  1830. #endif /* INCLUDE_MAPPED_FILES_SHOW */
  1831. #endif /* INCLUDE_RTP */
  1832. #ifdef INCLUDE_EDR_SHOW
  1833.     /* Add the shell commands for the EDR */
  1834.     edrShellCmdInit ();
  1835. #endif
  1836. #ifdef INCLUDE_MEM_EDR_SHOW
  1837.     memEdrShellCmdInit(); /* initialize shell commands for memEdrLib */
  1838. #endif
  1839. #ifdef INCLUDE_MEM_EDR_RTP_SHOW
  1840.     memEdrRtpShellCmdInit(); /* initialize shell commands for memEdrLib */
  1841. #endif
  1842. #ifdef INCLUDE_LOADER
  1843.     /* Add the shell commands for the loader */
  1844.     moduleShellCmdInit ();
  1845. #endif
  1846. #ifdef INCLUDE_UNLOADER
  1847.     /* Add the shell commands for the unloader */
  1848.     unloadShellCmdInit ();
  1849. #endif
  1850. #ifdef INCLUDE_DEBUG
  1851.     /* Add the shell commands for the debug */
  1852.     dbgShellCmdInit ();
  1853. #endif
  1854. #ifdef INCLUDE_SYM_TBL
  1855.     /* Add the shell commands for the symbols */
  1856.     symShellCmdInit ();
  1857. #endif
  1858.     /* Add the shell commands for the tasks */
  1859.     taskShellCmdInit ();
  1860. #endif /* INCLUDE_SHELL_INTERP_CMD */
  1861. #ifdef INCLUDE_RTP
  1862.     usrRtpLibInit ();
  1863. #endif
  1864. #ifdef INCLUDE_STARTUP_SCRIPT /* run a startup script */
  1865.     usrStartupScript (startupScriptFieldSplit (sysBootParams.startupScript));
  1866. #endif /* INCLUDE_STARTUP_SCRIPT */
  1867.     usrShell ();
  1868.     /* only include the simple demo if the shell is NOT included */
  1869. #else
  1870. #if defined(INCLUDE_DEMO) /* create demo w/o shell */
  1871.     taskSpawn ("demo", 20, 0, 2000, (FUNCPTR)usrDemo, 0,0,0,0,0,0,0,0,0,0);
  1872. #endif /* mips cpp no elif */
  1873. #endif /* INCLUDE_SHELL */
  1874. #ifdef INCLUDE_WDB_PROXY
  1875.     wrProxyLibInit (WDB_PROXY_PORT, WDB_PROXY_TASK_PRIORITY,
  1876.      WDB_PROXY_TASK_STACK_SIZE, WDB_PROXY_TASK_OPTIONS);
  1877. #ifdef INCLUDE_WDB_PROXY_UDP
  1878.     wrProxyUdpSockRegister ();
  1879. #endif /* INCLUDE_WDB_PROXY_UDP */
  1880. #ifdef INCLUDE_WDB_PROXY_TIPC
  1881.     wrProxyTipcSockRegister ();
  1882. #endif /* INCLUDE_WDB_PROXY_TIPC */
  1883. #endif /* INCLUDE_WDB_PROXY */
  1884. #ifdef  INCLUDE_WINDML
  1885.     usrWindMlInit ();
  1886. #endif  /* INCLUDE_WINDML */
  1887. #if defined (INCLUDE_SOUND) && defined(INCLUDE_SB16)
  1888.     sb16Drv ();            /* install sound driver SB16 */
  1889.     sb16DevCreate ("/sound", 0x220, 5, 1, 5);
  1890. #endif /* INCLUDE_SOUND && INCLUDE_SB16 */
  1891. #if defined(INCLUDE_JAVA)
  1892.     javaConfig ();
  1893. #endif /* INCLUDE_JAVA */
  1894. #ifdef INCLUDE_HTML
  1895.     usrHtmlInit ();
  1896. #endif /* INCLUDE_HTML */
  1897. #ifdef INCLUDE_POWER_MGMT_CPU_BSP_SUPPORT
  1898.     /* turn on power management */
  1899.     
  1900.     sysOneShotInit ();
  1901.     sysCpuPwrEnable ();
  1902. #endif
  1903. #ifdef INCLUDE_SNS
  1904. # undef INCLUDE_SNS_RTP
  1905. # undef INCLUDE_SNS_MP
  1906. # undef INCLUDE_SNS_MP_RTP
  1907.     salSnsTaskInit ();
  1908. #endif
  1909. #ifdef INCLUDE_SNS_RTP
  1910. # undef INCLUDE_SNS_MP
  1911. # undef INCLUDE_SNS_MP_RTP
  1912.     salSnsRtpInit ();
  1913. #endif
  1914. #ifdef INCLUDE_SNS_MP
  1915. # undef INCLUDE_SNS_MP_RTP
  1916.     salSnsTaskInit ();
  1917. #endif
  1918. #ifdef INCLUDE_SNS_MP_RTP
  1919.     salSnsRtpInit ();
  1920. #endif
  1921.     /* USER_APPL is the second last initialization step */
  1922. #ifdef INCLUDE_USER_APPL
  1923.     /* Startup the user's application */
  1924.     USER_APPL_INIT; /* must be a valid C statement or block */
  1925. #endif
  1926.     /* The RTP Startup Facility is always the last one to initialize */
  1927. #ifdef INCLUDE_RTP
  1928. #ifdef INCLUDE_RTP_APPL_USER
  1929.     usrRtpAppInit ();
  1930. #endif /* INCLUDE_RTP_APPL_USER */
  1931. #ifdef INCLUDE_RTP_APPL_INIT_STRING
  1932.     usrRtpAppInitString ();
  1933. #endif /* INCLUDE_RTP_APPL_INIT_STRING */
  1934. #ifdef INCLUDE_RTP_APPL_INIT_BOOTLINE
  1935.     usrRtpAppInitBootline ();
  1936. #endif /* INCLUDE_RTP_APPL_INIT_BOOTLINE */
  1937. #ifdef INCLUDE_RTP_APPL_INIT_CMD_SHELL_SCRIPT
  1938. #ifndef RTP_APPL_CMD_SCRIPT_FILE
  1939. #define RTP_APPL_CMD_SCRIPT_FILE NULL
  1940. #endif
  1941.     usrRtpAppInitCmdShellScriptRun (RTP_APPL_CMD_SCRIPT_FILE);
  1942. #endif /* INCLUDE_RTP_APPL_INIT_CMD_SHELL_SCRIPT */
  1943. #endif /* INCLUDE_RTP */
  1944. #ifdef INCLUDE_MMU_OPTIMIZE
  1945.     usrMmuOptimize();
  1946. #endif /* INCLUDE_MMU_OPTIMIZE */
  1947.     }
  1948. /*******************************************************************************
  1949. *
  1950. * usrClock - user-defined system clock interrupt routine
  1951. *
  1952. * This routine is called at interrupt level on each clock interrupt.
  1953. * It is installed by usrRoot() with a sysClkConnect() call.
  1954. * It calls all the other packages that need to know about clock ticks,
  1955. * including the kernel itself.
  1956. *
  1957. * If the application needs anything to happen at the system clock interrupt
  1958. * level, it can be added to this routine.
  1959. *
  1960. * RETURNS: N/A
  1961. */
  1962. void usrClock ()
  1963.     {
  1964.     tickAnnounce (); /* announce system tick to kernel */
  1965.     }
  1966. #ifdef INCLUDE_DEMO
  1967. /********************************************************************************
  1968. * usrDemo - example application without shell
  1969. *
  1970. * This routine is spawned as a task at the end of usrRoot(), if INCLUDE_DEMO
  1971. * is defined, and INCLUDE_SHELL is NOT defined in configAll.h or config.h.
  1972. * It is intended to indicate how a shell-less application can be linked,
  1973. * loaded, and ROMed.
  1974. *
  1975. * NOMANUAL
  1976. */
  1977. void usrDemo (void)
  1978.     {
  1979.     char string [40];
  1980.     printf ("VxWorks (for %s) version %s.n", sysModel (), vxWorksVersion);
  1981.     printf ("Kernel: %s.n", kernelVersion ());
  1982.     printf ("Made on %s.n", creationDate);
  1983.     FOREVER
  1984.         {
  1985.         printf ("nThis is a test.  Type something: ");
  1986.         fioRdString (STD_IN, string, sizeof (string));
  1987. printf ("nYou typed "%s".n", string);
  1988. if (strcmp (string, "0") == 0)
  1989.     memShow (0);
  1990. if (strcmp (string, "1") == 0)
  1991.     memShow (1);
  1992.         }
  1993.     }
  1994. #endif /* INCLUDE_DEMO */