xref: /dragonfly/sys/dev/raid/asr/sys_info.h (revision 0fe46dc6)
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 #include	 "osd_util.h"
55 
56 #ifndef NO_PACK
57 #if defined(_DPT_AIX)
58 #pragma options align=packed
59 #else
60 #pragma pack(1)
61 #endif	/* aix */
62 #endif	/* no unpack */
63 
64 
65 /*struct - driveParam_S - start
66  *===========================================================================
67  *
68  *Description:
69  *
70  *	This structure defines the drive parameters seen during
71  *booting.
72  *
73  *---------------------------------------------------------------------------*/
74 
75 #ifdef __cplusplus
76    struct driveParam_S {
77 #else
78    typedef struct  {
79 #endif
80 
81    uSHORT	cylinders;	/* Upto 1024 */
82    uCHAR	heads;		/* Upto 255 */
83    uCHAR	sectors;	/* Upto 63 */
84 
85 #ifdef __cplusplus
86 
87 /*---------- Portability Additions ----------- in sp_sinfo.cpp */
88 #ifdef DPT_PORTABLE
89 	uSHORT		netInsert(dptBuffer_S *buffer);
90 	uSHORT		netExtract(dptBuffer_S *buffer);
91 #endif /* DPT PORTABLE */
92 /*--------------------------------------------*/
93 
94    };
95 #else
96    } driveParam_S;
97 #endif
98 /*driveParam_S - end */
99 
100 
101 /*struct - sysInfo_S - start
102  *===========================================================================
103  *
104  *Description:
105  *
106  *	This structure defines the command system information that
107  *should be returned by every OS dependent layer.
108  *
109  *---------------------------------------------------------------------------*/
110 
111 /*flags - bit definitions */
112 #define	SI_CMOS_Valid		0x0001
113 #define	SI_NumDrivesValid	0x0002
114 #define	SI_ProcessorValid	0x0004
115 #define	SI_MemorySizeValid	0x0008
116 #define	SI_DriveParamsValid	0x0010
117 #define	SI_SmartROMverValid	0x0020
118 #define	SI_OSversionValid	0x0040
119 #define	SI_OSspecificValid	0x0080	/* 1 if OS structure returned */
120 #define	SI_BusTypeValid		0x0100
121 
122 #define	SI_ALL_VALID		0x0FFF	/* All Std SysInfo is valid */
123 #define	SI_NO_SmartROM		0x8000
124 
125 /*busType - definitions */
126 #define	SI_ISA_BUS	0x00
127 #define	SI_MCA_BUS	0x01
128 #define	SI_EISA_BUS	0x02
129 #define	SI_PCI_BUS	0x04
130 
131 #ifdef __cplusplus
132    struct sysInfo_S {
133 #else
134    typedef struct  {
135 #endif
136 
137    uCHAR	drive0CMOS;		/* CMOS Drive 0 Type */
138    uCHAR	drive1CMOS;		/* CMOS Drive 1 Type */
139    uCHAR	numDrives;		/* 0040:0075 contents */
140    uCHAR	processorFamily;	/* Same as DPTSIG's definition */
141    uCHAR	processorType;		/* Same as DPTSIG's definition */
142    uCHAR	smartROMMajorVersion;
143    uCHAR	smartROMMinorVersion;	/* SmartROM version */
144    uCHAR	smartROMRevision;
145    uSHORT	flags;			/* See bit definitions above */
146    uSHORT	conventionalMemSize;	/* in KB */
147    uLONG	extendedMemSize;	/* in KB */
148    uLONG	osType;			/* Same as DPTSIG's definition */
149    uCHAR	osMajorVersion;
150    uCHAR	osMinorVersion;		/* The OS version */
151    uCHAR	osRevision;
152 #ifdef _SINIX_ADDON
153    uCHAR	busType;		/* See defininitions above */
154    uSHORT	osSubRevision;
155    uCHAR	pad[2];			/* For alignment */
156 #else
157    uCHAR	osSubRevision;
158    uCHAR	busType;		/* See defininitions above */
159    uCHAR	pad[3];			/* For alignment */
160 #endif
161    driveParam_S drives[16];		/* SmartROM Logical Drives */
162 
163 #ifdef __cplusplus
164 
165 /*---------- Portability Additions ----------- in sp_sinfo.cpp */
166 #ifdef DPT_PORTABLE
167 	uSHORT		netInsert(dptBuffer_S *buffer);
168 	uSHORT		netExtract(dptBuffer_S *buffer);
169 #endif /* DPT PORTABLE */
170 /*--------------------------------------------*/
171 
172    };
173 #else
174    } sysInfo_S;
175 #endif
176 /*sysInfo_S - end */
177 
178 
179 /*struct - DOS_Info_S - start
180  *===========================================================================
181  *
182  *Description:
183  *
184  *	This structure defines the system information specific to a
185  *DOS workstation.
186  *
187  *---------------------------------------------------------------------------*/
188 
189 /*flags - bit definitions */
190 #define	DI_DOS_HIGH		0x01	/* DOS is loaded high */
191 #define	DI_DPMI_VALID		0x02	/* DPMI version is valid */
192 
193 #ifdef __cplusplus
194    struct DOS_Info_S {
195 #else
196    typedef struct {
197 #endif
198 
199    uCHAR	flags;		/* See bit definitions above */
200    uSHORT	driverLocation; /* SmartROM BIOS address */
201    uSHORT	DOS_version;
202    uSHORT	DPMI_version;
203 
204 #ifdef __cplusplus
205 
206 /*---------- Portability Additions ----------- in sp_sinfo.cpp */
207 #ifdef DPT_PORTABLE
208 	uSHORT		netInsert(dptBuffer_S *buffer);
209 	uSHORT		netExtract(dptBuffer_S *buffer);
210 #endif /* DPT PORTABLE */
211 /*--------------------------------------------*/
212 
213    };
214 #else
215    } DOS_Info_S;
216 #endif
217 /*DOS_Info_S - end */
218 
219 
220 /*struct - Netware_Info_S - start
221  *===========================================================================
222  *
223  *Description:
224  *
225  *	This structure defines the system information specific to a
226  *Netware machine.
227  *
228  *---------------------------------------------------------------------------*/
229 
230 #ifdef __cplusplus
231    struct Netware_Info_S {
232 #else
233    typedef struct {
234 #endif
235 
236    uCHAR	driverName[13];		/* ie PM12NW31.DSK */
237    uCHAR	serverName[48];
238    uCHAR	netwareVersion;		/* The Netware OS version */
239    uCHAR	netwareSubVersion;
240    uCHAR	netwareRevision;
241    uSHORT	maxConnections;		/* Probably  250 or 1000 */
242    uSHORT	connectionsInUse;
243    uSHORT	maxVolumes;
244    uCHAR	unused;
245    uCHAR	SFTlevel;
246    uCHAR	TTSlevel;
247 
248    uCHAR	clibMajorVersion;	/* The CLIB.NLM version */
249    uCHAR	clibMinorVersion;
250    uCHAR	clibRevision;
251 
252 #ifdef __cplusplus
253 
254 /*---------- Portability Additions ----------- in sp_sinfo.cpp */
255 #ifdef DPT_PORTABLE
256 	uSHORT		netInsert(dptBuffer_S *buffer);
257 	uSHORT		netExtract(dptBuffer_S *buffer);
258 #endif /* DPT PORTABLE */
259 /*--------------------------------------------*/
260 
261    };
262 #else
263    } Netware_Info_S;
264 #endif
265 /*Netware_Info_S - end */
266 
267 
268 /*struct - OS2_Info_S - start
269  *===========================================================================
270  *
271  *Description:
272  *
273  *	This structure defines the system information specific to an
274  *OS/2 machine.
275  *
276  *---------------------------------------------------------------------------*/
277 
278 #ifdef __cplusplus
279    struct OS2_Info_S {
280 #else
281    typedef struct {
282 #endif
283 
284    uCHAR	something;
285 
286 #ifdef __cplusplus
287 
288 /*---------- Portability Additions ----------- in sp_sinfo.cpp */
289 #ifdef DPT_PORTABLE
290 	uSHORT		netInsert(dptBuffer_S *buffer);
291 	uSHORT		netExtract(dptBuffer_S *buffer);
292 #endif /* DPT PORTABLE */
293 /*--------------------------------------------*/
294 
295    };
296 #else
297    } OS2_Info_S;
298 #endif
299 /*OS2_Info_S - end */
300 
301 
302 /*struct - WinNT_Info_S - start
303  *===========================================================================
304  *
305  *Description:
306  *
307  *	This structure defines the system information specific to a
308  *Windows NT machine.
309  *
310  *---------------------------------------------------------------------------*/
311 
312 #ifdef __cplusplus
313    struct WinNT_Info_S {
314 #else
315    typedef struct {
316 #endif
317 
318    uCHAR	something;
319 
320 #ifdef __cplusplus
321 
322 /*---------- Portability Additions ----------- in sp_sinfo.cpp */
323 #ifdef DPT_PORTABLE
324 	uSHORT		netInsert(dptBuffer_S *buffer);
325 	uSHORT		netExtract(dptBuffer_S *buffer);
326 #endif /* DPT PORTABLE */
327 /*--------------------------------------------*/
328 
329    };
330 #else
331    } WinNT_Info_S;
332 #endif
333 /*WinNT_Info_S - end */
334 
335 
336 /*struct - SCO_Info_S - start
337  *===========================================================================
338  *
339  *Description:
340  *
341  *	This structure defines the system information specific to an
342  *SCO UNIX machine.
343  *
344  *---------------------------------------------------------------------------*/
345 
346 #ifdef __cplusplus
347    struct SCO_Info_S {
348 #else
349    typedef struct {
350 #endif
351 
352    uCHAR	something;
353 
354 #ifdef __cplusplus
355 
356 /*---------- Portability Additions ----------- in sp_sinfo.cpp */
357 #ifdef DPT_PORTABLE
358 	uSHORT		netInsert(dptBuffer_S *buffer);
359 	uSHORT		netExtract(dptBuffer_S *buffer);
360 #endif /* DPT PORTABLE */
361 /*--------------------------------------------*/
362 
363    };
364 #else
365    } SCO_Info_S;
366 #endif
367 /*SCO_Info_S - end */
368 
369 
370 /*struct - USL_Info_S - start
371  *===========================================================================
372  *
373  *Description:
374  *
375  *	This structure defines the system information specific to a
376  *USL UNIX machine.
377  *
378  *---------------------------------------------------------------------------*/
379 
380 #ifdef __cplusplus
381    struct USL_Info_S {
382 #else
383    typedef struct {
384 #endif
385 
386    uCHAR	something;
387 
388 #ifdef __cplusplus
389 
390 /*---------- Portability Additions ----------- in sp_sinfo.cpp */
391 #ifdef DPT_PORTABLE
392 	uSHORT		netInsert(dptBuffer_S *buffer);
393 	uSHORT		netExtract(dptBuffer_S *buffer);
394 #endif /* DPT PORTABLE */
395 /*--------------------------------------------*/
396 
397    };
398 #else
399    } USL_Info_S;
400 #endif
401 /*USL_Info_S - end */
402 
403 
404   /* Restore default structure packing */
405 #ifndef NO_UNPACK
406 #if defined(_DPT_AIX)
407 #pragma options align=reset
408 #elif defined(UNPACK_FOUR)
409 #pragma pack(4)
410 #else
411 #pragma pack()
412 #endif	/* aix */
413 #endif	/* no unpack */
414 
415 #ifdef DPT_MEASURE_PERFORMANCE
416 typedef struct dpt_metrics {
417 	u_int32_t	command_count[256]; /* We assume MAX 256 SCSI commands */
418 	u_int32_t	max_command_time[256];
419 	u_int32_t	min_command_time[256];
420 
421 	u_int32_t	min_intr_time;
422 	u_int32_t	max_intr_time;
423 	u_int32_t	max_intr_gap;
424 	u_int32_t	max_ht_time;
425 	u_int32_t	aborted_interrupts;
426 	u_int32_t	spurious_interrupts;
427 	u_int32_t	aborted_requests;
428 	u_int32_t	retried_requests;
429 
430 	u_int32_t	max_waiting_count;
431 	u_int32_t	max_submit_count;
432 	u_int32_t	max_complete_count;
433 
434 	u_int32_t	min_waiting_time;
435 	u_int32_t	min_submit_time;
436 	u_int32_t	min_complete_time;
437 
438 	u_int32_t	max_waiting_time;
439 	u_int32_t	max_submit_time;
440 	u_int32_t	max_complete_time;
441 
442 	u_int32_t	command_collisions;
443 	u_int32_t	command_too_busy;
444 	u_int32_t	max_eata_tries;
445 	u_int32_t	min_eata_tries;
446 
447 	u_int32_t	read_by_size_count[10];
448 	u_int32_t	write_by_size_count[10];
449 	u_int32_t	read_by_size_min_time[10];
450 	u_int32_t	read_by_size_max_time[10];
451 	struct timeval	read_by_size_total_time[10];
452 	u_int32_t	write_by_size_min_time[10];
453 	u_int32_t	write_by_size_max_time[10];
454 	struct timeval	write_by_size_total_time[10];
455 
456 #define	SIZE_512	0
457 #define	SIZE_1K		1
458 #define	SIZE_2K		2
459 #define	SIZE_4K		3
460 #define	SIZE_8K		4
461 #define	SIZE_16K	5
462 #define	SIZE_32K	6
463 #define	SIZE_64K	7
464 #define	SIZE_BIGGER	8
465 #define	SIZE_OTHER	9
466 
467 	struct timeval	intr_started;
468 } dpt_perf_t;
469 #endif
470 
471 #endif	/* __SYS_INFO_H */
472 
473