windows-nt/Source/XPSP1/NT/net/rras/ndis/ndproxy/pxdebug.c

118 lines
2.4 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1995-1996 Microsoft Corporation
Module Name:
PXDebug.c
Abstract:
This module contains all debug-related code.
Revision History:
Who When What
-------- -------- ----------------------------------------------
rmachin 11-01-96 stolen from ArvindM's cmadebug file
TonyBe 02-21-99 re-work/re-write
Notes:
--*/
#include <precomp.h>
#define MODULE_NUMBER MODULE_DEBUG
#define _FILENUMBER 'BDXP'
#if DBG
ULONG PXDebugLevel = PXD_ERROR;
ULONG PXDebugMask = PXM_ALL;
LIST_ENTRY PxdMemoryList;
ULONG PxdAllocCount = 0; // how many allocated so far (unfreed)
NDIS_SPIN_LOCK PxdMemoryLock;
BOOLEAN PxdInitDone = FALSE;
PVOID
PxAuditAllocMem(
PVOID pPointer,
ULONG Size,
ULONG Tag,
ULONG FileNumber,
ULONG LineNumber
)
{
PVOID pBuffer = NULL;
PPXD_ALLOCATION pAllocInfo;
NDIS_STATUS Status;
if(!PxdInitDone) {
NdisAllocateSpinLock(&(PxdMemoryLock));
InitializeListHead(&PxdMemoryList);
PxdInitDone = TRUE;
}
pAllocInfo = ExAllocatePoolWithTag(NonPagedPool,
Size+sizeof(PXD_ALLOCATION),
Tag);
if (pAllocInfo != NULL) {
pBuffer = (PVOID)&(pAllocInfo->UserData);
NdisFillMemory(pBuffer, Size, 0xAF);
pAllocInfo->Signature = PXD_MEMORY_SIGNATURE;
pAllocInfo->FileNumber = FileNumber;
pAllocInfo->LineNumber = LineNumber;
pAllocInfo->Size = Size;
pAllocInfo->Location = (ULONG_PTR)pPointer;
NdisAcquireSpinLock(&(PxdMemoryLock));
InsertTailList(&PxdMemoryList, &pAllocInfo->Linkage);
PxdAllocCount++;
NdisReleaseSpinLock(&(PxdMemoryLock));
}
return (pBuffer);
}
VOID
PxAuditFreeMem(
PVOID Pointer
)
{
PPXD_ALLOCATION pAllocInfo;
pAllocInfo = CONTAINING_RECORD(Pointer, PXD_ALLOCATION, UserData);
if(pAllocInfo->Signature != PXD_MEMORY_SIGNATURE)
{
DbgPrint("PxAuditFreeMem: unknown buffer 0x%x!\n", Pointer);
DbgBreakPoint();
return;
}
NdisAcquireSpinLock(&(PxdMemoryLock));
pAllocInfo->Signature = (ULONG)'DEAD';
RemoveEntryList(&pAllocInfo->Linkage);
PxdAllocCount--;
NdisReleaseSpinLock(&(PxdMemoryLock));
ExFreePool(pAllocInfo);
}
#endif // DBG