summaryrefslogtreecommitdiffstats
path: root/private/ntos/dll/ntnap.h
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 *);