mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
3.7 KiB
137 lines
3.7 KiB
/*++
|
|
|
|
Copyright (c) 2000-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
repltrace.h
|
|
|
|
Abstract:
|
|
|
|
This module contains public declarations and definitions for tracing
|
|
and debugging the endpoint replenish code.
|
|
|
|
Author:
|
|
|
|
Michael Courage (mcourage) 3-Oct-2000
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _REPLTRACE_H_
|
|
#define _REPLTRACE_H_
|
|
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif // __cplusplus
|
|
|
|
//
|
|
// Globals.
|
|
//
|
|
|
|
extern ENDPOINT_SYNCH DummySynch;
|
|
|
|
//
|
|
// This defines the entry written to the trace log.
|
|
//
|
|
|
|
typedef struct _REPLENISH_TRACE_LOG_ENTRY
|
|
{
|
|
PUL_ENDPOINT pEndpoint;
|
|
ENDPOINT_SYNCH Previous;
|
|
ENDPOINT_SYNCH Current;
|
|
USHORT Action;
|
|
USHORT Processor;
|
|
|
|
} REPLENISH_TRACE_LOG_ENTRY, *PREPLENISH_TRACE_LOG_ENTRY;
|
|
|
|
//
|
|
// Action codes.
|
|
//
|
|
// N.B. These codes must be contiguous, starting at zero. If you update
|
|
// this list, you must also update the corresponding array in
|
|
// ul\ulkd\replenish.c.
|
|
//
|
|
|
|
#define REPLENISH_ACTION_START_REPLENISH 0
|
|
#define REPLENISH_ACTION_END_REPLENISH 1
|
|
#define REPLENISH_ACTION_QUEUE_REPLENISH 2
|
|
#define REPLENISH_ACTION_INCREMENT 3
|
|
#define REPLENISH_ACTION_DECREMENT 4
|
|
|
|
#define REPLENISH_ACTION_COUNT 5
|
|
|
|
#define REPLENISH_TRACE_LOG_SIGNATURE ((LONG)'gLpR')
|
|
|
|
//
|
|
// Manipulators.
|
|
//
|
|
|
|
PTRACE_LOG
|
|
CreateReplenishTraceLog(
|
|
IN LONG LogSize,
|
|
IN LONG ExtraBytesInHeader
|
|
);
|
|
|
|
VOID
|
|
DestroyReplenishTraceLog(
|
|
IN PTRACE_LOG pLog
|
|
);
|
|
|
|
VOID
|
|
WriteReplenishTraceLog(
|
|
IN PTRACE_LOG pLog,
|
|
IN PUL_ENDPOINT pEndpoint,
|
|
IN ENDPOINT_SYNCH Previous,
|
|
IN ENDPOINT_SYNCH Current,
|
|
IN USHORT Action
|
|
);
|
|
|
|
|
|
#if ENABLE_REPL_TRACE
|
|
|
|
#define CREATE_REPLENISH_TRACE_LOG( ptr, size, extra ) \
|
|
(ptr) = CreateReplenishTraceLog( (size), (extra) )
|
|
|
|
#define DESTROY_REPLENISH_TRACE_LOG( ptr ) \
|
|
do \
|
|
{ \
|
|
DestroyReplenishTraceLog( ptr ); \
|
|
(ptr) = NULL; \
|
|
} while (FALSE)
|
|
|
|
#define WRITE_REPLENISH_TRACE_LOG( plog, pendp, prev, cur, act ) \
|
|
WriteReplenishTraceLog( \
|
|
(plog), \
|
|
(pendp), \
|
|
(prev), \
|
|
(cur), \
|
|
(act) \
|
|
)
|
|
|
|
#else // !ENABLE_REPL_TRACE
|
|
|
|
#define CREATE_REPLENISH_TRACE_LOG( ptr, size, extra )
|
|
#define DESTROY_REPLENISH_TRACE_LOG( ptr )
|
|
#define WRITE_REPLENISH_TRACE_LOG( plog, pendp, prev, cur, act )
|
|
|
|
#endif // ENABLE_REPL_TRACE
|
|
|
|
#define TRACE_REPLENISH( pendp, prev, cur, act ) \
|
|
WRITE_REPLENISH_TRACE_LOG( \
|
|
g_pReplenishTraceLog, \
|
|
(pendp), \
|
|
(prev), \
|
|
(cur), \
|
|
(act) \
|
|
)
|
|
|
|
#if defined(__cplusplus)
|
|
} // extern "C"
|
|
#endif // __cplusplus
|
|
|
|
|
|
#endif // _REPLTRACE_H_
|