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;
    }
}
Beispiel #2
0
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);
        }
    }