mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-30 04:13:33 +00:00
[RXCE]
Implement reference tracing CORE-11327 svn path=/trunk/; revision=74676
This commit is contained in:
@@ -324,6 +324,7 @@ typedef struct _FOBX
|
||||
#define RDBSS_REF_TRACK_NETFOBX 0x00000008
|
||||
#define RDBSS_REF_TRACK_NETFCB 0x00000010
|
||||
#define RDBSS_REF_TRACK_SRVOPEN 0x00000020
|
||||
#define RX_PRINT_REF_TRACKING 0x40000000
|
||||
|
||||
extern ULONG RdbssReferenceTracingValue;
|
||||
|
||||
@@ -341,6 +342,14 @@ RxpTrackDereference(
|
||||
_In_ ULONG Line,
|
||||
_In_ PVOID Instance);
|
||||
|
||||
#define REF_TRACING_ON(TraceMask) (TraceMask & RdbssReferenceTracingValue)
|
||||
#define PRINT_REF_COUNT(TYPE, Count) \
|
||||
if (REF_TRACING_ON( RDBSS_REF_TRACK_ ## TYPE) && \
|
||||
(RdbssReferenceTracingValue & RX_PRINT_REF_TRACKING)) \
|
||||
{ \
|
||||
DbgPrint("%ld\n", Count); \
|
||||
}
|
||||
|
||||
#define RxReferenceSrvCall(SrvCall) \
|
||||
RxpTrackReference(RDBSS_REF_TRACK_SRVCALL, __FILE__, __LINE__, SrvCall); \
|
||||
RxReference(SrvCall)
|
||||
|
||||
@@ -1718,16 +1718,29 @@ RxDereference(
|
||||
RefCount = InterlockedDecrement((volatile long *)&Node->NodeReferenceCount);
|
||||
ASSERT(RefCount >= 0);
|
||||
|
||||
/* TODO: trace */
|
||||
/* Trace refcount */
|
||||
switch (NodeType)
|
||||
{
|
||||
case RDBSS_NTC_SRVCALL:
|
||||
case RDBSS_NTC_NETROOT:
|
||||
case RDBSS_NTC_V_NETROOT:
|
||||
case RDBSS_NTC_SRVOPEN:
|
||||
case RDBSS_NTC_FOBX:
|
||||
UNIMPLEMENTED;
|
||||
PRINT_REF_COUNT(SRVCALL, Node->NodeReferenceCount);
|
||||
break;
|
||||
|
||||
case RDBSS_NTC_NETROOT:
|
||||
PRINT_REF_COUNT(NETROOT, Node->NodeReferenceCount);
|
||||
break;
|
||||
|
||||
case RDBSS_NTC_V_NETROOT:
|
||||
PRINT_REF_COUNT(VNETROOT, Node->NodeReferenceCount);
|
||||
break;
|
||||
|
||||
case RDBSS_NTC_SRVOPEN:
|
||||
PRINT_REF_COUNT(SRVOPEN, Node->NodeReferenceCount);
|
||||
break;
|
||||
|
||||
case RDBSS_NTC_FOBX:
|
||||
PRINT_REF_COUNT(NETFOBX, Node->NodeReferenceCount);
|
||||
break;
|
||||
|
||||
default:
|
||||
ASSERT(FALSE);
|
||||
break;
|
||||
@@ -4752,16 +4765,29 @@ RxReference(
|
||||
Node = (PNODE_TYPE_AND_SIZE)Instance;
|
||||
InterlockedIncrement((volatile long *)&Node->NodeReferenceCount);
|
||||
|
||||
/* And that's not implemented! (yay, we leak :-D) */
|
||||
/* Trace refcount if asked */
|
||||
switch (NodeType)
|
||||
{
|
||||
case RDBSS_NTC_SRVCALL:
|
||||
case RDBSS_NTC_NETROOT:
|
||||
case RDBSS_NTC_V_NETROOT:
|
||||
case RDBSS_NTC_SRVOPEN:
|
||||
case RDBSS_NTC_FOBX:
|
||||
UNIMPLEMENTED;
|
||||
PRINT_REF_COUNT(SRVCALL, Node->NodeReferenceCount);
|
||||
break;
|
||||
|
||||
case RDBSS_NTC_NETROOT:
|
||||
PRINT_REF_COUNT(NETROOT, Node->NodeReferenceCount);
|
||||
break;
|
||||
|
||||
case RDBSS_NTC_V_NETROOT:
|
||||
PRINT_REF_COUNT(VNETROOT, Node->NodeReferenceCount);
|
||||
break;
|
||||
|
||||
case RDBSS_NTC_SRVOPEN:
|
||||
PRINT_REF_COUNT(SRVOPEN, Node->NodeReferenceCount);
|
||||
break;
|
||||
|
||||
case RDBSS_NTC_FOBX:
|
||||
PRINT_REF_COUNT(NETFOBX, Node->NodeReferenceCount);
|
||||
break;
|
||||
|
||||
default:
|
||||
ASSERT(FALSE);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user