void nested() { /* local variable definition */ sysClkRateSet(1000); sysTimestampEnable(); jiffies_per_tick = sysTimestampPeriod(); clock_frequency = sysTimestampFreq(); microseconds_per_tick = (jiffies_per_tick / clock_frequency)*1000000.0; microseconds_per_jiffy = microseconds_per_tick / jiffies_per_tick; int i, j, p; start_profiling(); for(i=2; i<100; i++) { start_profiling_in(); for(j=2; j <= (i/j); j++) if(!(i%j)) break; /* if factor found, not prime*/ stop_profiling_in(); if(j > (i/j)) p = i; } stop_profiling(); output_profiling("nested for outer loop including inner loop profiling"); start_profiling(); for(i=2; i<100; i++) { for(j=2; j <= (i/j); j++) if(!(i%j)) break; /* if factor found, not prime*/ if(j > (i/j)) p = i; } stop_profiling(); output_profiling("nested for outer loop without inner loop profiling"); }
/****************************************************************************** ** Function: CFE_PSP_InitLocalTime() ** ** Purpose: Initializes the vxWorks Aux and TimeStamp timers. ** ** Arguments: none ******************************************************************************/ void CFE_PSP_InitLocalTime(void) { /* Set the sys clock rate */ sysClkRateSet(200); /* ** Disable the Aux timer interrupt */ sysAuxClkDisable(); /* ** Set the Aux timer rate */ if(sysAuxClkRateGet() != CFE_PSP_TIMER_AUX_TICK_PER_SEC) { if(sysAuxClkRateSet(CFE_PSP_TIMER_AUX_TICK_PER_SEC) == ERROR) { OS_printf("CFE_PSP: Unable to set Aux Clock Rate!\n"); } if(CFE_PSP_TIMER_PRINT_DBG == TRUE) { OS_printf("CFE_PSP: Aux Clock Rate %d.\n", sysAuxClkRateGet()); } } }
void initTimer() { /* @TODO start the timer task and forward timer*/ initCallbackInfo(); g_timer_switcher = 1; g_timer_tick_sem = initSemaphore(); g_timer_end_sem = initSemaphore(); createTask(decreaseTimerNode, 0); sysClkConnect(increaseTick, 0); sysClkRateSet(1000 / TICK); sysClkEnable(); timer_debug("initTimer: getrate %d", sysClkRateGet()); }
/*!***************************************************************************** ******************************************************************************* \note init_vxworks \date Feb 1999 \remarks initializes all necessary things ******************************************************************************* Function Parameters: [in]=input,[out]=output none ******************************************************************************/ int init_vxworks( void ) { int i, j; STATUS stat; char *path; /* set the current path of the target */ path = getenv("path"); if (path != NULL) { cd(path); printf("Path set to: %s\n",path); } else { printf("WARNING: set the >path< variable to current working directory\n"); } /* set the main clock rate */ stat = sysClkRateSet(SYS_CLOCK_RATE); if (stat == ERROR) { printf("ERROR in init_vxworks\n"); return FALSE; } /* avoid floating point underflow */ fppCreateHookRtn = (FUNCPTR)usrFppCreateHook; /* add to man pages */ addToMan("ems","enables the motor servo",NULL); addToMan("dms","disables the motor servo",NULL); addToMan("status","displays status information about servo",NULL); /* real robot flag needs to be set */ real_robot_flag = TRUE; real_time_clock_flag = TRUE; setRealRobotOptions(); return TRUE; }
void CFE_PSP_InitLocalTime(void) { /* Set the sys clock rate */ sysClkRateSet(200); /* ** Disable the Aux timer interrupt, and disable the Timestamp timer */ sysAuxClkDisable(); if(sysTimestampDisable() == ERROR) { OS_printf("CFE_PSP: Unable to disable the Timestamp timer!\n"); } /* ** Set the Aux timer */ if(sysAuxClkRateGet() != CFE_PSP_TIMER_AUX_TICK_PER_SEC) { if(sysAuxClkRateSet(CFE_PSP_TIMER_AUX_TICK_PER_SEC) == ERROR) { OS_printf("CFE_PSP: Unable to set Aux Clock Rate!\n"); } if(CFE_PSP_TIMER_PRINT_DBG == TRUE) { OS_printf("CFE_PSP: Aux Clock Rate %d.\n", sysAuxClkRateGet()); OS_printf("CFE_PSP: Timestamp Frequency %u.\n", sysTimestampFreq()); OS_printf("CFE_PSP: Timestamp Period %u.\n", sysTimestampPeriod()); } } }/* end CFE_PSP_InitLocalTime */
int probe1() { unsigned int pciBusNo, pciDevNo, pciFuncNo; unsigned char byte; /* int i,j;*/ UINT32 s_pBA0, s_pBA1; /* To ensure that taskDelay(1) is 1ms delay */ sysClkRateSet(1000); if (pciConfigLibInit (PCI_MECHANISM_1, 0xCF8, 0xCFC, 0) != OK) { printf("PCI lib config error\n"); return 1; } /**************************** * Find SoundCard * Set BaseAddr0, BaseAddr1 ****************************/ if(!(pciFindDevice(PCI_VENDOR_ID_CIRRUS,PCI_DEVICE_ID_CRYSTAL_CS4281, 0, &pciBusNo, &pciDevNo, &pciFuncNo)==OK)) { printf("\n CS4281 sound card NOT FOUND!!! \n"); return 1; } printf("\n FOUND CS4281 sound card, configuring BA0,BA1... \n"); pciConfigOutLong( pciBusNo, pciDevNo, pciFuncNo, PCI_CFG_BASE_ADDRESS_0, CS4281_pBA0); /* pciConfigOutLong( pciBusNo, pciDevNo, pciFuncNo, PCI_CFG_BASE_ADDRESS_1, CS4281_pBA1); */ pciConfigInLong( pciBusNo, pciDevNo, pciFuncNo, PCI_CFG_BASE_ADDRESS_0, &s_pBA0); pciConfigInLong( pciBusNo, pciDevNo, pciFuncNo, PCI_CFG_BASE_ADDRESS_1, &s_pBA1 ); printf ("\npBusNo pDeviceNo pFuncNo pBA0 pBA1\n\n"); printf ("%.8x %.8x %.8x %.8x %.8x \n", pciBusNo, pciDevNo, pciFuncNo, s_pBA0,s_pBA1); /******************************** * Config PCI Device Capability * DMA Master * MEM mapped ********************************/ /* Set the INTA vector */ pciConfigInByte(pciBusNo, pciDevNo, pciFuncNo, PCI_CFG_DEV_INT_LINE, &cs4281_irq); printf("\nFound CS4281 configured for IRQ %d\n", cs4281_irq); pciConfigInByte(pciBusNo, pciDevNo, pciFuncNo, PCI_CFG_DEV_INT_PIN, &byte); printf("\tINT_PIN=%.8x\n", byte); /* Enable the device's capabilities as specified * Bus Master Enable/ Mem Space Enable */ pciConfigOutWord(pciBusNo, pciDevNo, pciFuncNo, PCI_CFG_COMMAND, (unsigned short)0x0006); /*************************** * BringUp Hardware ***************************/ /*Include Init Function Here*/ cs4281_hw_init(); /**************************** * Allocate ADC_BUFFER * Allocate DAC_BUFFER * * Hook cs4281_interrupt * * Program CoDec ****************************/ if((DAC_BUFFER=valloc(DAC_BUFFER_SIZE))==NULL) { printf("\n DAC_BUFFER valloc failed!\n"); return 1; } memset( DAC_BUFFER, 0, DAC_BUFFER_SIZE ); printf("\ndac=%x",DAC_BUFFER); /*for( i=0 ; i < DAC_BUFFER_SIZE ; i++ ) ((char *)DAC_BUFFER)[i]=0x7f;*/ writel((UINT32)DAC_BUFFER+8,CS4281_pBA0 + BA0_DBA0); writel(DAC_BUFFER_SIZE-16, CS4281_pBA0 + BA0_DBC0); printf("\nbao=%x",readl(CS4281_pBA0 + BA0_DBA0)); printf("\nbco=%x",readl(CS4281_pBA0 + BA0_DBC0)); printf("\ncco=%x",readl(CS4281_pBA0 + BA0_DCC0)); if((ADC_BUFFER=valloc(ADC_BUFFER_SIZE))==NULL) { printf("\n ADC_BUFFER valloc failed!\n"); return 1; } printf("\nadc=%x",ADC_BUFFER); /*for( i=0 ; i < ADC_BUFFER_SIZE ; i++ ) ((char *)ADC_BUFFER)[i]=0x7f;*/ writel((UINT32)ADC_BUFFER+8,CS4281_pBA0 + BA0_DBA1); writel(ADC_BUFFER_SIZE-16, CS4281_pBA0 + BA0_DBC1); /* connect interrupt */ printf("\n Hook cs4281_interrupt to vector %d\n", (INUM_TO_IVEC (cs4281_irq+INT_NUM_IRQ0))); pciIntConnect((INUM_TO_IVEC (cs4281_irq+INT_NUM_IRQ0)), (VOIDFUNCPTR)cs4281_interrupt, 0); sysIntEnablePIC(cs4281_irq); SEM_DMA_Playback = semBCreate(SEM_Q_FIFO,SEM_EMPTY); SEM_MY_Playback = semBCreate(SEM_Q_FIFO,SEM_EMPTY); SEM_DMA_Record = semBCreate(SEM_Q_FIFO,SEM_EMPTY); SEM_Sample = semBCreate(SEM_Q_FIFO,SEM_EMPTY); CNT_DMA_Playback = CNT_DMA_Record = 0; /* program coDec */ printf("\n Program CoDec (sample rate, DMA...)\n"); prog_codec(); /********************************************* * start dac/adc, interrupt is comming... *********************************************/ start_dac(); 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 }
static int __wind_sys_clkrateset(struct task_struct *curr, struct pt_regs *regs) { return sysClkRateSet(__xn_reg_arg1(regs)) == ERROR; }
/** * @brief Installation du périphérique. * * @param dev_count Le nombre de périphériques à créer. * * @return OK si la fonction s'est executé normalement, ERROR sinon. */ int pe_driverInstall(int dev_count) { /* iteration pour la création des périphériques */ int i = 0; struct timespec initial_time = {0 , 0}; if(dev_count > DEVICE_MAX_COUNT) { errnoSet(ETOOMUCHDEV); return ERROR; } if(driver_id != -1) { errnoSet(EINSTALLED); return ERROR; } /* Driver installation */ driver_id = iosDrvInstall(pe_open,pe_close, pe_open, pe_close, pe_read, (FUNCPTR) NULL, pe_ioctl); if(driver_id < 0) { errnoSet(EUNKNOW); return ERROR; } /* Création du sémaphore d'exclusion mutuelle pour les deux tables (table_capt * et table_buffer, qui sont susceptibl * Les tâches s'enfilent dans l'ordre d'arrivée avec SEM_Q_FIFO, et * SEM_DELETE_SAFE garantie que la tâche ayant verrouillé un sémaphore ne soit * pas détruite avant de le libérer. */ mut_table_capt = semMCreate(SEM_Q_FIFO | SEM_DELETE_SAFE); if(mut_table_capt == NULL) { return ERROR; } mut_table_buffer = semMCreate(SEM_Q_FIFO | SEM_DELETE_SAFE); if(mut_table_buffer == NULL) { return ERROR; } /* Création de la file de message de communication entre le serveur d'interuption * et la tâche dispatcher */ msgQ_dispatcher = msgQCreate(10, sizeof(Message), MSG_Q_FIFO ); if(msgQ_dispatcher == NULL) { return ERROR; } /* Création de la tâche dispatcher */ id_pe_task_dispatcher = taskSpawn("pe_task_dispatcher", DISPATCHER_PRIORITY, 0, 512, (FUNCPTR) pe_dispatcher, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if(id_pe_task_dispatcher == ERROR) { return ERROR; } for(i=0 ; i < dev_count; ++i) { if(pe_deviceAdd(i) == ERROR) { pe_cleanup_resources(); errnoSet(ECANNOTADD); return ERROR; } } for(; i < DEVICE_MAX_COUNT; i++) { table_capt[i].specific.address = -1; table_capt[i].specific.state = notcreated; table_buffer[i].id = -1; } /* Initialisation de l'horloge système : elle est placée arbitrairement * à 0:0 à l'installation du pilote. */ sysClkRateSet(100); clock_settime(CLOCK_REALTIME, &initial_time); return driver_id; }