PVOID __KernelAllocateMemory ( ULONG ulSize, PCSTR pFileName, ULONG LineNumber ) { PAL_MEM_PREHEADER pHeader; if ( !gMemAllocMonitorInitialized ) { __KernelInitializeMemAllocMonitor(); } pHeader = RealKernelAllocateMemory(ulSize + sizeof(AL_MEM_PREHEADER) + AL_MEM_POST_PAD_SIZE); if ( pHeader ) { if ( GlobalDebugLevel >= 8 ) { KernelTrace("__KernelAllocateMemory -- %s:%lu, allocated pMem = 0x%x ...\n", pFileName, LineNumber, ACCESS_MEM_FROM_PREHEADER(pHeader)); } KernelZeroMemory(pHeader, ulSize + sizeof(AL_MEM_PREHEADER) + AL_MEM_POST_PAD_SIZE); pHeader->MemTrueSize = ulSize; KernelAcquireLock(&gMemAllocMonitorLock); gMemAllocTotalSize += ulSize; gNumberMemAllocated ++; KernelReleaseLock(&gMemAllocMonitorLock); return ACCESS_MEM_FROM_PREHEADER(pHeader); } else { KernelTrace("KernelAllocateMemory -- insufficient resources for %lu bytes -- %s:%lu!!!\n", ulSize, pFileName, LineNumber); KernelTrace("KernelAllocateMemory -- current number of allocated = %lu, size = %lu.\n", gNumberMemAllocated, gMemAllocTotalSize); /*DH DEBUG*/ memShow(0); taskShow(taskIdSelf(), 1); checkStack(0); /*force an exception*/ *(PULONG)0 = 0; return NULL; } }
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); } }