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$
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
426typedef 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