1 /*- 2 * Copyright (c) 1996-1999 Distributed Processing Technology Corporation 3 * All rights reserved. 4 * 5 * Redistribution and use in source form, with or without modification, are 6 * permitted provided that redistributions of source code must retain the 7 * above copyright notice, this list of conditions and the following disclaimer. 8 * 9 * This software is provided `as is' by Distributed Processing Technology and 10 * any express or implied warranties, including, but not limited to, the 11 * implied warranties of merchantability and fitness for a particular purpose, 12 * are disclaimed. In no event shall Distributed Processing Technology be 13 * liable for any direct, indirect, incidental, special, exemplary or 14 * consequential damages (including, but not limited to, procurement of 15 * substitute goods or services; loss of use, data, or profits; or business 16 * interruptions) however caused and on any theory of liability, whether in 17 * contract, strict liability, or tort (including negligence or otherwise) 18 * arising in any way out of the use of this driver software, even if advised 19 * of the possibility of such damage. 20 * 21 * $FreeBSD: src/sys/dev/asr/sys_info.h,v 1.9 2005/01/06 01:42:29 imp Exp $ 22 */ 23 24 #ifndef __SYS_INFO_H 25 #define __SYS_INFO_H 26 27 /*File - SYS_INFO.H 28 **************************************************************************** 29 * 30 *Description: 31 * 32 * This file contains structure definitions for the OS dependent 33 *layer system information buffers. 34 * 35 *Copyright Distributed Processing Technology, Corp. 36 * 140 Candace Dr. 37 * Maitland, Fl. 32751 USA 38 * Phone: (407) 830-5522 Fax: (407) 260-5366 39 * All Rights Reserved 40 * 41 *Author: Don Kemper 42 *Date: 5/10/94 43 * 44 *Editors: 45 * 46 *Remarks: 47 * 48 * 49 *****************************************************************************/ 50 51 52 /*Include Files ------------------------------------------------------------- */ 53 54 #if (defined(KERNEL) && defined(__bsdi__)) 55 # include "i386/isa/dpt_osd_util.h" 56 #elif ((defined(KERNEL) || defined(_KERNEL)) && defined(__FreeBSD__)) 57 # if (KERN_VERSION < 3) 58 # include "i386/isa/dpt_osd_util.h" 59 # else 60 # include "dev/asr/osd_util.h" 61 # endif 62 #else 63 # include "osd_util.h" 64 #endif 65 66 #ifndef NO_PACK 67 #if defined(_DPT_AIX) 68 #pragma options align=packed 69 #else 70 #pragma pack(1) 71 #endif /* aix */ 72 #endif /* no unpack */ 73 74 75 /*struct - driveParam_S - start 76 *=========================================================================== 77 * 78 *Description: 79 * 80 * This structure defines the drive parameters seen during 81 *booting. 82 * 83 *---------------------------------------------------------------------------*/ 84 85 #ifdef __cplusplus 86 struct driveParam_S { 87 #else 88 typedef struct { 89 #endif 90 91 uSHORT cylinders; /* Upto 1024 */ 92 uCHAR heads; /* Upto 255 */ 93 uCHAR sectors; /* Upto 63 */ 94 95 #ifdef __cplusplus 96 97 /*---------- Portability Additions ----------- in sp_sinfo.cpp */ 98 #ifdef DPT_PORTABLE 99 uSHORT netInsert(dptBuffer_S *buffer); 100 uSHORT netExtract(dptBuffer_S *buffer); 101 #endif /* DPT PORTABLE */ 102 /*--------------------------------------------*/ 103 104 }; 105 #else 106 } driveParam_S; 107 #endif 108 /*driveParam_S - end */ 109 110 111 /*struct - sysInfo_S - start 112 *=========================================================================== 113 * 114 *Description: 115 * 116 * This structure defines the command system information that 117 *should be returned by every OS dependent layer. 118 * 119 *---------------------------------------------------------------------------*/ 120 121 /*flags - bit definitions */ 122 #define SI_CMOS_Valid 0x0001 123 #define SI_NumDrivesValid 0x0002 124 #define SI_ProcessorValid 0x0004 125 #define SI_MemorySizeValid 0x0008 126 #define SI_DriveParamsValid 0x0010 127 #define SI_SmartROMverValid 0x0020 128 #define SI_OSversionValid 0x0040 129 #define SI_OSspecificValid 0x0080 /* 1 if OS structure returned */ 130 #define SI_BusTypeValid 0x0100 131 132 #define SI_ALL_VALID 0x0FFF /* All Std SysInfo is valid */ 133 #define SI_NO_SmartROM 0x8000 134 135 /*busType - definitions */ 136 #define SI_ISA_BUS 0x00 137 #define SI_MCA_BUS 0x01 138 #define SI_EISA_BUS 0x02 139 #define SI_PCI_BUS 0x04 140 141 #ifdef __cplusplus 142 struct sysInfo_S { 143 #else 144 typedef struct { 145 #endif 146 147 uCHAR drive0CMOS; /* CMOS Drive 0 Type */ 148 uCHAR drive1CMOS; /* CMOS Drive 1 Type */ 149 uCHAR numDrives; /* 0040:0075 contents */ 150 uCHAR processorFamily; /* Same as DPTSIG's definition */ 151 uCHAR processorType; /* Same as DPTSIG's definition */ 152 uCHAR smartROMMajorVersion; 153 uCHAR smartROMMinorVersion; /* SmartROM version */ 154 uCHAR smartROMRevision; 155 uSHORT flags; /* See bit definitions above */ 156 uSHORT conventionalMemSize; /* in KB */ 157 uLONG extendedMemSize; /* in KB */ 158 uLONG osType; /* Same as DPTSIG's definition */ 159 uCHAR osMajorVersion; 160 uCHAR osMinorVersion; /* The OS version */ 161 uCHAR osRevision; 162 #ifdef _SINIX_ADDON 163 uCHAR busType; /* See defininitions above */ 164 uSHORT osSubRevision; 165 uCHAR pad[2]; /* For alignment */ 166 #else 167 uCHAR osSubRevision; 168 uCHAR busType; /* See defininitions above */ 169 uCHAR pad[3]; /* For alignment */ 170 #endif 171 driveParam_S drives[16]; /* SmartROM Logical Drives */ 172 173 #ifdef __cplusplus 174 175 /*---------- Portability Additions ----------- in sp_sinfo.cpp */ 176 #ifdef DPT_PORTABLE 177 uSHORT netInsert(dptBuffer_S *buffer); 178 uSHORT netExtract(dptBuffer_S *buffer); 179 #endif /* DPT PORTABLE */ 180 /*--------------------------------------------*/ 181 182 }; 183 #else 184 } sysInfo_S; 185 #endif 186 /*sysInfo_S - end */ 187 188 189 /*struct - DOS_Info_S - start 190 *=========================================================================== 191 * 192 *Description: 193 * 194 * This structure defines the system information specific to a 195 *DOS workstation. 196 * 197 *---------------------------------------------------------------------------*/ 198 199 /*flags - bit definitions */ 200 #define DI_DOS_HIGH 0x01 /* DOS is loaded high */ 201 #define DI_DPMI_VALID 0x02 /* DPMI version is valid */ 202 203 #ifdef __cplusplus 204 struct DOS_Info_S { 205 #else 206 typedef struct { 207 #endif 208 209 uCHAR flags; /* See bit definitions above */ 210 uSHORT driverLocation; /* SmartROM BIOS address */ 211 uSHORT DOS_version; 212 uSHORT DPMI_version; 213 214 #ifdef __cplusplus 215 216 /*---------- Portability Additions ----------- in sp_sinfo.cpp */ 217 #ifdef DPT_PORTABLE 218 uSHORT netInsert(dptBuffer_S *buffer); 219 uSHORT netExtract(dptBuffer_S *buffer); 220 #endif /* DPT PORTABLE */ 221 /*--------------------------------------------*/ 222 223 }; 224 #else 225 } DOS_Info_S; 226 #endif 227 /*DOS_Info_S - end */ 228 229 230 /*struct - Netware_Info_S - start 231 *=========================================================================== 232 * 233 *Description: 234 * 235 * This structure defines the system information specific to a 236 *Netware machine. 237 * 238 *---------------------------------------------------------------------------*/ 239 240 #ifdef __cplusplus 241 struct Netware_Info_S { 242 #else 243 typedef struct { 244 #endif 245 246 uCHAR driverName[13]; /* ie PM12NW31.DSK */ 247 uCHAR serverName[48]; 248 uCHAR netwareVersion; /* The Netware OS version */ 249 uCHAR netwareSubVersion; 250 uCHAR netwareRevision; 251 uSHORT maxConnections; /* Probably 250 or 1000 */ 252 uSHORT connectionsInUse; 253 uSHORT maxVolumes; 254 uCHAR unused; 255 uCHAR SFTlevel; 256 uCHAR TTSlevel; 257 258 uCHAR clibMajorVersion; /* The CLIB.NLM version */ 259 uCHAR clibMinorVersion; 260 uCHAR clibRevision; 261 262 #ifdef __cplusplus 263 264 /*---------- Portability Additions ----------- in sp_sinfo.cpp */ 265 #ifdef DPT_PORTABLE 266 uSHORT netInsert(dptBuffer_S *buffer); 267 uSHORT netExtract(dptBuffer_S *buffer); 268 #endif /* DPT PORTABLE */ 269 /*--------------------------------------------*/ 270 271 }; 272 #else 273 } Netware_Info_S; 274 #endif 275 /*Netware_Info_S - end */ 276 277 278 /*struct - OS2_Info_S - start 279 *=========================================================================== 280 * 281 *Description: 282 * 283 * This structure defines the system information specific to an 284 *OS/2 machine. 285 * 286 *---------------------------------------------------------------------------*/ 287 288 #ifdef __cplusplus 289 struct OS2_Info_S { 290 #else 291 typedef struct { 292 #endif 293 294 uCHAR something; 295 296 #ifdef __cplusplus 297 298 /*---------- Portability Additions ----------- in sp_sinfo.cpp */ 299 #ifdef DPT_PORTABLE 300 uSHORT netInsert(dptBuffer_S *buffer); 301 uSHORT netExtract(dptBuffer_S *buffer); 302 #endif /* DPT PORTABLE */ 303 /*--------------------------------------------*/ 304 305 }; 306 #else 307 } OS2_Info_S; 308 #endif 309 /*OS2_Info_S - end */ 310 311 312 /*struct - WinNT_Info_S - start 313 *=========================================================================== 314 * 315 *Description: 316 * 317 * This structure defines the system information specific to a 318 *Windows NT machine. 319 * 320 *---------------------------------------------------------------------------*/ 321 322 #ifdef __cplusplus 323 struct WinNT_Info_S { 324 #else 325 typedef struct { 326 #endif 327 328 uCHAR something; 329 330 #ifdef __cplusplus 331 332 /*---------- Portability Additions ----------- in sp_sinfo.cpp */ 333 #ifdef DPT_PORTABLE 334 uSHORT netInsert(dptBuffer_S *buffer); 335 uSHORT netExtract(dptBuffer_S *buffer); 336 #endif /* DPT PORTABLE */ 337 /*--------------------------------------------*/ 338 339 }; 340 #else 341 } WinNT_Info_S; 342 #endif 343 /*WinNT_Info_S - end */ 344 345 346 /*struct - SCO_Info_S - start 347 *=========================================================================== 348 * 349 *Description: 350 * 351 * This structure defines the system information specific to an 352 *SCO UNIX machine. 353 * 354 *---------------------------------------------------------------------------*/ 355 356 #ifdef __cplusplus 357 struct SCO_Info_S { 358 #else 359 typedef struct { 360 #endif 361 362 uCHAR something; 363 364 #ifdef __cplusplus 365 366 /*---------- Portability Additions ----------- in sp_sinfo.cpp */ 367 #ifdef DPT_PORTABLE 368 uSHORT netInsert(dptBuffer_S *buffer); 369 uSHORT netExtract(dptBuffer_S *buffer); 370 #endif /* DPT PORTABLE */ 371 /*--------------------------------------------*/ 372 373 }; 374 #else 375 } SCO_Info_S; 376 #endif 377 /*SCO_Info_S - end */ 378 379 380 /*struct - USL_Info_S - start 381 *=========================================================================== 382 * 383 *Description: 384 * 385 * This structure defines the system information specific to a 386 *USL UNIX machine. 387 * 388 *---------------------------------------------------------------------------*/ 389 390 #ifdef __cplusplus 391 struct USL_Info_S { 392 #else 393 typedef struct { 394 #endif 395 396 uCHAR something; 397 398 #ifdef __cplusplus 399 400 /*---------- Portability Additions ----------- in sp_sinfo.cpp */ 401 #ifdef DPT_PORTABLE 402 uSHORT netInsert(dptBuffer_S *buffer); 403 uSHORT netExtract(dptBuffer_S *buffer); 404 #endif /* DPT PORTABLE */ 405 /*--------------------------------------------*/ 406 407 }; 408 #else 409 } USL_Info_S; 410 #endif 411 /*USL_Info_S - end */ 412 413 414 /* Restore default structure packing */ 415 #ifndef NO_UNPACK 416 #if defined(_DPT_AIX) 417 #pragma options align=reset 418 #elif defined(UNPACK_FOUR) 419 #pragma pack(4) 420 #else 421 #pragma pack() 422 #endif /* aix */ 423 #endif /* no unpack */ 424 425 #ifdef DPT_MEASURE_PERFORMANCE 426 typedef struct dpt_metrics { 427 u_int32_t command_count[256]; /* We assume MAX 256 SCSI commands */ 428 u_int32_t max_command_time[256]; 429 u_int32_t min_command_time[256]; 430 431 u_int32_t min_intr_time; 432 u_int32_t max_intr_time; 433 u_int32_t max_intr_gap; 434 u_int32_t max_ht_time; 435 u_int32_t aborted_interrupts; 436 u_int32_t spurious_interrupts; 437 u_int32_t aborted_requests; 438 u_int32_t retried_requests; 439 440 u_int32_t max_waiting_count; 441 u_int32_t max_submit_count; 442 u_int32_t max_complete_count; 443 444 u_int32_t min_waiting_time; 445 u_int32_t min_submit_time; 446 u_int32_t min_complete_time; 447 448 u_int32_t max_waiting_time; 449 u_int32_t max_submit_time; 450 u_int32_t max_complete_time; 451 452 u_int32_t command_collisions; 453 u_int32_t command_too_busy; 454 u_int32_t max_eata_tries; 455 u_int32_t min_eata_tries; 456 457 u_int32_t read_by_size_count[10]; 458 u_int32_t write_by_size_count[10]; 459 u_int32_t read_by_size_min_time[10]; 460 u_int32_t read_by_size_max_time[10]; 461 struct timeval read_by_size_total_time[10]; 462 u_int32_t write_by_size_min_time[10]; 463 u_int32_t write_by_size_max_time[10]; 464 struct timeval write_by_size_total_time[10]; 465 466 #define SIZE_512 0 467 #define SIZE_1K 1 468 #define SIZE_2K 2 469 #define SIZE_4K 3 470 #define SIZE_8K 4 471 #define SIZE_16K 5 472 #define SIZE_32K 6 473 #define SIZE_64K 7 474 #define SIZE_BIGGER 8 475 #define SIZE_OTHER 9 476 477 struct timeval intr_started; 478 } dpt_perf_t; 479 #endif 480 481 #endif /* __SYS_INFO_H */ 482 483