int my_usrInit(int startType) { sysHwInit0(); bzero(&bss_begin, (&bss_begin - &bss_end)); sysStartType = startType; intVecBaseSet(0); cacheLibInit(1, 2); excVecInit(); sysHwInit(); cacheEnable(0); cacheEnable(1); classLibInit(); taskLibInit(); qInit(&readyQHead, qPriBMapClassId, &readyQBMap, 0x100); qInit(&activeQHead, qFifoClassId); qInit(&tickQHead, qPriListClassId); workQInit(); /* sysMemTop() - returns the LogBuffer address, the buffer is 1.5mb */ kernelInit(my_usrRoot, 0x4000, &bss_end, sysMemTop(), 0xC00, 0); return 0; }
void usrInit (int startType) { sysStart (startType); /* clear BSS and set up the vector table base address. */ cacheLibInit (USER_I_CACHE_MODE, USER_D_CACHE_MODE); /* include cache support */ excVecInit (); /* exception handling */ sysHwInit (); /* call the BSPs sysHwInit routine during system startup */ usrCacheEnable (); /* optionally enable caches */ objOwnershipInit (); /* object management ownership */ objInfoInit (); /* object management routines that requires lookup in a list of objects, such as the objNameToId() routine. */ objLibInit ((FUNCPTR)FUNCPTR_OBJ_MEMALLOC_RTN, FUNCPTR_OBJ_MEMFREE_RTN, OBJ_MEM_POOL_ID, OBJ_LIBRARY_OPTIONS); /* object management */ vxMemProbeInit (); /* Initialize vxMemProbe exception handler support */ wvLibInit (); /* low-level kernel instrumentation needed by System Viewer */ classListLibInit (); /* object class list management */ semLibInit (); /* semaphore support infrastructure */ /* mutex semaphores */ /* mutex semaphore creation routine */ classLibInit (); /* object class management */ kernelBaseInit (); /* required component DO NOT REMOVE. */ /* __thread variables support */ usrKernelInit (VX_GLOBAL_NO_STACK_FILL); /* context switch and interrupt handling (DO NOT REMOVE). */ }
int _tmain(int argc, _TCHAR* argv[]) { classLibInit(); memPartLibInit(memBuf, MEM_LEN); char* a1 = (char*)memPartAlloc(memSysPartId, 10); char* a2 = (char*)memPartAlloc(memSysPartId, 45); memPartFree(memSysPartId, a1); memPartFree(memSysPartId, a2); a1 = (char*)memPartAlloc(memSysPartId, 10); a2 = (char*)memPartAlloc(memSysPartId, 45); memPartFree(memSysPartId, a2); memPartFree(memSysPartId, a1); a1 = (char*)memPartAlloc(memSysPartId, 10); a2 = (char*)memPartAlloc(memSysPartId, 12); char* a3 = (char*)memPartAlloc(memSysPartId, 45); memPartFree(memSysPartId, a2); char* a4 = (char*)memPartAlloc(memSysPartId, 12); testQueue(); SEM_ID semId = semMCreate(0); int c = 0; semTake(semId, WAIT_FOREVER); c++; semGive(semId); semDelete(semId); gets(a1); return 0; }