windows-nt/Source/XPSP1/NT/base/ntos/rtl/tracedbp.h
2020-09-26 16:20:57 +08:00

90 lines
1.4 KiB
C

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
tracedbp.h
Abstract:
This header contains the private interfaces for the trace database
module (hash table to store stack traces in User/Kernel mode).
Author:
Silviu Calinoiu (SilviuC) 22-Feb-2000
Revision History:
--*/
#ifndef _TRACEDBP_H
#define _TRACEDBP_H
//
// RTL_TRACE_SEGMENT
//
typedef struct _RTL_TRACE_SEGMENT {
ULONG Magic;
struct _RTL_TRACE_DATABASE * Database;
struct _RTL_TRACE_SEGMENT * NextSegment;
SIZE_T TotalSize;
PCHAR SegmentStart;
PCHAR SegmentEnd;
PCHAR SegmentFree;
} RTL_TRACE_SEGMENT, * PRTL_TRACE_SEGMENT;
//
// RTL_TRACE_DATABASE
//
typedef struct _RTL_TRACE_DATABASE {
ULONG Magic;
ULONG Flags;
ULONG Tag;
struct _RTL_TRACE_SEGMENT * SegmentList;
SIZE_T MaximumSize;
SIZE_T CurrentSize;
#ifdef NTOS_KERNEL_RUNTIME
KIRQL SavedIrql;
PVOID Owner;
union {
KSPIN_LOCK SpinLock;
FAST_MUTEX FastMutex;
} u;
#else
PVOID Owner;
RTL_CRITICAL_SECTION Lock;
#endif // #ifdef NTOS_KERNEL_RUNTIME
ULONG NoOfBuckets;
struct _RTL_TRACE_BLOCK * * Buckets;
RTL_TRACE_HASH_FUNCTION HashFunction;
SIZE_T NoOfTraces;
SIZE_T NoOfHits;
ULONG HashCounter[16];
} RTL_TRACE_DATABASE, * PRTL_TRACE_DATABASE;
#endif // #ifndef _TRACEDBP_H
//
// End of header: tracedbp.h
//