blob: f46689262cf90c5c979933b692174c62c272be7d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
ntnap.h
Abstract:
This module contains the data structure decalrations for
profiling of NT API's.
Author:
Russ Blake (russbl) 22-Apr-1991
Revision History:
--*/
//
// Initialization of minimum times
//
#define MAX_LONG 0x7FFFFFFFL
#define MAX_ULONG 0xFFFFFFFFL
//
// Timer calibration
//
#define NUM_ITERATIONS 2000 // Number of iterations
#define MIN_ACCEPTABLEOVERHEAD 10 // Minimum overhead allowed
#define NAP_CALIBRATION_SERVICE_NUMBER -1L // Calibration Routine Number
typedef struct _NAPCONTROL {
//
// The following assures the area will be initialized only once.
// Note: Assumes the section is given to us zero filled.
//
BOOLEAN Initialized;
//
// Profiling control. If NapPaused > 0, NapRecordInfo will
// collect no data. Used to keep initialization and dumping
// of data itself from being profiled.
//
BOOLEAN Paused;
} NAPCONTROL, *PNAPCONTROL;
extern PCHAR NapNames[];
//
// Called internally
//
VOID NapDllInit (VOID);
VOID NapRecordInfo (IN ULONG, IN LARGE_INTEGER[]);
NTSTATUS NapCreateDataSection (PNAPCONTROL *);
//
// Called by us
//
extern VOID NapCalibrate (VOID);
extern VOID NapSpinOnSpinLock (ULONG *);
extern VOID NapReleaseSpinLock (ULONG *);
|