mirror of https://github.com/lianthony/NT4.0
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.
2231 lines
38 KiB
2231 lines
38 KiB
/*****************************************************************************
|
|
*
|
|
* COPYRIGHT 1993 - COLORADO MEMORY SYSTEMS, INC.
|
|
* ALL RIGHTS RESERVED.
|
|
*
|
|
******************************************************************************
|
|
*
|
|
* FILE: \SE\DRIVER\Q117KDI\INCLUDE\KDIWPRIV.H
|
|
*
|
|
* PURPOSE: This file contains all of the internal structures and types needed
|
|
* in the KDI.
|
|
*
|
|
* HISTORY:
|
|
* $Log: J:\se.vcs\driver\q117kdi\include\kdiwpriv.h $
|
|
*
|
|
* Rev 1.46 25 Oct 1994 16:26:28 CRAIGOGA
|
|
* Added handle to DMABufferItem definition.
|
|
* This data is used to store the WIN40 memory handle required to free the
|
|
* memory.
|
|
*
|
|
* Rev 1.45 10 Aug 1994 12:04:30 BOBLEHMA
|
|
* Added function prototypes for NT (q117MapStatus and q117LogError).
|
|
*
|
|
* Rev 1.44 07 Jul 1994 13:14:28 BOBLEHMA
|
|
* Added prototypes for kdi_AgressiveFindIRQ and kdi_AgressiveFindIRQ_ISR.
|
|
*
|
|
* Rev 1.43 26 Apr 1994 16:33:42 KEVINKES
|
|
* Added interrupt_status to the NT context.
|
|
*
|
|
* Rev 1.42 20 Apr 1994 16:27:50 BOBLEHMA
|
|
* Changed the interface to kdi_QIC117ClearIRQ and moved the prototype for
|
|
* kdi_QIC117CheckIRQ to kdi_pub.h.
|
|
*
|
|
* Rev 1.41 18 Apr 1994 18:31:18 STEWARTK
|
|
* Added the parameter VM_Handle to the call for kdi_GetValidInterrupts
|
|
*
|
|
* Rev 1.40 29 Mar 1994 11:31:38 BOBLEHMA
|
|
* Added interrupt_masked boolean to the kdi_system_data.
|
|
*
|
|
* Rev 1.39 10 Mar 1994 10:08:02 BOBLEHMA
|
|
* Changed kdi_NotifyADI proto to include a status parameter.
|
|
*
|
|
* Rev 1.38 09 Mar 1994 09:43:52 BOBLEHMA
|
|
* Added an frb queue to the kdi_context.
|
|
* Added function prototypes for kdi_AssignFRB and kdi_ReturnFRB.
|
|
*
|
|
* Rev 1.37 22 Feb 1994 16:40:50 BOBLEHMA
|
|
* Changed function name from kdi_GetVMVirtualMask to kdi_GetVMPhysicalMask.
|
|
*
|
|
* Rev 1.36 22 Feb 1994 14:48:12 BOBLEHMA
|
|
* Changed prototype for XferRetry to include an in_format parameter.
|
|
* Added NULL_FORMAT_HANDLE define.
|
|
*
|
|
* Rev 1.35 17 Feb 1994 11:50:46 KEVINKES
|
|
* Added a define for NANOSEC_TO_MILLISEC.
|
|
*
|
|
* Rev 1.34 16 Feb 1994 15:33:26 BOBLEHMA
|
|
* Added kdi_CopyBuffer and kdi_CopyPageTable prototypes.
|
|
* Added phys_callback field to the SystemData structure.
|
|
*
|
|
* Rev 1.33 15 Feb 1994 12:44:08 BOBLEHMA
|
|
* Changed kdi_ReadReg and kdi_WriteReg to use the dUByte type for data transfers.
|
|
* Added kdi_Inpw and kdi_Outpw prototypes.
|
|
*
|
|
* Rev 1.32 20 Jan 1994 12:34:14 BOBLEHMA
|
|
* Renamed PAGE_SIZE define to JUMBO_PAGE_SIZE.
|
|
* Changed interface to kdi_CallPriorityVMEvent. Added priority parameter.
|
|
*
|
|
* Rev 1.31 19 Jan 1994 10:56:50 KEVINKES
|
|
* Fixed an invalid data type.
|
|
*
|
|
* Rev 1.30 18 Jan 1994 17:10:26 KEVINKES
|
|
* Added own_floppy_event to kdi_context for NT.
|
|
*
|
|
* Rev 1.29 14 Jan 1994 16:26:32 CHETDOUG
|
|
* Moved kdi_checkxor, kdi_push/popmasktrakkerint, and kdi_trakkerxfer prototype
|
|
* from kdiwpriv.h
|
|
*
|
|
* Rev 1.28 13 Jan 1994 16:43:38 BOBLEHMA
|
|
* Added format_handle to the kdi context.
|
|
*
|
|
* Rev 1.27 12 Jan 1994 16:46:12 BOBLEHMA
|
|
* Added prototype kdi_PageFree and changed interface to kdi_PageAlloc.
|
|
* Changed BufferToDMABuffer to AssignBuffer and DMABufferToBuffer to ReturnBuffer.
|
|
* Added flags to the kdi context for thread protection and interrupt notification.
|
|
*
|
|
* Rev 1.26 12 Jan 1994 11:55:20 BOBLEHMA
|
|
* Added function prototypes for VTD functions.
|
|
*
|
|
* Rev 1.25 17 Dec 1993 14:56:44 BOBLEHMA
|
|
* Changed kdi_system_data.callback to a dVoidPtr type.
|
|
*
|
|
* Rev 1.24 10 Dec 1993 15:17:38 BOBLEHMA
|
|
* Removed the CURRENT pointer from the context list to allow
|
|
* multiple drive support.
|
|
*
|
|
* Rev 1.23 09 Dec 1993 15:17:56 BOBLEHMA
|
|
* Removed StopTypeEnum and changed kdi_CloseDriver and kdi_ThreadStop prototypes.
|
|
*
|
|
* Rev 1.22 06 Dec 1993 14:43:32 BOBLEHMA
|
|
* Added vm_handle parameter to kdi_LockInt.
|
|
*
|
|
* Rev 1.21 03 Dec 1993 15:17:04 KEVINKES
|
|
* Added NT structures.
|
|
*
|
|
* Rev 1.20 02 Dec 1993 18:26:50 BOBLEHMA
|
|
* Removed system_data from kdi_StartRequest and kdi_ThreadStart.
|
|
*
|
|
* Rev 1.19 02 Dec 1993 16:38:08 BOBLEHMA
|
|
* Removed system_data parameter from kdi_ThreadRun.
|
|
*
|
|
* Rev 1.18 02 Dec 1993 14:00:02 BOBLEHMA
|
|
* Added function prototypes kdi_HardwareIntHandler and kdi_TimerIntHandler.
|
|
* Added kdi_context variables in_callback and thread_selected, removed notify_sem.
|
|
*
|
|
* Rev 1.17 01 Dec 1993 10:16:54 BOBLEHMA
|
|
* Added caller_vm parameter to the OpenDriver function.
|
|
* Added abort_level to BufferToDMABuffer and DMABufferToBuffer.
|
|
* Added machine_info field to kdi_system_data.
|
|
*
|
|
* Rev 1.16 22 Nov 1993 12:33:30 KEVINKES
|
|
* Added debug_level.
|
|
*
|
|
* Rev 1.15 19 Nov 1993 16:23:56 CHETDOUG
|
|
* Changed old_dma_direction from bool to ubyte
|
|
*
|
|
* Rev 1.14 17 Nov 1993 15:56:38 CHETDOUG
|
|
* Added kdi_EnterSetupMode
|
|
*
|
|
* Rev 1.13 15 Nov 1993 12:52:14 BOBLEHMA
|
|
* Added kdi_GetValidInterrupts() prototype.
|
|
*
|
|
* Rev 1.12 12 Nov 1993 18:01:32 BOBLEHMA
|
|
* Added new fields to the KDI context: notify_sem, shutdown_sem,
|
|
* thread_shutdown, abort_level. Removed fields thread_abort, semaphore.
|
|
* Added parameter to CreateSemaphore prototype.
|
|
*
|
|
* Rev 1.11 09 Nov 1993 15:28:04 BOBLEHMA
|
|
* Changed kdi_QIC117CheckIRQ function to return a boolean.
|
|
* Changed kdi_RemoveRequest to return void.
|
|
* Changed kdi_Initialize, added error flag parameters.
|
|
* Added error flags to the system_data structure.
|
|
*
|
|
* Rev 1.10 08 Nov 1993 15:14:06 BOBLEHMA
|
|
* Added define for STACK_INIT and ALLOC_PAGE.
|
|
*
|
|
* Rev 1.9 08 Nov 1993 10:33:08 BOBLEHMA
|
|
* Added a critical section count variable cs_count to prevent
|
|
* problems with nesting kdi_Disable and kdi_Enable functions.
|
|
*
|
|
* Rev 1.8 28 Oct 1993 10:33:24 BOBLEHMA
|
|
* Code cleanup.
|
|
*
|
|
* Rev 1.7 27 Oct 1993 16:02:32 BOBLEHMA
|
|
* Changed the kdi_ThreadSleep interface.
|
|
*
|
|
* Rev 1.6 27 Oct 1993 12:24:42 BOBLEHMA
|
|
* Added two new KDI request queues, PROCESS and DONE.
|
|
*
|
|
* Rev 1.5 26 Oct 1993 10:49:32 BOBLEHMA
|
|
* Added thread_abort flag and changed ThreadStop parameters.
|
|
*
|
|
* Rev 1.4 25 Oct 1993 17:38:20 BOBLEHMA
|
|
* Changed Trakker functions to return a dStatus.
|
|
*
|
|
* Rev 1.3 25 Oct 1993 09:43:58 KEVINKES
|
|
* Added interrupt_pending to kdi context.
|
|
*
|
|
* Rev 1.2 20 Oct 1993 12:04:42 BOBLEHMA
|
|
* Added compression programDMA and haltDMA prototypes.
|
|
*
|
|
* Rev 1.1 15 Oct 1993 16:18:26 BOBLEHMA
|
|
* Added MooreGlobalDataSpace and config_port_shadow data areas.
|
|
*
|
|
*****************************************************************************/
|
|
|
|
/* COMMENTS: *****************************************************************
|
|
*
|
|
* DEFINITIONS: *************************************************************/
|
|
|
|
#ifdef DRV_WIN
|
|
/******************************************************************************
|
|
* S C H E D U L E R B O O S T V A L U E S
|
|
*****************************************************************************/
|
|
|
|
#define NO_BOOST 0x00000000
|
|
#define RESERVED_LOW_BOOST 0x00000001
|
|
#define CUR_RUN_VM_BOOST 0x00000004
|
|
#define LOW_PRI_DEVICE_BOOST 0x00000010
|
|
#define HIGH_PRI_DEVICE_BOOST 0x00001000
|
|
#define CRITICAL_SECTION_BOOST 0x00100000
|
|
#define TIME_CRITICAL_BOOST 0x00400000
|
|
#define RESERVED_HIGH_BOOST 0x40000000
|
|
|
|
/****************************************************
|
|
*
|
|
* Flags for other page allocator calls
|
|
*
|
|
* NOTE: HIGH 8 BITS (bits 24-31) are reserved
|
|
*
|
|
***************************************************/
|
|
|
|
#define PAGEUSEALIGN 0x00000002
|
|
#define PAGECONTIG 0x00000004
|
|
#define PAGEFIXED 0x00000008
|
|
|
|
#endif
|
|
|
|
/* Thread has completed all requests */
|
|
#define IDLE (dUDWord)0 /* thread idle value */
|
|
|
|
#define INVALID_ADDRESS (dVoidPtr)0xFFFFFFFF /* unknown selector return */
|
|
|
|
/* Page allocation defines */
|
|
#define DMA_PAGES (dUWord)8
|
|
#define DMA_ALIGN (dUWord)0x07
|
|
#define DMA_FLAGS (dUDWord)PAGEUSEALIGN+PAGECONTIG+PAGEFIXED
|
|
|
|
#define FORMAT_PAGES (dUWord)1
|
|
#define FORMAT_ALIGN (dUWord)0
|
|
#define FORMAT_FLAGS (dUDWord)PAGEFIXED
|
|
|
|
#define JUMBO_PAGE_SIZE (dUWord)0x1000 /* size of each page */
|
|
#define JUMBO_DMA_SIZE DMA_PAGES * JUMBO_PAGE_SIZE
|
|
|
|
/* semaphore flags */
|
|
#define NO_TOKENS 0 /* initial semaphore tokens, Wait immediate */
|
|
#define ONE_TOKEN 1 /* Wait after one passes the Wait guard */
|
|
|
|
/* internal stack defines */
|
|
#define STACK_INIT (dUByte)0xCC /* data to fill stack on initialize */
|
|
#define STACK_SIZE (dUWord)2048 /* size of the thread stack */
|
|
|
|
#define MAX_BOARDS (dUByte)7 /* max number of boards, TC15 shadows */
|
|
#define MAX_BUFFERS (dUByte)4 /* max number of DMA or Trakker buffers */
|
|
#define MAX_CONTEXTS (dUByte)16 /* max number of configured drives */
|
|
#define MAX_REQUESTS (dUByte)24 /* max number of requests in a queue */
|
|
#define MIN_BUFFERS (dUByte)2 /* min number of DMA or Trakker buffers */
|
|
|
|
/*
|
|
* Structure initialize defines
|
|
*/
|
|
#define NULL_FORMAT_HANDLE (dUDWord)0
|
|
#define NULL_KDI_HANDLE (dUWord)0xFFFF
|
|
#define NULL_SEMAPHORE (dUDWord)0
|
|
#define NULL_STACK_PTR (dUDWord)0
|
|
#define NULL_TIMEOUT (dUDWord)0
|
|
|
|
|
|
typedef enum E_BufferType {
|
|
SYSTEM_BUFFERS = 1, /* Indicates the system DMA buffers */
|
|
TRAKKER_BUFFERS = 2 /* Indicates the internal Trakker buffers */
|
|
} BufferTypeEnum, *BufferTypeEnumPtr;
|
|
|
|
|
|
typedef enum E_ConfigPort {
|
|
PORT_SHADOW_0 = 0, /* index numbers for port shadowing */
|
|
PORT_SHADOW_1 = 1, /* the number of shadows is given */
|
|
PORT_SHADOW_2 = 2, /* by the MAX_BOARDS define */
|
|
PORT_SHADOW_3 = 3,
|
|
PORT_SHADOW_4 = 4,
|
|
PORT_SHADOW_5 = 5,
|
|
PORT_SHADOW_6 = 6
|
|
} ConfigPortEnum, *ConfigPortEnumPtr;
|
|
|
|
|
|
typedef enum E_WakeupType {
|
|
HARDWARE_WAKEUP = 0, /* Indicates a wakeup from HW interrupt */
|
|
TIME_OUT_WAKEUP = 1 /* Indicates a wakeup from a timeout */
|
|
} WakeupTypeEnum, *WakeupTypeEnumPtr;
|
|
|
|
|
|
typedef enum E_XferType {
|
|
NEEDS_BUFFER = 1,
|
|
COPY_BUFFER_IN = 2, /* copy data to the DMA */
|
|
COPY_BUFFER_OUT = 4 /* copy data from the DMA */
|
|
} XferTypeEnum, *XferTypeEnumPtr;
|
|
|
|
/* Miscellaneous defines. */
|
|
#define NANOSEC_PER_MILLISEC 0x0004f2f0
|
|
|
|
|
|
/* STRUCTURES: **************************************************************/
|
|
|
|
#ifdef DRV_WIN
|
|
|
|
typedef struct S_DMABufferItem {
|
|
dBoolean used; /* buffer in use flag */
|
|
dVoidPtr linear;
|
|
dVoidPtr physical;
|
|
#ifdef WIN40
|
|
dUDWord handle; /* buffer handle for WIN40 */
|
|
#endif
|
|
} DMABufferItem, *DMABufferItemPtr;
|
|
|
|
|
|
typedef struct S_DMABufferPool {
|
|
dUWord total_allocated; /* amount of buffers allocated */
|
|
DMABufferItem pool[MAX_BUFFERS]; /* pool of possible buffers */
|
|
} DMABufferPool, *DMABufferPoolPtr;
|
|
|
|
|
|
|
|
|
|
typedef struct S_RequestItem* RequestItemPtr;
|
|
typedef struct S_RequestItem {
|
|
dVoidPtr frb_ptr; /* ADI request data */
|
|
dUDWord cmd_id; /* request command id */
|
|
RequestItemPtr next; /* next request in the queue */
|
|
} RequestItem;
|
|
|
|
|
|
typedef struct S_RequestQueue {
|
|
RequestItemPtr head;
|
|
RequestItemPtr tail;
|
|
RequestItem queue[MAX_REQUESTS];
|
|
} RequestQueue, *RequestQueuePtr;
|
|
|
|
|
|
typedef struct S_KDIContext {
|
|
RequestQueue done; /* completed requested */
|
|
RequestQueue process; /* requests ready for CQD */
|
|
RequestQueue request; /* requests needing DMA buffers */
|
|
RequestQueue frb; /* requests ready to copy to the ADI */
|
|
|
|
dBoolean thread_active; /* indicates if the thread is running */
|
|
dBoolean thread_selected; /* indicates if the IRQ is hooked */
|
|
dUDWord thread_sp; /* thread stack pointer */
|
|
dUDWord thread_waiting;
|
|
|
|
dUByte abort_level; /* flag CQD for an abort request */
|
|
dBoolean in_callback; /* flag so the callback isn't reentered*/
|
|
dBoolean in_thread; /* flag so the thread isn't reentered */
|
|
dBoolean interrupt_event; /* flag if the interrupt happened */
|
|
dBoolean interrupt_pending;
|
|
dUByte old_dma_direction;/* keep track of dma direction for FC20*/
|
|
|
|
dUDWord format_handle; /* handle of the format buffer */
|
|
dUDWord shutdown_sem; /* abort thread wait semaphore */
|
|
dUDWord timeout_handle; /* handle of the timeout request */
|
|
dStatus int_status; /* status of clear interrupt */
|
|
|
|
DriveParms drive; /* HIO parameters */
|
|
|
|
DMABufferPoolPtr buffer_ptr; /* pointer to buffer pool */
|
|
DMABufferPool trak_buffers; /* Trakker buffer pool */
|
|
|
|
MooreDynamicGlobalSpace moore_data; /* Trakker global data */
|
|
|
|
dUByte stack_space[STACK_SIZE]; /* thread stack space */
|
|
} KDIContext, *KDIContextPtr;
|
|
|
|
|
|
typedef struct S_ContextItem* ContextItemPtr;
|
|
typedef struct S_ContextItem {
|
|
dUWord handle; /* handle of the context (drive handle)*/
|
|
dVoidPtr cqd; /* pointer to CQD context */
|
|
KDIContextPtr kdi; /* pointer to KDI context */
|
|
ContextItemPtr next; /* pointer to the next context */
|
|
} ContextItem;
|
|
|
|
|
|
typedef struct S_ContextList {
|
|
ContextItemPtr head; /* start of the context list */
|
|
ContextItemPtr tail; /* end of the context list */
|
|
ContextItem list[MAX_CONTEXTS];
|
|
} ContextList, *ContextListPtr;
|
|
|
|
|
|
|
|
|
|
typedef struct S_SystemData {
|
|
dBoolean open; /* has the KDI been opened? */
|
|
dUByte machine_info;
|
|
dUWord cs_count; /* critical section counter */
|
|
dVoidPtr callback; /* ADI callback function */
|
|
dVoidPtr phys_callback; /* Physical address of callback fct */
|
|
dUDWord sp; /* system stack pointer */
|
|
dUDWord caller_vm; /* VM handle of the caller */
|
|
dBoolean interrupt_masked; /* flag if interrupts are masked */
|
|
|
|
dUByte config_port_shadow[MAX_BOARDS];
|
|
DMABufferPool dma_buffers; /* DMA buffer pool */
|
|
MooreDynamicGlobalSpace moore_data; /* Trakker global data */
|
|
|
|
dUDWord fatal_error; /* Hold fatal driver init errors */
|
|
dUDWord int13_error; /* Hold int 13 hook error */
|
|
} SystemData, *SystemDataPtr;
|
|
|
|
|
|
|
|
|
|
extern SystemData kdi_system_data;
|
|
extern ContextList kdi_context_list;
|
|
extern dUDWord kdi_MooreData;
|
|
|
|
#endif
|
|
|
|
|
|
#ifdef DRV_NT
|
|
|
|
/* Define the maximum number of controllers and floppies per controller */
|
|
/* that this driver will support. */
|
|
|
|
/* The number of floppies per controller is fixed at 4, since the */
|
|
/* controllers don't have enough bits to select more than that (and */
|
|
/* actually, many controllers will only support 2). The number of */
|
|
/* controllers per machine is arbitrary; 3 should be more than enough. */
|
|
|
|
#define MAXIMUM_CONTROLLERS_PER_MACHINE 3
|
|
|
|
/* MACROS to access the controller. Note that the *_PORT_UCHAR macros */
|
|
/* work on all machines, whether the I/O ports are separate or in */
|
|
/* memory space. */
|
|
|
|
#define READ_CONTROLLER( Address ) \
|
|
READ_PORT_UCHAR( ( PUCHAR )Address )
|
|
|
|
#define WRITE_CONTROLLER( Address, Value ) \
|
|
WRITE_PORT_UCHAR( ( PUCHAR )Address, ( UCHAR )Value )
|
|
|
|
|
|
/* Define the maximum number of tape drives per controller */
|
|
/* that this driver will support. */
|
|
|
|
/* The number of tape drives per controller is fixed at 1, since the */
|
|
/* software select schemes generally work for one drive only. */
|
|
|
|
#define MAXIMUM_TAPE_DRIVES_PER_CONTROLLER 1
|
|
|
|
|
|
|
|
/* This structure holds all of the configuration data. It is filled in */
|
|
/* by FlGetConfigurationInformation(), which gets the information from */
|
|
/* the configuration manager or the hardware architecture layer (HAL). */
|
|
|
|
typedef struct s_controllerInfo {
|
|
dUByte clk_48mhz;
|
|
dUByte floppyEnablerApiSupported;
|
|
dUByte dmaDirection;
|
|
PDEVICE_OBJECT apiDeviceObject;
|
|
} ControllerInfo;
|
|
|
|
typedef struct S_ConfigControllerData {
|
|
PHYSICAL_ADDRESS original_base_address;
|
|
dUDWord controller_base_address;
|
|
PADAPTER_OBJECT adapter_object;
|
|
dUDWord span_of_controller_address;
|
|
dUDWord number_of_map_registers;
|
|
dUDWord bus_number;
|
|
dUDWord original_irql;
|
|
dUDWord original_vector;
|
|
dUDWord original_dma_channel;
|
|
PKEVENT controller_event;
|
|
dSDWord actual_controller_number;
|
|
INTERFACE_TYPE interface_type;
|
|
KINTERRUPT_MODE interrupt_mode;
|
|
KAFFINITY processor_mask;
|
|
KIRQL controller_irql;
|
|
dBoolean save_float_state;
|
|
dBoolean sharable_vector;
|
|
dBoolean mapped_address;
|
|
dBoolean ok_to_use_this_controller;
|
|
dUDWord controller_vector;
|
|
dUByte number_of_tape_drives;
|
|
ControllerInfo controller_data;
|
|
} ConfigControllerData, *ConfigControllerDataPtr;
|
|
|
|
typedef struct S_ConfigData {
|
|
dUDWord floppy_tape_count;
|
|
dUByte number_of_controllers;
|
|
ConfigControllerData controller[MAXIMUM_CONTROLLERS_PER_MACHINE];
|
|
} ConfigData, *ConfigDataPtr;
|
|
|
|
typedef struct S_KdiContext {
|
|
KEVENT interrupt_event;
|
|
KEVENT allocate_adapter_channel_event;
|
|
HANDLE controller_event_handle;
|
|
PKEVENT controller_event;
|
|
PKINTERRUPT interrupt_object;
|
|
dVoidPtr map_register_base;
|
|
dSDWord actual_controller_number;
|
|
PADAPTER_OBJECT adapter_object;
|
|
dUDWord number_of_map_registers;
|
|
PDEVICE_OBJECT device_object;
|
|
dUDWord base_address;
|
|
dSDWord floppy_controller_event_timer;
|
|
dVoidPtr cqd_context;
|
|
dUByte interface_type;
|
|
dBoolean own_floppy_event;
|
|
dBoolean current_interrupt;
|
|
dBoolean interrupt_pending;
|
|
dStatus interrupt_status;
|
|
dBoolean adapter_locked;
|
|
LIST_ENTRY list_entry;
|
|
KSEMAPHORE request_semaphore;
|
|
KSPIN_LOCK list_spin_lock;
|
|
KEVENT clear_queue_event;
|
|
dBoolean unloading_driver;
|
|
dUByte number_of_tape_drives;
|
|
dBoolean queue_empty;
|
|
dBoolean clear_queue;
|
|
dBoolean abort_requested;
|
|
dUDWord error_sequence;
|
|
dUDWord tape_number;
|
|
ControllerInfo controller_data;
|
|
} KdiContext, *KdiContextPtr;
|
|
|
|
|
|
typedef struct S_QICDeviceContext {
|
|
PDEVICE_OBJECT device_object;
|
|
KdiContextPtr kdi_context;
|
|
} QICDeviceContext, *QICDeviceContextPtr;
|
|
|
|
|
|
#endif
|
|
|
|
/* PROTOTYPES: **************************************************************/
|
|
|
|
#ifdef DRV_WIN
|
|
/*---------------------------------------------------------------------API--*/
|
|
dVoid kdi_Initialize
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
dUDWord fatal_error,
|
|
dUDWord int13_error
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_MainEntry
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord caller_vm,
|
|
dUDWord command,
|
|
dUDWord word_one,
|
|
dUDWord word_two,
|
|
dVoidPtr buffer
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_OpenDriver
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
SystemDataPtr system_data,
|
|
ContextListPtr context_list,
|
|
dVoidPtr callback_ptr,
|
|
dUDWord caller_vm
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_CloseDriver
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
SystemDataPtr system_data,
|
|
ContextListPtr context_list,
|
|
dUWord stop_mode
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_SendDriverCmd
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
SystemDataPtr system_data,
|
|
ContextListPtr context_list,
|
|
dVoidPtr cmd_data_ptr,
|
|
dUDWord command_id
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_GetAsyncStatus
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
SystemDataPtr system_data,
|
|
ContextListPtr context_list,
|
|
dVoidPtr cmd_data_ptr
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_CopyBuffer
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
SystemDataPtr system_data,
|
|
ContextListPtr context_list,
|
|
dVoidPtr cmd_data_ptr
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
/*--------------------------------------------------Data Structure Support--*/
|
|
dVoid kdi_InitBufferItems
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
BufferTypeEnum buffer_type,
|
|
DMABufferPoolPtr buffer_pool
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_AssignBuffer
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
KDIContextPtr kdi_context,
|
|
ADIRequestHdrPtr frb
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_ReturnBuffer
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
KDIContextPtr kdi_context,
|
|
ADIRequestHdrPtr frb
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUWord kdi_GetDataSize
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord command,
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
XferTypeEnumPtr flags,
|
|
dUWordPtr frb_size
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_InitContextItems
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ContextListPtr context_list
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_OpenContext
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ContextListPtr context_list,
|
|
dUWord handle,
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
ContextItemPtr* context
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_CloseContext
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ContextListPtr context_list,
|
|
ContextItemPtr context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_FindContext
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ContextListPtr context_list,
|
|
dUWord handle,
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
ContextItemPtr* context
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_InitializeContext
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
SystemDataPtr system_data,
|
|
KDIContextPtr kdi_context,
|
|
DriveParmsPtr drive
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_InitRequestItems
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
RequestQueuePtr request_queue
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_AddRequest
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
RequestQueuePtr request_queue,
|
|
dVoidPtr data,
|
|
dUDWord command_id
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_RemoveRequest
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
RequestQueuePtr request_queue
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_AssignFRB
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ADIRequestHdrPtr frb,
|
|
dVoidPtr kdi_frb
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_ReturnFRB
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ADIRequestHdrPtr frb,
|
|
dVoidPtr kdi_frb
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
/*----------------------------------------------------------Thread Manager--*/
|
|
dVoid kdi_StartRequest
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ContextItemPtr context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_Callback
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_Hardware
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_HardwareIntHandler
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_Timer
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_TimerIntHandler
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_ThreadStart
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ContextItemPtr context,
|
|
dUDWord thread_sp
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_ThreadStop
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
SystemDataPtr system_data,
|
|
ContextItemPtr context,
|
|
dUWord stop_mode
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_ThreadRun
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ContextItemPtr context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
WakeupTypeEnum kdi_ThreadSleep
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
dUDWordPtr thread_sp
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_ThreadWakeup
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord thread_sp,
|
|
WakeupTypeEnum wakeup_type
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_NotifyProcess
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord semaphore
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_ProcessQueue
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ContextItemPtr context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_ProcessSleep
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
dUDWordPtr semaphore
|
|
|
|
);
|
|
|
|
|
|
/*-----------------------------------------------------------VMM Utilities--*/
|
|
dVoid kdi_Disable
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_Enable
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUByte kdi_Inp
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord reg
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUWord kdi_Inpw
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord reg
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_Outp
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord reg,
|
|
dUByte byte
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_Outpw
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord reg,
|
|
dUWord word
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoidPtr kdi_HeapAlloc
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord alloc_size
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_HeapFree
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr address
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoidPtr kdi_MapFlat
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
dVoidPtr address
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUDWord kdi_PageAlloc
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
dUWord number_pages,
|
|
dUWord mem_alignment,
|
|
dUDWord alloc_flags,
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
dVoidPtr linear,
|
|
dVoidPtr physical
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_PageFree
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord handle
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUDWord kdi_CreateSemaphore
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord token_count
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_DestroySemaphore
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord sem_handle
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_SignalSemaphore
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord sem_handle
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_WaitSemaphore
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord sem_handle
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_CancelTimeOut
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord timeout
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUDWord kdi_SetGlobalTimeOut
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord timeout,
|
|
dVoid (*function)(),
|
|
dVoidPtr refdata
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_NotifyADI
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord command_id,
|
|
dStatus command_status,
|
|
dVoidPtr callback
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_PostEOI
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUByte kdi_GetMachineInfo
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_CallPriorityVMEvent
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
dUDWord priority,
|
|
dVoid (*callback)(),
|
|
dVoidPtr refdata
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_VTDBeginMinIntPeriod
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord period
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_VTDEndMinIntPeriod
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord period
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_CopyPageTable
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
dVoidPtr linear_addr,
|
|
dUDWordPtr physical_addr
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
/*-------------------------------------------------------Hardware Controls--*/
|
|
dVoid kdi_InstallDriver
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
ContextItemPtr context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_DeinstallDriver
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
ContextItemPtr context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_LockFloppy
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_UnlockFloppy
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_LockInt
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
dUDWord int_number,
|
|
dVoid (*function)(),
|
|
dVoidPtr context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_UnlockInt
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord int_number,
|
|
dVoid (*function)()
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_VPICD_PhysicallyMask
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_VPICD_PhysicallyUnmask
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_ChangeVMIrqMask
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord new_mask
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUWord kdi_GetVMPhysicalMask
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_ProcessInterrupt
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUWord kdi_GetValidInterrupts
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord VM_Handle
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_PgmDMA
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr dma_struc
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUWord kdi_CompressionHaltDMA
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
KDIContextPtr kdi_context,
|
|
KDIPgmDMAPtr dma
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUWord kdi_StopDMA
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord dma_channel,
|
|
dUDWord xfer16bits
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_CompressionPgmDMA
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
KDIContextPtr kdi_context,
|
|
KDIPgmDMAPtr dma
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
/*---------------------------------------------------------------------MCA--*/
|
|
dVoid kdi_SetConfigPort
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord base_address,
|
|
dUByte or_value, /* Value to bit-wise OR in with config value */
|
|
dUByte and_value /* Value to bit-wise AND in with config value */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_MCAEnableDMA
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
DriveParmsPtr drive_parms,
|
|
dUByte dma_request,
|
|
dUByte dma_enable
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_IOMcaAnd
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord port,
|
|
dUByte data
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_IOMcaOr
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord port,
|
|
dUByte data
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
/*-------------------------------------------------------------Compression--*/
|
|
dVoid kdi_CompressionEnableDMA
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
DriveParmsPtr drive_parms
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_CompressionDisableDMA
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
DriveParmsPtr drive_parms
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
/*---------------------------------------------------------------------IRQ--*/
|
|
dVoid kdi_QIC117EnableIRQ
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
DriveParmsPtr drive_parms
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_QIC117DisableIRQ
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
DriveParmsPtr drive_parms
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dBoolean kdi_QIC117CheckIRQ
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr kdi_context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_QIC117EnableDMA
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
DriveParmsPtr drive_parms
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
/*--------------------------------------------------------------Trakker IO--*/
|
|
dVoid kdi_BiDataRead
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr buffer,
|
|
dUWord count
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_BiDataWriteFull
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr buffer,
|
|
dUWord cnt
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUByte kdi_FullCtlRead
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord reg
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_FullCtlWrite
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord reg,
|
|
dUByte databyte
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUByte kdi_SelfCtlRead
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord reg
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_SelfCtlWrite
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord reg,
|
|
dUByte databyte
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_UniBiDataWriteFull
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr buffer,
|
|
dUWord cnt
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_UniBiDataWriteSelf
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr buffer,
|
|
dUWord cnt
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_UniDataRead
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr buffer,
|
|
dUWord cnt
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
/*-----------------------------------------------------------------Trakker--*/
|
|
|
|
dVoid kdi_FindIRQ
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
dUBytePtr irr
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dUWord kdi_AgressiveFindIRQ
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord vm_handle,
|
|
dUWord irq_num,
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
dUBytePtr polarity
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_AgressiveFindIRQ_ISR
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
|
|
dStatus kdi_FlushFIFOX
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
|
|
dUByte kdi_ReadReg
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord reg
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_ReceiveData
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr data, /* The data to be moved */
|
|
dUWord datasize, /* The number of bytes to be moved */
|
|
dUWord fifo_enable
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_SendData
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr data, /* The data to be moved */
|
|
dUWord datasize, /* The number of bytes to be moved */
|
|
dUWord fifo_enable
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_SetFIFOXAddress
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUDWord trakker_address
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_SwitchToData
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord direction, /* SEND_DATA or RECEIVE_DATA */
|
|
dUWord fifo_enable /* MODEI_FIFOX_EN or 0 (to enable FIFO to memory xfer or not); */
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dVoid kdi_WriteReg
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dUWord reg,
|
|
dUByte databyte
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
|
|
dStatus kdi_XferRetry
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr data,
|
|
dUDWord trakker_address,
|
|
dUWord block_size,
|
|
dUByte direction,
|
|
dBoolean in_format
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
/*-----------------------------------------------------------------FC20--*/
|
|
dVoid kdi_EnterSetupMode
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
dUWord base_address,
|
|
dUByte *sequence
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
#endif
|
|
|
|
#ifdef DRV_NT
|
|
|
|
NTSTATUS DriverEntry
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
PDRIVER_OBJECT driver_object_ptr,
|
|
PUNICODE_STRING registry_path
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
NTSTATUS kdi_DispatchDeviceControl
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
PDEVICE_OBJECT device_object_ptr,
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
PIRP irp
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
dBoolean kdi_Hardware
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
PKINTERRUPT interrupt,
|
|
dVoidPtr context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
dVoid kdi_DeferredProcedure
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
PKDPC dpc,
|
|
dVoidPtr deferred_context,
|
|
dVoidPtr system_argument_1,
|
|
dVoidPtr system_argument_2
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
dVoid kdi_UnloadDriver
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
PDRIVER_OBJECT driver_object
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
dVoid kdi_ThreadRun
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
KdiContextPtr kdi_context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
IO_ALLOCATION_ACTION kdi_AllocateAdapterChannel
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
PDEVICE_OBJECT device_object,
|
|
PIRP irp,
|
|
dVoidPtr map_register_base,
|
|
dVoidPtr context
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
NTSTATUS kdi_ConfigCallBack
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
dVoidPtr context,
|
|
PUNICODE_STRING path_name,
|
|
INTERFACE_TYPE bus_type,
|
|
dUDWord bus_number,
|
|
PKEY_VALUE_FULL_INFORMATION *bus_information,
|
|
CONFIGURATION_TYPE controller_type,
|
|
dUDWord controller_number,
|
|
PKEY_VALUE_FULL_INFORMATION *controller_information,
|
|
CONFIGURATION_TYPE peripheral_type,
|
|
dUDWord peripheral_number,
|
|
PKEY_VALUE_FULL_INFORMATION *peripheral_information
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
NTSTATUS kdi_GetConfigurationInformation
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
ConfigDataPtr *config_data_ptr_ptr
|
|
|
|
);
|
|
|
|
NTSTATUS kdi_InitializeController
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ConfigDataPtr config_data_ptr,
|
|
dUByte controller_number,
|
|
PDRIVER_OBJECT driver_object_ptr,
|
|
PUNICODE_STRING registry_path_ptr
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
dBoolean kdi_ReportResources
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
PDRIVER_OBJECT driver_object,
|
|
PDEVICE_OBJECT device_object,
|
|
ConfigDataPtr config_data,
|
|
dUByte controller_number
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
NTSTATUS kdi_InitializeDrive
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
ConfigDataPtr config_data,
|
|
KdiContextPtr kdi_context,
|
|
dVoidPtr cqd_context,
|
|
dUByte controller_num,
|
|
PDRIVER_OBJECT driver_object_ptr,
|
|
PUNICODE_STRING registry_path_ptr
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
dUDWord kdi_GetControllerBase
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
INTERFACE_TYPE bus_type,
|
|
dUDWord bus_number,
|
|
PHYSICAL_ADDRESS io_address,
|
|
dUDWord number_of_bytes,
|
|
dBoolean in_io_space,
|
|
dBooleanPtr mapped_address
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
NTSTATUS
|
|
kdi_TranslateError
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
PDEVICE_OBJECT device_object,
|
|
dStatus return_value
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
NTSTATUS kdi_ClearIO
|
|
(
|
|
/* INPUT PARAMETERS: */
|
|
|
|
PIRP irp
|
|
|
|
/* UPDATE PARAMETERS: */
|
|
|
|
/* OUTPUT PARAMETERS: */
|
|
|
|
);
|
|
|
|
NTSTATUS q117MapStatus(
|
|
dStatus status
|
|
);
|
|
|
|
dVoid
|
|
q117LogError(
|
|
PDEVICE_OBJECT device_object,
|
|
dUDWord sequence_number,
|
|
dUByte major_function_code,
|
|
dUByte retry_count,
|
|
dUDWord unique_error_value,
|
|
NTSTATUS final_status,
|
|
NTSTATUS specific_IO_status
|
|
);
|
|
|
|
#endif
|
|
|
|
dStatus kdi_FloppyEnabler(
|
|
PDEVICE_OBJECT device_object,
|
|
int ioctl,
|
|
void *data
|
|
);
|
|
|
|
#ifdef ALLOC_PRAGMA
|
|
#pragma alloc_text(INIT,DriverEntry)
|
|
#pragma alloc_text(INIT,kdi_ConfigCallBack)
|
|
#pragma alloc_text(INIT,kdi_GetConfigurationInformation)
|
|
#pragma alloc_text(INIT,kdi_InitializeController)
|
|
#pragma alloc_text(INIT,kdi_ReportResources)
|
|
#pragma alloc_text(INIT,kdi_InitializeDrive)
|
|
#endif
|
|
|