blob: 5c6dd8f74a69883950ea688033e3252441c5d96c (
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
; Copyright (c) Microsoft Corporation 1989-1991. All Rights Reserved.
;******************************************************************************
;
; Title: smartdrv.inc - smartdrv equates & structures
;
; Version: 1.00
;
; Date: 15-Sep-1989
;
; Author: ARR
;
;------------------------------------------------------------------------------
;
; Change log:
;
; DATE REV DESCRIPTION
; ----------- --- -----------------------------------------------------------
; 15-Sep-1989 ARR Original
;
;==============================================================================
;
; Device name of SMARTDRV
;
SD_DEV_NAME equ "SMARTAAR",0
;
; SMARTDRV cache type (XMS or EMS) -- SD_IR_Driver_Type field
;
SD_CACHE_XMS equ 1 ; Cache is in XMS
SD_CACHE_EMS equ 2 ; Cache is in EMS
;
; Structure of the data returned on the SMARTDRV IOCTL read call
;
SD_IOCTL_Read struc
SD_IR_Write_Through db ? ; Write-through flag, currently always 1
SD_IR_Write_Buff db ? ; Buffer write flag, currently always 0
SD_IR_Enable_Int13 db ? ; Cache enable flag, 1 = enabled
SD_IR_Driver_Type db ? ; Type 1 (XMS cache) or 2 (EMS cache)
SD_IR_Tick_Setting dw ? ; Ticks between flushes, currently unused
SD_IR_Lock_Cache db ? ; Non-zero if cache is locked
SD_IR_Reboot_Flush db ? ; Non-zero if cache should be flushed on reboot
SD_IR_Cache_All db ? ; Zero if full track writes are not cached
db ? ; Unused
SD_IR_Original_INT13 dd ? ; INT 13 address SMARTDRV hooked
SD_IR_Version dw ? ; SMARTDrive version, packed BCD
dw ? ; Unused
; Next three values are used for computing
; cache statistics. They may be scaled rather
; than absolute values
SD_IR_Total_Sec_Read dw ? ; Count of sectors read
SD_IR_Cache_Sec_Read dw ? ; Count of sectors read from cache
SD_IR_Track_Sec_Read dw ? ; Count of sectors read from track buffer
; Cache statistics
SD_IR_Cache_Hit_Ratio db ? ; = Cache_Sec_Read * 100 / Total_Sec_Read
SD_IR_Track_Hit_Ratio db ? ; = Track_Sec_Read * 100 / Total_Sec_Read
SD_IR_Total_Tracks dw ? ; Number of tracks in the cache
SD_IR_Total_Used dw ? ; Tracks currently in use
SD_IR_Total_Locked dw ? ; Tracks currently locked
SD_IR_Total_Dirty dw ? ; Tracks currently dirty
; Information for resizing cache
; All values are in terms of 16Kb pages.
SD_IR_Current_Size dw ? ; Current size of the cache, in 16Kb pages
SD_IR_Dev_Size dw ? ; Original size requested by user
SD_IR_Min_Cache_Size dw ? ; Minimum allowable size
SD_IOCTL_Read ends
;
; IOCTL Write functions
; The function is encoded in the first byte of the IOCTL write data
;
SD_IOCTL_WR_Flush equ 0 ; Flush the cache
SD_IOCTL_WR_Flush_Invalidate equ 1 ; Flush the cache and discard it
SD_IOCTL_WR_Disable_Cache equ 2 ; Turn caching off
SD_IOCTL_WR_Enable_Cache equ 3 ; Turn caching on
SD_IOCTL_WR_Set_Tick equ 5 ; Set tick count for flush
SD_IOCTL_WR_Lock equ 6 ; Lock current cache contents
SD_IOCTL_WR_Unlock equ 7 ; Unlock current cache contents
SD_IOCTL_WR_Reboot_Flush equ 8 ; Set Reboot_Flush flag
SD_IOCTL_WR_Shrink_Cache equ 11 ; Reduce cache size
SD_IOCTL_WR_Grow_Cache equ 12 ; Increase cache size
SD_IOCTL_WR_Set_INT_13 equ 13 ; Set the address SMARTDRV
; chains to on INT 13s
;
; Structures for the IOCTL write calls
;
; These calls do not take any parameters so the correct write count is 1
; (the function code byte)
;
; WR_Flush
; WR_Flush_Invalidate
; WR_Disable_Cache
; WR_Enable_Cache
; WR_Set_Tick
; WR_Lock
; WR_Unlock
;
SD_IOCTL_WR_NoParm struc
SD_I_W_Func db ?
SD_IOCTL_WR_NoParm ends
;
; WR_Reboot_Flush
;
SD_IOCTL_WR_Reboot struc
SD_I_W_FuncR db SD_IOCTL_WR_Reboot_Flush
SD_I_W_RebootFlg db ? ; 0 to turn reboot flush off
; 1 to turn reboot flush on
SD_IOCTL_WR_Reboot ends
;
; WR_Shrink_Cache
; WR_Grow_Cache
;
SD_IOCTL_WR_GrwShrk struc
SD_I_W_FuncGS db ? ; Function, one of:
; SD_IOCTL_WR_Shrink_Cache
; SD_IOCTL_WR_Grow_Cache
SD_I_W_GS_Size dw ? ; Count of 16k "pages" to
; grow or shrink cache by
; THIS IS A SIZE DELTA
; not a total size.
SD_IOCTL_WR_GrwShrk ends
;
; WR_Set_INT_13
;
SD_IOCTL_WR_SetI13 struc
SD_I_W_FuncS13 db SD_IOCTL_WR_Set_INT_13
SD_I_W_S13_Addr dd ? ; Segment:Offset address
; to set Original_INT13 to.
; NO RECORD IS KEPT OF PREV
; VALUE, caller's responsible
; for save and restore.
SD_IOCTL_WR_SetI13 ends
|