📄 usrconfig.c
字号:
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 */
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 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_RAWFS
rawFsInit (NUM_RAWFS_FILES); /* init rawFs filesystem */
#endif /* INCLUDE_RAWFS */
#ifdef INCLUDE_RAMDRV
ramDrv (); /* initialize ram disk driver */
#endif /* INCLUDE_RAMDRV */
#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 */
/* 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 */
/* initialize object module loader */
#ifdef INCLUDE_LOADER
moduleLibInit (); /* initialize module manager */
#if defined(INCLUDE_ELF)
loadElfInit (); /* use elf format */
#endif
#endif /* INCLUDE_LOADER */
/* 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
sysSymTbl = symTblCreate (SYM_TBL_HASH_SIZE_LOG2, TRUE, memSysPartId);
printf ("\nAdding %ld symbols for standalone.\n", standTblSize);
/* fill in from built in table*/
for (ix = 0; (ULONG) ix < standTblSize; ix++)
symTblAdd (sysSymTbl, &(standTbl[ix]));
#endif /* INCLUDE_STANDALONE_SYM_TBL */
/* initialize interactive shell */
#ifdef INCLUDE_SHELL
#ifdef INCLUDE_SECURITY /* include shell security */
if ((sysFlags & SYSFLG_NO_SECURITY) == 0)
{
loginInit (); /* initialize login table */
shellLoginInstall (loginPrompt, NULL); /* install security program */
/* add additional users here as required */
loginUserAdd (LOGIN_USER_NAME, LOGIN_PASSWORD);
}
#endif /* INCLUDE_SECURITY */
printLogo (); /* print out the banner page */
printf (" ");
printf ("CPU: %s. Processor #%d.\n", sysModel (), sysProcNumGet ());
printf (" ");
printf ("Memory Size: 0x%x.", (UINT)(sysMemTop () - (char *)LOCAL_MEM_LOCAL_ADRS));
printf (" BSP version " BSP_VERSION BSP_REV ".");
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
#ifdef 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_USER_APPL
/* Startup the user's application */
USER_APPL_INIT; /* must be a valid C statement or block */
#endif
}
/*******************************************************************************
*
* usrClock - user-defined system clock interrupt routine
*
* This routine is called at interrupt level on each clock interrupt.
* It is installed by usrRoot() with a sysClkConnect() call.
* It calls all the other packages that need to know about clock ticks,
* including the kernel itself.
*
* If the application needs anything to happen at the system clock interrupt
* level, it can be added to this routine.
*
* RETURNS: N/A
*/
const DWORD DISP_TAB[8] = { 0x1fffffff, 0x2fffffff, 0x4fffffff, 0x8fffffff,
0xffffffff, 0x0fffffff, 0xffffffff, 0x0fffffff};
void usrClock ()
{
static DWORD i = 0;
tickAnnounce (); /* announce system tick to kernel */
SysClearClockInterrupt();
IO2SET = IO2SET | 0xf0000000;
IO2CLR = DISP_TAB[i%8] & 0xf0000000;
i++;
/*logMsg("time counter %#x\n", i,0,0,0,0,0);*/
}
#ifdef INCLUDE_DEMO
/********************************************************************************
* usrDemo - example application without shell
*
* This routine is spawned as a task at the end of usrRoot(), if INCLUDE_DEMO
* is defined, and INCLUDE_SHELL is NOT defined in configAll.h or config.h.
* It is intended to indicate how a shell-less application can be linked,
* loaded, and ROMed.
*
* NOMANUAL
*/
void usrDemo (void)
{
char string [40];
printf ("VxWorks (for %s) version %s.\n", sysModel (), vxWorksVersion);
printf ("Kernel: %s.\n", kernelVersion ());
printf ("Made on %s.\n", creationDate);
FOREVER
{
printf ("\nThis is a test. Type something: ");
fioRdString (STD_IN, string, sizeof (string));
printf ("\nYou typed \"%s\".\n", string);
if (strcmp (string, "0") == 0)
memShow (0);
if (strcmp (string, "1") == 0)
memShow (1);
}
}
#endif /* INCLUDE_DEMO */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -