/*++ 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_