void usrIosExtraInit (void) { excShowInit (); /* exception show routines */ jobLibInit (JOB_TASK_STACK_SIZE); /* miscellaneous support task */ excInit (MAX_ISR_JOBS); /* interrupt-level job facility */ logInit (consoleFd, MAX_LOG_MSGS); /* message logging */ nbioLogInit (consoleFd, INIT_NBIO_MSGS); /* non-blocking message logging */ pipeDrv (); /* pipes */ aioPxLibInit (MAX_LIO_CALLS); /* POSIX asynchronous IO */ aioSysInit (MAX_AIO_SYS_TASKS, AIO_TASK_PRIORITY, AIO_TASK_STACK_SIZE); /* provides AIO functionality to non-AIO drivers */ stdioInit (); /* buffered IO library */ fioLibInit (); /* formatting for printf, scanf, etc. */ floatInit (); /* allow printf and others to format floats correctly */ erfLibInit (ERF_MAX_USR_CATEGORIES, ERF_MAX_USR_TYPES); /* Event Reporting Framework */ devInit (DEVICE_MANAGER_MAX_NUM_DEVICES); /* Device Manager */ xbdInit (); /* Extended Block Device */ fsMonitorInit (); /* File System Monitor */ fsEventUtilLibInit (); /* File System Event Utilities */ rawFsInit (NUM_RAWFS_FILES); /* Raw block device file system interface */ ptyDrv (); /* Allows communication between processes */ usrRomfsConfig (); /* Read-only memory based file system */ xbdRamDiskDevCreate (RAM_DISK_BLK_SIZE, RAM_DISK_SIZE, FALSE, RAM_DISK_DEV_NAME); /* Create an XBD based RAM disk */ usrBootLineParse (BOOT_LINE_ADRS); /* parse some boot device configuration info */ usrPassFsInit (PASSFS_CACHE); /* direct access to host filesystem */ virtualDiskInit (); /* VxSim virtual disk to emulate a VxWorks disk driver. */ }
int my_usrRoot(char* pMemPoolStart, unsigned int memPoolSize) { eventLibInit(); semBLibInit(); semMLibInit(); semCLibInit(); semQLibInit(); wdLibInit(); taskHookInit(); memInit(pMemPoolStart, memPoolSize); memPartLibInit(pMemPoolStart, memPoolSize); if (proc_sysMmuLibInit == 0) goto usrRoot_failed; int (*_sysMmuLibInit)() = (void*) proc_sysMmuLibInit; if (_sysMmuLibInit(0x1000) != 0) goto usrRoot_failed; if (vmMpuLibInit(0x1000) != 0) goto usrRoot_failed; if (vmBaseGlobalMapInit(&MemDescArray, MemDescArrayCount, 1) == 0) goto usrRoot_failed; sysClockConnect(usrClock, 0); sysClockRateSet(60); sysClockEnable(); selectInit(50); usrBootLineParse(0x1000); iosInit(20, 50, "/null"); ttyDrv(); usrSerialInit(); hashLibInit(); envLibInit(1); sigInit(); excInit(); logInit(fdConsole, 50); stdioInit(); fioLibInit(); selTaskDeleteHookAdd(); sub_FFB5F728(); my_taskcreate_Startup(); return 0; usrRoot_failed: printExc("usrRoot: MMU configuration failed, errno = %#x", *(long*) (GetErrorNumAddr()), 0, 0, 0, 0); reboot(1); return 0; }
void usrRoot ( char * pMemPoolStart, /* start of system memory partition */ unsigned memPoolSize /* initial size of mem pool */ ) { char tyName [20]; int ix; /* Initialize the memory pool before initializing any other package. * The memory associated with the root task will be reclaimed at the * completion of its activities. */ #ifdef INCLUDE_MEM_MGR_FULL memInit (pMemPoolStart, memPoolSize); /* initialize memory pool */ #else memPartLibInit (pMemPoolStart, memPoolSize);/* initialize memory pool */ #endif /* INCLUDE_MEM_MGR_FULL */ #ifdef INCLUDE_SHOW_ROUTINES memShowInit (); /* initialize memShow routine */ #endif /* INCLUDE_SHOW_ROUTINES */ #if defined(INCLUDE_MMU_BASIC) || defined(INCLUDE_MMU_FULL) || \ defined(INCLUDE_MMU_MPU) usrMmuInit (); /* initialize the mmu */ #endif /* defined(INCLUDE_MMU_BASIC, INCLUDE_MMU_FULL, INCLUDE_MMU_MPU) */ /* set up system timer */ sysClkConnect ((FUNCPTR) usrClock, 0); /* connect clock ISR */ sysClkRateSet (SYS_CLK_RATE); /* set system clock rate */ sysClkEnable (); /* start it */ #ifdef INCLUDE_FAST_DRAM /* * make use of data cache as fast DRAM, * establish parameters in config.h, MMU * must be initialed before data cache is * initialized as data ram... */ cacheCreateInternalDataRAM((UINT32 *)FD_ORIGIN, FD_NUMLINES); #endif /* * The select library needs to be initialized before the tyLib module * since the _func_selWakeupListInit FUNCPTR is required (SPR #3314). * The installation of the select task delete hooks is performed * later in usrRoot() after NFS and RPC have been initialized. */ #ifdef INCLUDE_SELECT selectInit (NUM_FILES); #endif /* INCLUDE_SELECT */ /* initialize I/O system */ #ifdef INCLUDE_IO_SYSTEM iosInit (NUM_DRIVERS, NUM_FILES, "/null"); consoleFd = NONE; /* assume no console device */ #ifdef INCLUDE_TYCODRV_5_2 #ifdef INCLUDE_TTY_DEV if (NUM_TTY > 0) { tyCoDrv (); /* install console driver */ for (ix = 0; ix < NUM_TTY; ix++) /* create serial devices */ { sprintf (tyName, "%s%d", "/tyCo/", ix); (void) tyCoDevCreate (tyName, ix, 512, 512); if (ix == CONSOLE_TTY) strcpy (consoleName, tyName); /* store console name */ } consoleFd = open (consoleName, O_RDWR, 0); /* set baud rate */ (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE); (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL); } #endif /* INCLUDE_TTY_DEV */ #else /* !INCLUDE_TYCODRV_5_2 */ #ifdef INCLUDE_TTY_DEV if (NUM_TTY > 0) { ttyDrv(); /* install console driver */ for (ix = 0; ix < NUM_TTY; ix++) /* create serial devices */ { #if (defined(INCLUDE_WDB) && (WDB_COMM_TYPE == WDB_COMM_SERIAL)) if (ix == WDB_TTY_CHANNEL) /* don't use WDBs channel */ continue; #endif sprintf (tyName, "%s%d", "/tyCo/", ix); (void) ttyDevCreate (tyName, sysSerialChanGet(ix), 512, 512); if (ix == CONSOLE_TTY) /* init the tty console */ { strcpy (consoleName, tyName); consoleFd = open (consoleName, O_RDWR, 0); (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE); (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL); } } } #endif /* INCLUDE_TTY_DEV */ #ifdef INCLUDE_PC_CONSOLE pcConDrv (); for (ix = 0; ix < N_VIRTUAL_CONSOLES; ix++) { sprintf (tyName, "%s%d", "/pcConsole/", ix); (void) pcConDevCreate (tyName,ix, 512, 512); if (ix == PC_CONSOLE) /* init the console device */ { strcpy (consoleName, tyName); consoleFd = open (consoleName, O_RDWR, 0); (void) ioctl (consoleFd, FIOBAUDRATE, CONSOLE_BAUD_RATE); (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL); } } #endif /* INCLUDE_PC_CONSOLE */ #endif /* !INCLUDE_TYCODRV_5_2 */ ioGlobalStdSet (STD_IN, consoleFd); ioGlobalStdSet (STD_OUT, consoleFd); ioGlobalStdSet (STD_ERR, consoleFd); #endif /* INCLUDE_IO_SYSTEM */ /* initialize symbol table facilities */ #ifdef INCLUDE_SYM_TBL hashLibInit (); /* initialize hash table package */ symLibInit (); /* initialize symbol table package */ #ifdef INCLUDE_SHOW_ROUTINES symShowInit (); /* initialize symbol table show */ #endif /* INCLUDE_SHOW_ROUTINES */ #endif /* INCLUDE_SYM_TBL */ /* initialize exception handling */ #if defined(INCLUDE_EXC_HANDLING) && defined(INCLUDE_EXC_TASK) #ifdef INCLUDE_EXC_SHOW excShowInit (); #endif excInit (); /* initialize exception handling */ #endif /* defined(INCLUDE_EXC_HANDLING) && defined(INCLUDE_EXC_TASK) */ #ifdef INCLUDE_LSTLIB lstLibInit (); #endif #ifdef INCLUDE_LOGGING logInit (consoleFd, MAX_LOG_MSGS); /* initialize logging */ # ifdef INCLUDE_LOG_STARTUP logMsg ("logging started to %s [%d], queue size %d\n", consoleName, consoleFd, MAX_LOG_MSGS, 4,5,6); taskDelay (2); /* allow time for message to be displayed */ # endif /* INCLUDE_LOG_STARTUP */ #endif /* INCLUDE_LOGGING */ #ifdef INCLUDE_SIGNALS sigInit (); /* initialize signals */ #endif /* INCLUDE_SIGNALS */ /* initialize debugging */ #ifdef INCLUDE_DEBUG dbgInit (); /* initialize debugging */ #endif /* INCLUDE_DEBUG */ /* initialize pipe driver */ #ifdef INCLUDE_PIPES pipeDrv (); /* install pipe driver */ #endif /* INCLUDE_PIPES */ /* initialize standard I/O package */ #ifdef INCLUDE_STDIO stdioInit (); /* initialize standard I/O library */ #ifdef INCLUDE_SHOW_ROUTINES stdioShowInit (); #endif /* INCLUDE_SHOW_ROUTINES */ #endif /* INCLUDE_STDIO */ /* initialize POSIX queued signals */ #if defined(INCLUDE_POSIX_SIGNALS) && defined(INCLUDE_SIGNALS) sigqueueInit (NUM_SIGNAL_QUEUES); /* initialize queued signals */ #endif /* initialize POSIX semaphores */ #ifdef INCLUDE_POSIX_SEM semPxLibInit (); #ifdef INCLUDE_SHOW_ROUTINES semPxShowInit (); #endif /* INCLUDE_SHOW_POUTINES */ #endif /* INCLUDE_POSIX_SEM */ /* initialize POSIX threads */ #ifdef INCLUDE_POSIX_PTHREADS pthreadLibInit (); #endif /* INCLUDE_POSIX_PTHREADS */ /* initialize POSIX message queues */ #ifdef INCLUDE_POSIX_MQ mqPxLibInit (MQ_HASH_SIZE); #ifdef INCLUDE_SHOW_ROUTINES mqPxShowInit (); #endif /* INCLUDE_SHOW_ROUTINES */ #endif /* INCLUDE_POSIX_MQ */ /* initialize POSIX async I/O support */ #ifdef INCLUDE_POSIX_AIO aioPxLibInit (MAX_LIO_CALLS); #ifdef INCLUDE_POSIX_AIO_SYSDRV aioSysInit (MAX_AIO_SYS_TASKS, AIO_TASK_PRIORITY, AIO_TASK_STACK_SIZE); #endif /* INCLUDE_POSIX_AIO_SYSDRV */ #endif /* INCLUDE_POSIX_AIO */ #ifdef INCLUDE_CBIO /* init main CBIO module, cbioLib() */ cbioLibInit(); #endif INCLUDE_CBIO /* initialize filesystems and disk drivers */ #ifdef INCLUDE_DOSFS_MAIN /* dosFs2 file system initialization */ hashLibInit (); /* initialize hash table package */ /* First initialize the main dosFs module */ dosFsLibInit( 0 ); /* Initialize sub-modules */ /* ensure that at least one directory handler is defined */ # if ((!defined INCLUDE_DOSFS_DIR_VFAT) && \ (!defined INCLUDE_DOSFS_DIR_FIXED)) # define INCLUDE_DOSFS_DIR_VFAT # endif /* init VFAT (MS long file names) module */ # ifdef INCLUDE_DOSFS_DIR_VFAT /* Sub-module: VFAT Directory Handler */ dosVDirLibInit(); # endif /* INCLUDE_DOSFS_DIR_VFAT */ /* init strict 8.3 and vxLongNames handler */ # ifdef INCLUDE_DOSFS_DIR_FIXED /* Sub-module: Vintage 8.3 and VxLong Directory Handler */ dosDirOldLibInit(); # endif /* INCLUDE_DOSFS_DIR_FIXED */ /* Sub-module: FAT12/FAT16/FAT32 FAT Handler */ dosFsFatInit(); # ifdef INCLUDE_DOSFS_CHKDSK /* Sub-module: Consistency check handler */ dosChkLibInit(); # endif /* INCLUDE_DOSFS_CHKDSK */ # ifdef INCLUDE_DOSFS_FMT /* Sub-module: Formatter */ dosFsFmtLibInit(); /* init dosFs scalable formatter */ # endif /* INCLUDE_DOSFS_FMT */ #endif /* INCLUDE_DOSFS_MAIN */ /* dosFs1 legacy code, dosFsInit(), usrDosFsOld.c */ #ifdef INCLUDE_DOSFS hashLibInit (); /* initialize hash table package */ dosFsInit (NUM_DOSFS_FILES); /* init dosFs filesystem */ #endif /* INCLUDE_DOSFS */ #ifdef INCLUDE_RAWFS rawFsInit (NUM_RAWFS_FILES); /* init rawFs filesystem */ #endif /* INCLUDE_RAWFS */ #ifdef INCLUDE_RT11FS rt11FsInit (NUM_RT11FS_FILES); /* init rt11Fs filesystem */ #endif /* INCLUDE_RT11FS */ #ifdef INCLUDE_RAMDRV ramDrv (); /* initialize ram disk driver */ #endif /* INCLUDE_RAMDRV */ /* initialize USB components */ #ifdef INCLUDE_USB_INIT usbInit (); /* USB Host Stack Initialization */ #endif #ifdef INCLUDE_UHCI_INIT usrUsbHcdUhciAttach (); /* UHCI Initialization */ #endif #ifdef INCLUDE_OHCI_INIT usrUsbHcdOhciAttach (); /* OHCI Initialization */ #endif #ifdef INCLUDE_USB_MOUSE_INIT usrUsbMseInit (); /* Mouse Driver Initialization */ #endif #ifdef INCLUDE_USB_KEYBOARD_INIT usrUsbKbdInit (); /* Keyboard Driver Initialization */ #endif #ifdef INCLUDE_USB_PRINTER_INIT usrUsbPrnInit (); /* Printer Driver Initialization */ #endif #ifdef INCLUDE_USB_SPEAKER_INIT usrUsbSpkrInit (); /* Speaker Driver Initialization */ #endif #ifdef INCDLUE_USB_AUDIO_DEMO usrUsbAudioDemo (); /* USB Audio Demo */ #endif #ifdef INCLUDE_USB_MS_BULKONLY_INIT usrUsbBulkDevInit(); /* Bulk Driver Initialization */ #endif #ifdef INCLUDE_USB_MS_CBI_INIT usrUsbCbiUfiDevInit (); /* CBI Driver Initialization */ #endif #ifdef INCLUDE_USB_PEGASUS_END_INIT usrUsbPegasusEndInit (); /* Pegasus Driver Initialization */ #endif #ifdef INCLUDE_SCSI /* * initialize either the SCSI1 or SCSI2 interface; initialize SCSI2 when * the SCSI2 interface is available. */ #ifndef INCLUDE_SCSI2 scsi1IfInit (); #else scsi2IfInit (); #endif /* initialize SCSI controller */ if (sysScsiInit () == OK) { usrScsiConfig (); /* configure SCSI peripherals */ } else { #ifdef INCLUDE_STDIO printf ("sysScsiInit() Failed, SCSI system not initialized\n"); #endif /* INCLUDE_STDIO */ } #endif /* INCLUDE_SCSI */ #ifdef INCLUDE_FD /* initialize floppy disk driver */ if ((fdDrv (FD_INT_VEC, FD_INT_LVL)) == ERROR) { #ifdef INCLUDE_STDIO printf ("fdDrv returned ERROR from usrRoot.\n"); #endif /* INCLUDE_STDIO */ } #endif /* INCLUDE_FD */ #ifdef INCLUDE_IDE /* init IDE disk driver */ if ((ideDrv (IDE_INT_VEC, IDE_INT_LVL, IDE_CONFIG)) == ERROR) { #ifdef INCLUDE_STDIO printf ("ideDrv returned ERROR from usrRoot.\n"); #endif /* INCLUDE_STDIO */ } #endif /* INCLUDE_IDE */ #ifdef INCLUDE_MMC d /* init IDE disk driver */ if ((mmcDrv (AT91C_ID_MCI, AT91C_VEC_MCI, IDE_CONFIG)) == ERROR) { #ifdef INCLUDE_STDIO printf ("ideDrv returned ERROR from usrRoot.\n"); #endif /* INCLUDE_STDIO */ } #endif /* INCLUDE_MMC */ #ifdef INCLUDE_ATA { /* initialize hard disk driver */ IMPORT ATA_RESOURCE ataResources[]; ATA_RESOURCE *pAtaResource; for (ix = 0; ix < ATA_MAX_CTRLS; ix++) { pAtaResource = &ataResources[ix]; if (pAtaResource->ctrlType == IDE_LOCAL) if ((ataDrv (ix, pAtaResource->drives, pAtaResource->intVector, pAtaResource->intLevel, pAtaResource->configType, pAtaResource->semTimeout, pAtaResource->wdgTimeout)) == ERROR) { #ifdef INCLUDE_STDIO printf ("ataDrv returned ERROR from usrRoot.\n"); #endif /* INCLUDE_STDIO */ } } } #ifdef INCLUDE_SHOW_ROUTINES ataShowInit (); /* install ATA/IDE show routine */ #endif /* INCLUDE_SHOW_ROUTINES */ #endif /* INCLUDE_ATA */ #ifdef INCLUDE_LPT { IMPORT LPT_RESOURCE lptResources[]; lptDrv (LPT_CHANNELS, &lptResources[0]); /* init LPT parallel driver */ } #endif /* INCLUDE_LPT */ #ifdef INCLUDE_PCMCIA #ifdef INCLUDE_SHOW_ROUTINES pcmciaShowInit (); /* install PCMCIA show routines */ #endif /* INCLUDE_SHOW_ROUTINES */ pcmciaInit (); /* init PCMCIA Lib */ #endif /* INCLUDE_PCMCIA */ #ifdef INCLUDE_TFFS tffsDrv (); /* it should be after pcmciaInit() */ #endif /* INCLUDE_TFFS */ #ifdef INCLUDE_FORMATTED_IO fioLibInit (); /* initialize formatted I/O */ #endif /* INCLUDE_FORMATTED_IO */ /* initialize floating point facilities */ #ifdef INCLUDE_FLOATING_POINT floatInit (); /* initialize floating point I/O */ #endif /* INCLUDE_FLOATING_POINT */ /* install software floating point emulation (if applicable) */ #ifdef INCLUDE_SW_FP mathSoftInit (); /* use software emulation for fp math */ #endif /* INCLUDE_SW_FP */ /* install hardware floating point support (if applicable) */ #ifdef INCLUDE_HW_FP mathHardInit (); /* do fppInit() & install hw fp math */ #ifdef INCLUDE_SHOW_ROUTINES fppShowInit (); /* install hardware fp show routine */ #endif /* INCLUDE_SHOW_ROUTINES */ #endif /* INCLUDE_HW_FP */ /* install dsp support (if applicable) */ #ifdef INCLUDE_DSP usrDspInit (); /* do dspInit() */ #endif /* INCLUDE_DSP */ /* initialize AltiVec library (if applicable) */ #ifdef INCLUDE_ALTIVEC usrAltivecInit (); #endif /* INCLUDE_ALTIVEC */ /* initialize performance monitoring tools */ #ifdef INCLUDE_SPY spyLibInit (); /* install task cpu utilization tool */ #endif /* INCLUDE_SPY */ #ifdef INCLUDE_TIMEX timexInit (); /* install function timing tool */ #endif /* INCLUDE_TIMEX */ #ifdef INCLUDE_ENV_VARS envLibInit (ENV_VAR_USE_HOOKS); /* initialize environment variable */ #endif /* INCLUDE_ENV_VARS */ #ifdef INCLUDE_NTPASSFS { IMPORT int ntPassFsInit(); IMPORT void * ntPassFsDevInit(); IMPORT char fullExePath[]; char passName [MAX_FILENAME_LENGTH]; char * defPathEnd; if (ntPassFsInit(1) == OK) { if (ntPassFsDevInit("host:") == NULL) { #ifdef INCLUDE_STDIO printf ("ntPassFsDevInit failed for host: \n"); #endif /* INCLUDE_STDIO */ } else { sprintf (passName, "host:%s", fullExePath); /* Remove bootFile name at the end of the string */ defPathEnd = strrchr (passName, '\\'); if (defPathEnd != NULL) *defPathEnd = '\0'; ioDefPathSet (passName); } } else { #ifdef INCLUDE_STDIO printf ("ntPassFsInit failed\n"); #endif /* INCLUDE_STDIO */ } } #endif /* INCLUDE_NTPASSFS */ /* initialize object module loader */ #ifdef INCLUDE_LOADER moduleLibInit (); /* initialize module manager */ #if defined(INCLUDE_AOUT) loadAoutInit (); /* use a.out format */ #else /* coff or ecoff */ #if defined(INCLUDE_ECOFF) loadEcoffInit (); /* use ecoff format */ #else /* ecoff */ #if defined(INCLUDE_COFF) loadCoffInit (); /* use coff format */ #else /* coff */ #if defined(INCLUDE_ELF) loadElfInit (); /* use elf format */ #else #if defined(INCLUDE_SOM_COFF) loadSomCoffInit (); #else #if defined(INCLUDE_PECOFF) { extern int loadPecoffInit(); loadPecoffInit (); } #endif #endif #endif #endif #endif #endif #endif /* INCLUDE_LOADER */ /* initialize wtx client to synchronize host and target symbol tables */ #ifdef INCLUDE_SYM_TBL_SYNC symSyncLibInit (); #endif /* INCLUDE_SYM_TBL_SYNC */ /* initialize network */ #ifdef INCLUDE_NET_INIT usrBootLineInit (sysStartType); /* crack the bootline */ # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP) logMsg ("before usrNetInit()\n", 1,2,3,4,5,6); taskDelay (2); /* allow time for message to be displayed */ # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */ usrNetInit (BOOT_LINE_ADRS); /* initialize network support */ # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP) logMsg ("after usrNetInit()\n", 1,2,3,4,5,6); taskDelay (2); /* allow time for message to be displayed */ # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */ #endif /* INCLUDE_NET_INIT */ #ifdef INCLUDE_PASSFS { extern STATUS passFsInit (); extern void *passFsDevInit (); char passName [256]; if (passFsInit (1) == OK) { extern char vxsim_hostname[]; extern char vxsim_cwd[]; sprintf (passName, "%s:", vxsim_hostname); if (passFsDevInit (passName) == NULL) { #ifdef INCLUDE_STDIO printf ("passFsDevInit failed for <%s>\n", passName); #endif /* INCLUDE_STDIO */ } else { sprintf (passName, "%s:%s", vxsim_hostname, vxsim_cwd); ioDefPathSet (passName); } } else #ifdef INCLUDE_STDIO printf ("passFsInit failed\n"); #endif /* INCLUDE_STDIO */ } #endif /* INCLUDE_PASSFS */ #ifdef INCLUDE_DOS_DISK { char unixName [80]; extern void unixDrv (); extern void unixDiskInit (); extern char *u_progname; /* home of executable */ char *pLastSlash; unixDrv (); pLastSlash = strrchr (u_progname, '/'); pLastSlash = (pLastSlash == NULL) ? u_progname : (pLastSlash + 1); sprintf (unixName, "/tmp/%s%d.dos", pLastSlash, sysProcNumGet()); unixDiskInit (unixName, "A:", 0); } #endif /* INCLUDE_DOS_DISK */ /* initialize shared memory objects */ #ifdef INCLUDE_SM_OBJ /* unbundled shared memory objects */ usrSmObjInit (BOOT_LINE_ADRS); #endif /* INCLUDE_SM_OBJ */ /* initialize WindMP */ #ifdef INCLUDE_VXFUSION /* unbundled VxFusion (distributed objects) */ usrVxFusionInit (BOOT_LINE_ADRS); #ifdef INCLUDE_SHOW_ROUTINES { extern void msgQDistShowInit(); extern void distNameShowInit (); extern void distIfShowInit (); extern void msgQDistGrpShowInit (); msgQDistShowInit(); distNameShowInit (); distIfShowInit (); msgQDistGrpShowInit (); } #endif /* INCLUDE_SHOW_ROUTINES */ #endif /* INCLUDE_WINDMP */ /* write protect text segment & vector table only after bpattach () */ #ifdef INCLUDE_MMU_FULL /* unbundled mmu product */ #ifdef INCLUDE_PROTECT_TEXT if (vmTextProtect () != OK) printf ("\nError protecting text segment. errno = %x\n", errno); #endif /* INCLUDE_PROTECT_TEXT */ #ifdef INCLUDE_PROTECT_VEC_TABLE if (intVecTableWriteProtect () != OK) printf ("\nError protecting vector table. errno = %x\n", errno); #endif /* INCLUDE_PROTECT_VEC_TABLE */ #endif /* INCLUDE_MMU_FULL */ /* install select hook only after NFS/RPC for proper delete hook order */ #ifdef INCLUDE_SELECT selTaskDeleteHookAdd (); #endif /* INCLUDE_SELECT */ /* create system and status symbol tables */ #ifdef INCLUDE_STANDALONE_SYM_TBL # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP) logMsg ("before symTblCreate()\n", 1,2,3,4,5,6); taskDelay (2); /* allow time for message to be displayed */ # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */ sysSymTbl = symTblCreate (SYM_TBL_HASH_SIZE_LOG2, TRUE, memSysPartId); #ifdef INCLUDE_SYM_TBL_SYNC /* create a module (group 1) that is not synchronized (SPR# 20301) */ moduleCreate ("vxWorks.sym", #if (defined INCLUDE_AOUT) MODULE_A_OUT, #elif ((defined INCLUDE_COFF) || (defined INCLUDE_ECOFF) || \ (defined INCLUDE_SOMCOFF)) MODULE_ECOFF, #elif (defined INCLUDE_ELF) MODULE_ELF, #endif /* INCLUDE_AOUT */ HIDDEN_MODULE|LOAD_NO_SYMBOLS); #endif /* INCLUDE_SYM_TBL_SYNC */ printf ("\nAdding %ld symbols for standalone.\n", standTblSize); /* fill in from built in table*/ for (ix = 0; (ULONG) ix < standTblSize; ix++) #if ((CPU_FAMILY == ARM) && ARM_THUMB) thumbSymTblAdd (sysSymTbl, &(standTbl[ix])); #else symTblAdd (sysSymTbl, &(standTbl[ix])); #endif /* CPU_FAMILY == ARM */ # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP) logMsg ("sysSymTbl complete.\n", 1,2,3,4,5,6); taskDelay (2); /* allow time for message to be displayed */ # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */ #endif /* INCLUDE_STANDALONE_SYM_TBL */ #ifdef INCLUDE_NET_SYM_TBL sysSymTbl = symTblCreate (SYM_TBL_HASH_SIZE_LOG2, TRUE, memSysPartId); netLoadSymTbl (); /* fill in table from host */ #endif /* INCLUDE_NET_SYM_TBL */ #ifdef INCLUDE_STAT_SYM_TBL statSymTbl = symTblCreate (STAT_TBL_HASH_SIZE_LOG2, FALSE, memSysPartId); for (ix = 0; (ULONG)ix < statTblSize; ix ++) /* fill in from builtin table*/ symTblAdd (statSymTbl, &(statTbl [ix])); #endif /* INCLUDE_STAT_SYM_TBL */ /* initialize C++ support library */ #if defined (INCLUDE_CPLUS) && defined (INCLUDE_CPLUS_MIN) #error Define only one of INCLUDE_CPLUS or INCLUDE_CPLUS_MIN, not both #endif #if defined (INCLUDE_CPLUS) || defined (INCLUDE_CPLUS_MIN) #ifndef INCLUDE_CTORS_DTORS #define INCLUDE_CTORS_DTORS #endif #endif #ifdef INCLUDE_CTORS_DTORS /* * call compiler generated init functions (usually - but not necessarily - * C++ related) */ cplusCtorsLink (); #endif #ifdef INCLUDE_CPLUS /* all standard C++ runtime support */ cplusLibInit (); #endif #ifdef INCLUDE_CPLUS_MIN /* minimal C++ runtime support */ cplusLibMinInit (); #endif #ifdef INCLUDE_CPLUS_DEMANGLER cplusDemanglerInit (); #endif /* initialize COM/DCOM runtime support */ #ifdef INCLUDE_COM comLibInit (); #endif #ifdef INCLUDE_DCOM dcomLibInit (); #endif /* initialize Wind Web Server */ #ifdef INCLUDE_HTTP httpd (); #endif /* INCLUDE_HTTP */ #ifdef INCLUDE_RBUFF /* install rBuff support */ rBuffLibInit(); #ifdef INCLUDE_SHOW_ROUTINES rBuffShowInit (); /* install rBuff show routine */ #endif /* INCLUDE_SHOW_ROUTINES */ #endif /* INCLUDE_RBUFF */ #ifdef INCLUDE_WINDVIEW windviewConfig (); #endif /* INCLUDE_WINDVIEW */ /* initialize the WDB debug agent */ #ifdef INCLUDE_WDB # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP) logMsg ("before wdbConfig()\n", 1,2,3,4,5,6); taskDelay (2); /* allow time for message to be displayed */ # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */ wdbConfig(); # if defined(INCLUDE_LOGGING) && defined(INCLUDE_LOG_STARTUP) logMsg ("after wdbConfig()\n", 1,2,3,4,5,6); taskDelay (2); /* allow time for message to be displayed */ # endif /* INCLUDE_LOGGING && INCLUDE_LOG_STARTUP */ #ifdef INCLUDE_WDB_BANNER #if (WDB_COMM_TYPE == WDB_COMM_NETWORK) #define WDB_COMM_TYPE_STR "WDB_COMM_NETWORK" #endif /* WDB_COMM_TYPE == WDB_COMM_NETWORK */ #if (WDB_COMM_TYPE == WDB_COMM_SERIAL) #define WDB_COMM_TYPE_STR "WDB_COMM_SERIAL" #endif /* WDB_COMM_TYPE == WDB_COMM_SERIAL */ #if (WDB_COMM_TYPE == WDB_COMM_TYCODRV_5_2) #define WDB_COMM_TYPE_STR "WDB_COMM_TYCODRV_5_2" #endif /* WDB_COMM_TYPE == WDB_COMM_TYCODRV_5_2 */ #if (WDB_COMM_TYPE == WDB_COMM_NETROM) #define WDB_COMM_TYPE_STR "WDB_COMM_NETROM" #endif /* WDB_COMM_TYPE == WDB_COMM_NETROM */ #if (WDB_COMM_TYPE == WDB_COMM_VTMD) #define WDB_COMM_TYPE_STR "WDB_COMM_VTMD" #endif /* WDB_COMM_TYPE == WDB_COMM_VTMD */ #if (WDB_COMM_TYPE == WDB_COMM_END) #define WDB_COMM_TYPE_STR "WDB_COMM_END" #endif /* WDB_COMM_TYPE == WDB_COMM_END */ #if (WDB_COMM_TYPE == WDB_COMM_CUSTOM) #define WDB_COMM_TYPE_STR "WDB_COMM_CUSTOM" #endif /* WDB_COMM_TYPE == WDB_COMM_CUSTOM */ #if (WDB_COMM_TYPE == WDB_COMM_PIPE) #define WDB_COMM_TYPE_STR "WDB_COMM_PIPE" #endif /* WDB_COMM_TYPE == WDB_COMM_PIPE */ #ifndef WDB_COMM_TYPE_STR #define WDB_COMM_TYPE_STR "Unknown" #endif /* WDB_COMM_TYPE_STR */ #ifndef INCLUDE_SHELL /* WDB banner same as printed by usrWdbBanner */ printf ("\n\n"); printf ("%23s\n\n", runtimeName); printf ("Copyright 1984-2002 Wind River Systems, Inc.\n\n"); printf (" CPU: %s\n", sysModel ()); printf (" Runtime Name: %s\n", runtimeName); printf ("Runtime Version: %s\n", runtimeVersion); printf (" BSP version: " BSP_VERSION BSP_REV "\n"); printf (" Created: %s\n", creationDate); printf (" WDB Comm Type: %s\n", WDB_COMM_TYPE_STR); printf (" WDB: %s.\n\n", ((wdbRunsExternal () || wdbRunsTasking ()) ? "Ready" : "Agent configuration failed") ); printf("\n@@@@@line:%d, function:%s, file:%s",__LINE__,__FUNCTION__,__FILE__); #endif /*INCLUDE_SHELL*/ #endif /*INCLUDE_WDB_BANNER*/ #endif /* INCLUDE_WDB */ /* initialize interactive shell */ #ifdef INCLUDE_SHELL #ifdef INCLUDE_SECURITY /* include shell security */ printf("\n@@@@@line:%d, function:%s, file:%s",__LINE__,__FUNCTION__,__FILE__); if ((sysFlags & SYSFLG_NO_SECURITY) == 0) { printf("\n@@@@@line:%d, function:%s, file:%s",__LINE__,__FUNCTION__,__FILE__); loginInit (); /* initialize login table */ printf("\n@@@@@line:%d, function:%s, file:%s",__LINE__,__FUNCTION__,__FILE__); shellLoginInstall (loginPrompt, NULL); /* install security program */ printf("\n@@@@@line:%d, function:%s, file:%s",__LINE__,__FUNCTION__,__FILE__); /* add additional users here as required */ loginUserAdd (LOGIN_USER_NAME, LOGIN_PASSWORD); } #endif /* INCLUDE_SECURITY */ printf("\n@@@@@line:%d, function:%s, file:%s",__LINE__,__FUNCTION__,__FILE__); printLogo (); /* print out the banner page */ printf (" "); printf ("CPU: %s. Processor #%d.\n", sysModel (), sysProcNumGet ()); printf (" "); #ifdef HITACHI_SH_KERNEL_ON_SDRAM printf ("Memory Size: 0x%x.", (UINT)(sysMemTop () - (char *)FREE_RAM_ADRS)); #else /* HITACHI_SH_KERNEL_ON_SDRAM */ printf ("Memory Size: 0x%x.", (UINT)(sysMemTop () - (char *)LOCAL_MEM_LOCAL_ADRS)); #endif /* HITACHI_SH_KERNEL_ON_SDRAM */ printf (" BSP version " BSP_VERSION BSP_REV "."); #if defined(INCLUDE_WDB) && defined(INCLUDE_WDB_BANNER) printf ("\n "); printf ("WDB Comm Type: %s", WDB_COMM_TYPE_STR); printf ("\n "); printf ("WDB: %s.", ((wdbRunsExternal () || wdbRunsTasking ()) ? "Ready" : "Agent configuration failed") ); printf("\n@@@@@line:%d, function:%s, file:%s",__LINE__,__FUNCTION__,__FILE__); #endif /*INCLUDE_WDB && INCLUDE_WDB_BANNER*/ printf ("\n\n"); #ifdef INCLUDE_STARTUP_SCRIPT /* run a startup script */ if (sysBootParams.startupScript [0] != EOS) usrStartupScript (sysBootParams.startupScript); #endif /* INCLUDE_STARTUP_SCRIPT */ shellInit (SHELL_STACK_SIZE, TRUE); /* create the shell */ /* only include the simple demo if the shell is NOT included */ #else #if defined(INCLUDE_DEMO) /* create demo w/o shell */ taskSpawn ("demo", 20, 0, 2000, (FUNCPTR)usrDemo, 0,0,0,0,0,0,0,0,0,0); #endif /* mips cpp no elif */ #endif /* INCLUDE_SHELL */ #ifdef INCLUDE_WINDML usrWindMlInit (); #endif /* INCLUDE_WINDML */ #if defined (INCLUDE_SOUND) && defined(INCLUDE_SB16) sb16Drv (); /* install sound driver SB16 */ sb16DevCreate ("/sound", 0x220, 5, 1, 5); #endif /* INCLUDE_SOUND && INCLUDE_SB16 */ #if defined (INCLUDE_SOUND_CODEC) sndDac3550Drv (); /* install sound driver Dac3550a */ sndDac3550DevCreate ("/sound", 0x220, 5, 1, 5); #endif #if defined(INCLUDE_JAVA) javaConfig (); #endif /* INCLUDE_JAVA */ #ifdef INCLUDE_HTML usrHtmlInit (); #endif /* INCLUDE_HTML */ #if CPU==SIMNT win_ReleaseMutex(simUpMutex); #endif #ifdef INCLUDE_USER_APPL /* Startup the user's application */ USER_APPL_INIT; /* must be a valid C statement or block */ #endif }