|
|
/*++
Copyright (c) 1996-1999 Microsoft Corporation
Module Name:
schedt.h
Abstract:
defines for psched's tracing support
Author:
Rajesh Sundaram (rajeshsu)
Revision History:
--*/
#ifndef _SCHEDTRACE_
#define _SCHEDTRACE_
typedef VOID (*SCHEDTRACE_THRESH_PROC)( PVOID Context);
#define TRACE_BUFFER_SIZE 1000 * 1024
#define TRACE_STRING_LENGTH 127
#define MAX_RECORD_DATA 200
#define TRACE_PREAMBLE 0xdeadbeef
// Record types
#define RECORD_TSTRING 1
#define RECORD_RECV 2
#define RECORD_PKT 3
#define RECORD_SCHED 4
#define RECORD_COMPONENT_SPECIFIC 5
#define RECORD_SEND 6
#define RECORD_OID 7
// Receive actions (must be kept in sync with kdps)
#define ENTER (ULONG)1
#define NO_RESOURCES (ULONG)2
#define LOW_RESOURCES (ULONG)3
#define INDICATING (ULONG)4
#define RETURNED (ULONG)5
#define NOT_OURS (ULONG)6
#define OURS (ULONG)7
#define RETURNING (ULONG)8
#define TRANSFERRING (ULONG)9
#define NOT_READY (ULONG)10
// Receive events (must be kept in sync with kdps)
#define CL_RECV_PACKET (ULONG)1
#define MP_RETURN_PACKET (ULONG)2
#define CL_RECV_IND (ULONG)3
#define CL_RECV_COMPL (ULONG)4
#define MP_XFER_DATA (ULONG)5
#define CL_XFER_COMPL (ULONG)6
// Send actions
#define MP_SEND (ULONG) 1
#define MP_CO_SEND (ULONG) 2
#define DUP_PACKET (ULONG) 3
#define DROP_PACKET (ULONG) 4
#define CL_SEND_COMPLETE (ULONG) 5
// Packet actions (must be kept in sync with kdps)
#define SUBMIT (ULONG)1
#define SEND (ULONG)2
#define SEND_COMPLETE (ULONG)3
#define DROP (ULONG)4
#define CO_SEND (ULONG)5
// Scheduler actions (must be kept in sync with kdps)
#define PKT_ENQUEUE (ULONG)1
#define PKT_DEQUEUE (ULONG)2
#define PKT_CONFORMANCE (ULONG)3
#define PKT_DISCARD (ULONG)4
// ID for Scheduler modules
// Note! LAST_LOG_ID should be at the very
// end. The add-in components use IDs that
// begin from LAST_LOG_ID
#define TBC_CONFORMER (ULONG)1
#define SHAPER (ULONG)2
#define DRR_SEQUENCER (ULONG)3
#define LAST_LOG_ID (ULONG)4
typedef struct _TraceRecordString { LONG Preamble; SHORT RecordType; LARGE_INTEGER Now; UCHAR StringStart[TRACE_STRING_LENGTH]; } TRACE_RECORD_STRING;
#define TRACE_OID_MP_SETINFORMATION 1
#define TRACE_OID_MP_QUERYINFORMATION 2
#define TRACE_OID_SET_REQUEST_COMPLETE 3
#define TRACE_OID_QUERY_REQUEST_COMPLETE 4
typedef struct _TraceRecordOid { LONG Preamble; SHORT RecordType; LARGE_INTEGER Now; ULONG Oid; ULONG Local; ULONG Action; ULONG PTState; ULONG MPState; PVOID Adapter; ULONG Status; } TRACE_RECORD_OID;
typedef struct _TraceRecordRecv{ LONG Preamble; SHORT RecordType; LARGE_INTEGER Now; ULONG Event; ULONG Action; PVOID Adapter; PNDIS_PACKET Packet1; PNDIS_PACKET Packet2; } TRACE_RECORD_RECV;
typedef struct _TraceRecordSend { LONG Preamble; SHORT RecordType; LARGE_INTEGER Now; ULONG Event; ULONG Action; PVOID Adapter; PNDIS_PACKET Packet1; PNDIS_PACKET Packet2; PVOID Vc; } TRACE_RECORD_SEND;
typedef struct _TraceRecordPkts{ LONG Preamble; SHORT RecordType; LARGE_INTEGER Now; ULONG CallingFunction; PVOID VC; PNDIS_PACKET Packet; ULONG PacketLength; ULONG Action; LONGLONG AbsoluteTime; } TRACE_RECORD_PKT;
typedef struct _TraceRecordSched{ LONG Preamble; SHORT RecordType; LARGE_INTEGER Now; ULONG SchedulerComponent; ULONG Action; PVOID VC; PNDIS_PACKET Packet; ULONG PacketLength; ULONG Priority; LONGLONG ArrivalTime; LONGLONG ConformanceTime; ULONG PacketsInComponent; ULONG BytesInComponent; } TRACE_RECORD_SCHED;
typedef struct _TraceRecordComponentSpecific{ LONG Preamble; SHORT RecordType; LARGE_INTEGER Now; ULONG SchedulerComponent; ULONG Length; UCHAR Data[MAX_RECORD_DATA]; } TRACE_RECORD_COMPONENT_SPECIFIC;
VOID DbugOid( ULONG Action, ULONG Local, ULONG PTState, ULONG MPState, PVOID Adapter, ULONG Oid, ULONG Status );
VOID DbugSchedString(char *format, ...);
VOID DbugRecv( ULONG Event, ULONG Action, PVOID Adapter, PNDIS_PACKET Packet1, PNDIS_PACKET Packet2 );
VOID DbugSend( ULONG Event, ULONG Action, PVOID Adapter, PVOID Vc, PNDIS_PACKET Packet1, PNDIS_PACKET Packet2 );
VOID DbugSchedPkts( ULONG CallingFunction, PVOID VC, PNDIS_PACKET Packet, ULONG Action, ULONG PacketLength );
VOID DbugSched( ULONG SchedulerComponent, ULONG Action, PVOID VC, PNDIS_PACKET Packet, ULONG PacketLength, ULONG Priority, LONGLONG ArrivalTime, LONGLONG ConformanceTime, ULONG PacketsInComponent, ULONG BytesInComponent );
VOID DbugComponentSpecificRec( ULONG SchedulerComponent, PVOID Data, ULONG Length );
VOID DbugTraceSetThreshold( ULONG Threshold, PVOID Context, SCHEDTRACE_THRESH_PROC ThreshProc );
VOID DbugReadTraceBuffer( PUCHAR Buffer, ULONG BytesToRead, PULONG BytesRead );
NTSTATUS WriteRecord( UCHAR * Record, ULONG Bytes );
VOID SchedInitialize(ULONG BufferSize);
VOID SchedDeInitialize();
ULONG SchedtGetBufferSize();
ULONG SchedtGetBytesUnread();
#endif _SCHEDTRACE_
|