Fix misleading error message in geometry.c
[rrq/maintain_lilo.git] / src / probe.h
1 /* probe.h  -- definitions for the LILO probe utility
2
3 Copyright 1999-2005 John Coffman.
4 All rights reserved.
5
6 Licensed under the terms contained in the file 'COPYING' in the 
7 source directory.
8
9 */
10
11 #ifndef __PROBE_H_
12 #define __PROBE_H_
13
14
15
16 struct disk_geom {
17    unsigned int n_total_blocks;
18    int n_sect;
19    int n_head;
20    int n_cyl;
21    char type;
22    char EDD_flags;
23    char EDD_rev;
24    char n_disks;
25    struct partition *pt;
26    int serial_no;               /* added at PROBE_VERSION==4 */
27 };
28
29 #if 0
30 /* structure used by int 0x13, AH=0x48 */
31
32 struct disk_param {
33    short size;
34    short flags;
35    unsigned int n_cyl;
36    unsigned int n_head;
37    unsigned int n_sect;
38    long long n_sectors;
39    short n_byte;
40    unsigned int edd_config_ptr;
41 };
42 #endif
43
44
45 #define EDD_DMA_BOUNDARY_TRANSP  01
46 #define EDD_PARAM_GEOM_VALID     02
47
48
49 /* the following structures are created by the biosdata.S codes */
50
51 typedef
52 struct Equip {
53    unsigned short equipment;
54    unsigned short mem;
55 #if PROBE_VERSION >= 5
56    unsigned short boot_dx;
57 #endif
58 } equip_t;
59
60
61 /* BD_GET_VIDEO >= 1 */
62 typedef
63 struct Video1 {
64    struct {
65       unsigned char  al;
66       unsigned char  ah;
67       unsigned char  bl;
68       unsigned char  bh;
69    } vid0F;
70 } video_t1;
71
72
73 /* BD_GET_VIDEO >= 2  */
74 typedef
75 struct Video2 {
76    struct {
77       unsigned short ax;
78       unsigned char  bl;
79       unsigned char  bh;
80    } vid12;
81    struct {
82       unsigned char  al;
83       unsigned char  ah;
84       unsigned short bx;
85    } vid1A;
86 } video_t2;
87
88 /* BD_GET_VIDEO >=2 extension for PROBE_VERSION 5 */
89 typedef
90 struct Video25 {
91    struct {
92       unsigned short ax;
93       unsigned short cx;
94       unsigned short dx;
95       unsigned short bp;
96    } vid36;
97 } video_t25;
98
99
100 /* BD_GET_VIDEO >= 3  */
101 typedef
102 struct Video3 {
103    struct {
104       unsigned short ax;
105                char  sig[4];
106    } vid4F00;
107    struct {
108       unsigned short ax;
109       unsigned short bits;
110    } vid101;
111    struct {
112       unsigned short ax;
113       unsigned short bits;
114    } vid103;
115 } video_t3;
116
117
118 typedef
119 struct Video {
120    unsigned short equipment;
121    unsigned short mem;
122
123 /* BD_GET_VIDEO >= 1 */
124    struct {
125       unsigned char  al;
126       unsigned char  ah;
127       unsigned char  bl;
128       unsigned char  bh;
129    } vid0F;
130
131 /* BD_GET_VIDEO >= 2  */
132    struct {
133       unsigned short ax;
134       unsigned char  bl;
135       unsigned char  bh;
136    } vid12;
137    struct {
138       unsigned char  al;
139       unsigned char  ah;
140       unsigned short bx;
141    } vid1A;
142
143
144 /* BD_GET_VIDEO >= 3  */
145    struct {
146       unsigned short ax;
147       unsigned char  sig[4];
148    } vid4F00;
149    struct {
150       unsigned short ax;
151       unsigned short bits;
152    } vid101;
153    struct {
154       unsigned short ax;
155       unsigned short bits;
156    } vid103;
157 } video_t;
158
159
160 typedef
161 struct Floppy {
162    struct {
163       unsigned char  ah;                /* AL and AH were swapped */
164       unsigned char  flags;
165       unsigned short dx;
166       unsigned short cx;
167    } fn15;
168    struct {
169       unsigned char  ah;                /* AL and AH were swapped */
170       unsigned char  flags;
171       unsigned short cx;
172       unsigned short dx;
173       unsigned short di;
174       unsigned short es;
175    } fn08;
176 } floppy_t;
177
178
179 typedef
180 struct Hard {
181    struct {
182       unsigned char  ah;                /* AL and AH were swapped */
183       unsigned char  flags;
184       unsigned short dx;
185       unsigned short cx;
186    } fn15;
187    struct {
188       unsigned char  ah;                /* AL and AH were swapped */
189       unsigned char  flags;
190       unsigned short cx;
191       unsigned short dx;
192    } fn08;
193    struct {
194       unsigned char  ah;                /* AL and AH were swapped */
195       unsigned char  flags;
196       unsigned short bx;
197       unsigned short cx;
198    } fn41;
199 } hard_t;
200
201 typedef
202 struct Fn48 {
203    unsigned char  ah;           /* AL and AH were swapped */
204    unsigned char  flags;
205 } fn48_t;
206
207 typedef
208 struct Edd {
209    unsigned short size;                 /* 26 or 30 */
210    unsigned short info;
211    unsigned int  cylinders;
212    unsigned int  heads;
213    unsigned int  sectors;
214    long long      total_sectors;
215    unsigned short sector_size;
216
217    unsigned short offset,
218                   segment;
219            fn48_t reg;          /* AH & flags returned from the call */
220 } edd_t;                                /* struct is 26; but may be 30 in mem */
221
222 /* the video adapter types */
223 enum {VIDEO_UNKNOWN, VIDEO_MDA, VIDEO_CGA, VIDEO_EGA, VIDEO_MCGA,
224         VIDEO_VGA, VIDEO_VESA, VIDEO_VESA_800};
225
226 int fetch(void);
227
228 int purge(void);
229
230 void probe_tell (char *cmd);
231
232 int bios_max_devs(void);
233
234 int bios_device(GEOMETRY *geo, int device);
235
236 int get_video(void);    /* return -1 on error, or adapter type [0..7] */
237
238 void check_bios(void);  /* set up bios_passes_dl */
239
240 #endif
241 /* end probe.h */