mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
4.6 KiB
147 lines
4.6 KiB
|
|
; 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
|