2005-04-17 02:20:36 +04:00
/* BSDI dptsig.h,v 1.7 1998/06/03 19:15:00 karels Exp */
/*
* Copyright ( c ) 1996 - 1999 Distributed Processing Technology Corporation
* All rights reserved .
*
* Redistribution and use in source form , with or without modification , are
* permitted provided that redistributions of source code must retain the
* above copyright notice , this list of conditions and the following disclaimer .
*
* This software is provided ` as is ' by Distributed Processing Technology and
* any express or implied warranties , including , but not limited to , the
* implied warranties of merchantability and fitness for a particular purpose ,
* are disclaimed . In no event shall Distributed Processing Technology be
* liable for any direct , indirect , incidental , special , exemplary or
* consequential damages ( including , but not limited to , procurement of
* substitute goods or services ; loss of use , data , or profits ; or business
* interruptions ) however caused and on any theory of liability , whether in
* contract , strict liability , or tort ( including negligence or otherwise )
* arising in any way out of the use of this driver software , even if advised
* of the possibility of such damage .
*
*/
# ifndef __DPTSIG_H_
# define __DPTSIG_H_
# ifdef _SINIX_ADDON
# include "dpt.h"
# endif
/* DPT SIGNATURE SPEC AND HEADER FILE */
/* Signature Version 1 (sorry no 'A') */
/* to make sure we are talking the same size under all OS's */
typedef unsigned char sigBYTE ;
typedef unsigned short sigWORD ;
2008-05-02 03:07:27 +04:00
typedef unsigned int sigINT ;
2005-04-17 02:20:36 +04:00
/*
* use sigWORDLittleEndian for :
* dsCapabilities
* dsDeviceSupp
* dsAdapterSupp
* dsApplication
* use sigLONGLittleEndian for :
* dsOS
* so that the sig can be standardised to Little Endian
*/
# if (defined(_DPT_BIG_ENDIAN))
# define sigWORDLittleEndian(x) ((((x)&0xFF)<<8)|(((x)>>8)&0xFF))
# define sigLONGLittleEndian(x) \
( ( ( ( x ) & 0xFF ) < < 24 ) | \
( ( ( x ) & 0xFF00 ) < < 8 ) | \
( ( ( x ) & 0xFF0000L ) > > 8 ) | \
( ( ( x ) & 0xFF000000L ) > > 24 ) )
# else
# define sigWORDLittleEndian(x) (x)
# define sigLONGLittleEndian(x) (x)
# endif
/* must make sure the structure is not word or double-word aligned */
/* --------------------------------------------------------------- */
/* Borland will ignore the following pragma: */
/* Word alignment is OFF by default. If in the, IDE make */
/* sure that Options | Compiler | Code Generation | Word Alignment */
/* is not checked. If using BCC, do not use the -a option. */
# ifndef NO_PACK
# if defined (_DPT_AIX)
# pragma options align=packed
# else
# pragma pack(1)
# endif /* aix */
# endif
/* For the Macintosh */
2005-07-27 22:45:17 +04:00
# ifdef STRUCTALIGNMENTSUPPORTED
2005-04-17 02:20:36 +04:00
# pragma options align=mac68k
# endif
/* Current Signature Version - sigBYTE dsSigVersion; */
/* ------------------------------------------------------------------ */
# define SIG_VERSION 1
/* Processor Family - sigBYTE dsProcessorFamily; DISTINCT VALUES */
/* ------------------------------------------------------------------ */
/* What type of processor the file is meant to run on. */
/* This will let us know whether to read sigWORDs as high/low or low/high. */
2008-06-13 18:38:00 +04:00
# define PROC_INTEL 0x00 /* Intel 80x86/ia64 */
2005-04-17 02:20:36 +04:00
# define PROC_MOTOROLA 0x01 /* Motorola 68K */
# define PROC_MIPS4000 0x02 /* MIPS RISC 4000 */
# define PROC_ALPHA 0x03 /* DEC Alpha */
# define PROC_POWERPC 0x04 /* IBM Power PC */
# define PROC_i960 0x05 /* Intel i960 */
# define PROC_ULTRASPARC 0x06 /* SPARC processor */
/* Specific Minimim Processor - sigBYTE dsProcessor; FLAG BITS */
/* ------------------------------------------------------------------ */
/* Different bit definitions dependent on processor_family */
/* PROC_INTEL: */
# define PROC_8086 0x01 /* Intel 8086 */
# define PROC_286 0x02 /* Intel 80286 */
# define PROC_386 0x04 /* Intel 80386 */
# define PROC_486 0x08 /* Intel 80486 */
# define PROC_PENTIUM 0x10 /* Intel 586 aka P5 aka Pentium */
# define PROC_SEXIUM 0x20 /* Intel 686 aka P6 aka Pentium Pro or MMX */
2008-06-13 18:38:00 +04:00
# define PROC_IA64 0x40 /* Intel IA64 processor */
2005-04-17 02:20:36 +04:00
/* PROC_i960: */
# define PROC_960RX 0x01 /* Intel 80960RC/RD */
# define PROC_960HX 0x02 /* Intel 80960HA/HD/HT */
/* PROC_MOTOROLA: */
# define PROC_68000 0x01 /* Motorola 68000 */
# define PROC_68010 0x02 /* Motorola 68010 */
# define PROC_68020 0x04 /* Motorola 68020 */
# define PROC_68030 0x08 /* Motorola 68030 */
# define PROC_68040 0x10 /* Motorola 68040 */
/* PROC_POWERPC */
# define PROC_PPC601 0x01 /* PowerPC 601 */
# define PROC_PPC603 0x02 /* PowerPC 603 */
# define PROC_PPC604 0x04 /* PowerPC 604 */
/* PROC_MIPS4000: */
# define PROC_R4000 0x01 /* MIPS R4000 */
/* Filetype - sigBYTE dsFiletype; DISTINCT VALUES */
/* ------------------------------------------------------------------ */
# define FT_EXECUTABLE 0 /* Executable Program */
# define FT_SCRIPT 1 /* Script/Batch File??? */
# define FT_HBADRVR 2 /* HBA Driver */
# define FT_OTHERDRVR 3 /* Other Driver */
# define FT_IFS 4 /* Installable Filesystem Driver */
# define FT_ENGINE 5 /* DPT Engine */
# define FT_COMPDRVR 6 /* Compressed Driver Disk */
# define FT_LANGUAGE 7 /* Foreign Language file */
# define FT_FIRMWARE 8 /* Downloadable or actual Firmware */
# define FT_COMMMODL 9 /* Communications Module */
# define FT_INT13 10 /* INT 13 style HBA Driver */
# define FT_HELPFILE 11 /* Help file */
# define FT_LOGGER 12 /* Event Logger */
# define FT_INSTALL 13 /* An Install Program */
# define FT_LIBRARY 14 /* Storage Manager Real-Mode Calls */
2007-03-27 09:59:28 +04:00
# define FT_RESOURCE 15 /* Storage Manager Resource File */
# define FT_MODEM_DB 16 /* Storage Manager Modem Database */
2005-04-17 02:20:36 +04:00
/* Filetype flags - sigBYTE dsFiletypeFlags; FLAG BITS */
/* ------------------------------------------------------------------ */
# define FTF_DLL 0x01 /* Dynamic Link Library */
# define FTF_NLM 0x02 /* Netware Loadable Module */
# define FTF_OVERLAYS 0x04 /* Uses overlays */
# define FTF_DEBUG 0x08 /* Debug version */
# define FTF_TSR 0x10 /* TSR */
# define FTF_SYS 0x20 /* DOS Loadable driver */
# define FTF_PROTECTED 0x40 /* Runs in protected mode */
# define FTF_APP_SPEC 0x80 /* Application Specific */
# define FTF_ROM (FTF_SYS|FTF_TSR) /* Special Case */
/* OEM - sigBYTE dsOEM; DISTINCT VALUES */
/* ------------------------------------------------------------------ */
# define OEM_DPT 0 /* DPT */
# define OEM_ATT 1 /* ATT */
# define OEM_NEC 2 /* NEC */
# define OEM_ALPHA 3 /* Alphatronix */
# define OEM_AST 4 /* AST */
# define OEM_OLIVETTI 5 /* Olivetti */
# define OEM_SNI 6 /* Siemens/Nixdorf */
# define OEM_SUN 7 /* SUN Microsystems */
/* Operating System - sigLONG dsOS; FLAG BITS */
/* ------------------------------------------------------------------ */
# define OS_DOS 0x00000001 /* PC/MS-DOS */
# define OS_WINDOWS 0x00000002 /* Microsoft Windows 3.x */
# define OS_WINDOWS_NT 0x00000004 /* Microsoft Windows NT */
# define OS_OS2M 0x00000008 /* OS/2 1.2.x,MS 1.3.0,IBM 1.3.x - Monolithic */
# define OS_OS2L 0x00000010 /* Microsoft OS/2 1.301 - LADDR */
# define OS_OS22x 0x00000020 /* IBM OS/2 2.x */
# define OS_NW286 0x00000040 /* Novell NetWare 286 */
# define OS_NW386 0x00000080 /* Novell NetWare 386 */
# define OS_GEN_UNIX 0x00000100 /* Generic Unix */
# define OS_SCO_UNIX 0x00000200 /* SCO Unix */
# define OS_ATT_UNIX 0x00000400 /* ATT Unix */
# define OS_UNIXWARE 0x00000800 /* USL Unix */
# define OS_INT_UNIX 0x00001000 /* Interactive Unix */
# define OS_SOLARIS 0x00002000 /* SunSoft Solaris */
# define OS_QNX 0x00004000 /* QNX for Tom Moch */
# define OS_NEXTSTEP 0x00008000 /* NeXTSTEP/OPENSTEP/MACH */
# define OS_BANYAN 0x00010000 /* Banyan Vines */
# define OS_OLIVETTI_UNIX 0x00020000 /* Olivetti Unix */
# define OS_MAC_OS 0x00040000 /* Mac OS */
# define OS_WINDOWS_95 0x00080000 /* Microsoft Windows '95 */
# define OS_NW4x 0x00100000 /* Novell Netware 4.x */
# define OS_BSDI_UNIX 0x00200000 /* BSDi Unix BSD/OS 2.0 and up */
# define OS_AIX_UNIX 0x00400000 /* AIX Unix */
# define OS_FREE_BSD 0x00800000 /* FreeBSD Unix */
# define OS_LINUX 0x01000000 /* Linux */
# define OS_DGUX_UNIX 0x02000000 /* Data General Unix */
# define OS_SINIX_N 0x04000000 /* SNI SINIX-N */
# define OS_PLAN9 0x08000000 /* ATT Plan 9 */
# define OS_TSX 0x10000000 /* SNH TSX-32 */
# define OS_OTHER 0x80000000 /* Other */
/* Capabilities - sigWORD dsCapabilities; FLAG BITS */
/* ------------------------------------------------------------------ */
# define CAP_RAID0 0x0001 /* RAID-0 */
# define CAP_RAID1 0x0002 /* RAID-1 */
# define CAP_RAID3 0x0004 /* RAID-3 */
# define CAP_RAID5 0x0008 /* RAID-5 */
# define CAP_SPAN 0x0010 /* Spanning */
# define CAP_PASS 0x0020 /* Provides passthrough */
# define CAP_OVERLAP 0x0040 /* Passthrough supports overlapped commands */
# define CAP_ASPI 0x0080 /* Supports ASPI Command Requests */
# define CAP_ABOVE16MB 0x0100 /* ISA Driver supports greater than 16MB */
# define CAP_EXTEND 0x8000 /* Extended info appears after description */
# ifdef SNI_MIPS
# define CAP_CACHEMODE 0x1000 /* dpt_force_cache is set in driver */
# endif
/* Devices Supported - sigWORD dsDeviceSupp; FLAG BITS */
/* ------------------------------------------------------------------ */
# define DEV_DASD 0x0001 /* DASD (hard drives) */
# define DEV_TAPE 0x0002 /* Tape drives */
# define DEV_PRINTER 0x0004 /* Printers */
# define DEV_PROC 0x0008 /* Processors */
# define DEV_WORM 0x0010 /* WORM drives */
# define DEV_CDROM 0x0020 /* CD-ROM drives */
# define DEV_SCANNER 0x0040 /* Scanners */
# define DEV_OPTICAL 0x0080 /* Optical Drives */
# define DEV_JUKEBOX 0x0100 /* Jukebox */
# define DEV_COMM 0x0200 /* Communications Devices */
# define DEV_OTHER 0x0400 /* Other Devices */
# define DEV_ALL 0xFFFF /* All SCSI Devices */
/* Adapters Families Supported - sigWORD dsAdapterSupp; FLAG BITS */
/* ------------------------------------------------------------------ */
# define ADF_2001 0x0001 /* PM2001 */
# define ADF_2012A 0x0002 /* PM2012A */
# define ADF_PLUS_ISA 0x0004 /* PM2011,PM2021 */
# define ADF_PLUS_EISA 0x0008 /* PM2012B,PM2022 */
# define ADF_SC3_ISA 0x0010 /* PM2021 */
# define ADF_SC3_EISA 0x0020 /* PM2022,PM2122, etc */
# define ADF_SC3_PCI 0x0040 /* SmartCache III PCI */
# define ADF_SC4_ISA 0x0080 /* SmartCache IV ISA */
# define ADF_SC4_EISA 0x0100 /* SmartCache IV EISA */
# define ADF_SC4_PCI 0x0200 /* SmartCache IV PCI */
# define ADF_SC5_PCI 0x0400 /* Fifth Generation I2O products */
/*
* Combinations of products
*/
# define ADF_ALL_2000 (ADF_2001|ADF_2012A)
# define ADF_ALL_PLUS (ADF_PLUS_ISA|ADF_PLUS_EISA)
# define ADF_ALL_SC3 (ADF_SC3_ISA|ADF_SC3_EISA|ADF_SC3_PCI)
# define ADF_ALL_SC4 (ADF_SC4_ISA|ADF_SC4_EISA|ADF_SC4_PCI)
# define ADF_ALL_SC5 (ADF_SC5_PCI)
/* All EATA Cacheing Products */
# define ADF_ALL_CACHE (ADF_ALL_PLUS|ADF_ALL_SC3|ADF_ALL_SC4)
/* All EATA Bus Mastering Products */
# define ADF_ALL_MASTER (ADF_2012A|ADF_ALL_CACHE)
/* All EATA Adapter Products */
# define ADF_ALL_EATA (ADF_2001|ADF_ALL_MASTER)
# define ADF_ALL ADF_ALL_EATA
/* Application - sigWORD dsApplication; FLAG BITS */
/* ------------------------------------------------------------------ */
# define APP_DPTMGR 0x0001 /* DPT Storage Manager */
# define APP_ENGINE 0x0002 /* DPT Engine */
# define APP_SYTOS 0x0004 /* Sytron Sytos Plus */
# define APP_CHEYENNE 0x0008 /* Cheyenne ARCServe + ARCSolo */
# define APP_MSCDEX 0x0010 /* Microsoft CD-ROM extensions */
# define APP_NOVABACK 0x0020 /* NovaStor Novaback */
# define APP_AIM 0x0040 /* Archive Information Manager */
/* Requirements - sigBYTE dsRequirements; FLAG BITS */
/* ------------------------------------------------------------------ */
# define REQ_SMARTROM 0x01 /* Requires SmartROM to be present */
# define REQ_DPTDDL 0x02 /* Requires DPTDDL.SYS to be loaded */
# define REQ_HBA_DRIVER 0x04 /* Requires an HBA driver to be loaded */
# define REQ_ASPI_TRAN 0x08 /* Requires an ASPI Transport Modules */
# define REQ_ENGINE 0x10 /* Requires a DPT Engine to be loaded */
# define REQ_COMM_ENG 0x20 /* Requires a DPT Communications Engine */
/*
* You may adjust dsDescription_size with an override to a value less than
* 50 so that the structure allocates less real space .
*/
# if (!defined(dsDescription_size))
# define dsDescription_size 50
# endif
typedef struct dpt_sig {
char dsSignature [ 6 ] ; /* ALWAYS "dPtSiG" */
sigBYTE dsSigVersion ; /* signature version (currently 1) */
sigBYTE dsProcessorFamily ; /* what type of processor */
sigBYTE dsProcessor ; /* precise processor */
sigBYTE dsFiletype ; /* type of file */
sigBYTE dsFiletypeFlags ; /* flags to specify load type, etc. */
sigBYTE dsOEM ; /* OEM file was created for */
2008-05-02 03:07:27 +04:00
sigINT dsOS ; /* which Operating systems */
2005-04-17 02:20:36 +04:00
sigWORD dsCapabilities ; /* RAID levels, etc. */
sigWORD dsDeviceSupp ; /* Types of SCSI devices supported */
sigWORD dsAdapterSupp ; /* DPT adapter families supported */
sigWORD dsApplication ; /* applications file is for */
sigBYTE dsRequirements ; /* Other driver dependencies */
sigBYTE dsVersion ; /* 1 */
sigBYTE dsRevision ; /* 'J' */
sigBYTE dsSubRevision ; /* '9' ' ' if N/A */
sigBYTE dsMonth ; /* creation month */
sigBYTE dsDay ; /* creation day */
sigBYTE dsYear ; /* creation year since 1980 (1993=13) */
/* description (NULL terminated) */
char dsDescription [ dsDescription_size ] ;
} dpt_sig_S ;
/* 32 bytes minimum - with no description. Put NULL at description[0] */
/* 81 bytes maximum - with 49 character description plus NULL. */
/* This line added at Roycroft's request */
/* Microsoft's NT compiler gets confused if you do a pack and don't */
/* restore it. */
# ifndef NO_UNPACK
# if defined (_DPT_AIX)
# pragma options align=reset
# elif defined (UNPACK_FOUR)
# pragma pack(4)
# else
# pragma pack()
# endif /* aix */
# endif
/* For the Macintosh */
2005-07-27 22:45:17 +04:00
# ifdef STRUCTALIGNMENTSUPPORTED
2005-04-17 02:20:36 +04:00
# pragma options align=reset
# endif
# endif