source: mainline/boot/arch/ia64/loader/gefi/inc/efiprot.h@ 86018c1

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 86018c1 was 7208b6c, checked in by Jakub Vana <jakub.vana@…>, 17 years ago

Basic IA64 boot and kernel suport for real machines

  • Property mode set to 100644
File size: 13.8 KB
Line 
1#ifndef _EFI_PROT_H
2#define _EFI_PROT_H
3
4/*++
5
6Copyright (c) 1998 Intel Corporation
7
8Module Name:
9
10 efiprot.h
11
12Abstract:
13
14 EFI Protocols
15
16
17
18Revision History
19
20--*/
21
22//
23// FPSWA library protocol
24//
25#define FPSWA_PROTOCOL \
26 { 0xc41b6531, 0x97b9, 0x11d3, {0x9a, 0x29, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
27
28//
29// Device Path protocol
30//
31
32#define DEVICE_PATH_PROTOCOL \
33 { 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
34
35
36//
37// Block IO protocol
38//
39
40#define BLOCK_IO_PROTOCOL \
41 { 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
42#define EFI_BLOCK_IO_INTERFACE_REVISION 0x00010000
43
44INTERFACE_DECL(_EFI_BLOCK_IO);
45
46typedef
47EFI_STATUS
48(EFIAPI *EFI_BLOCK_RESET) (
49 IN struct _EFI_BLOCK_IO *This,
50 IN BOOLEAN ExtendedVerification
51 );
52
53typedef
54EFI_STATUS
55(EFIAPI *EFI_BLOCK_READ) (
56 IN struct _EFI_BLOCK_IO *This,
57 IN UINT32 MediaId,
58 IN EFI_LBA LBA,
59 IN UINTN BufferSize,
60 OUT VOID *Buffer
61 );
62
63
64typedef
65EFI_STATUS
66(EFIAPI *EFI_BLOCK_WRITE) (
67 IN struct _EFI_BLOCK_IO *This,
68 IN UINT32 MediaId,
69 IN EFI_LBA LBA,
70 IN UINTN BufferSize,
71 IN VOID *Buffer
72 );
73
74
75typedef
76EFI_STATUS
77(EFIAPI *EFI_BLOCK_FLUSH) (
78 IN struct _EFI_BLOCK_IO *This
79 );
80
81
82
83typedef struct {
84 UINT32 MediaId;
85 BOOLEAN RemovableMedia;
86 BOOLEAN MediaPresent;
87
88 BOOLEAN LogicalPartition;
89 BOOLEAN ReadOnly;
90 BOOLEAN WriteCaching;
91
92 UINT32 BlockSize;
93 UINT32 IoAlign;
94
95 EFI_LBA LastBlock;
96} EFI_BLOCK_IO_MEDIA;
97
98typedef struct _EFI_BLOCK_IO {
99 UINT64 Revision;
100
101 EFI_BLOCK_IO_MEDIA *Media;
102
103 EFI_BLOCK_RESET Reset;
104 EFI_BLOCK_READ ReadBlocks;
105 EFI_BLOCK_WRITE WriteBlocks;
106 EFI_BLOCK_FLUSH FlushBlocks;
107
108} EFI_BLOCK_IO;
109
110
111
112//
113// Disk Block IO protocol
114//
115
116#define DISK_IO_PROTOCOL \
117 { 0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
118#define EFI_DISK_IO_INTERFACE_REVISION 0x00010000
119
120INTERFACE_DECL(_EFI_DISK_IO);
121
122typedef
123EFI_STATUS
124(EFIAPI *EFI_DISK_READ) (
125 IN struct _EFI_DISK_IO *This,
126 IN UINT32 MediaId,
127 IN UINT64 Offset,
128 IN UINTN BufferSize,
129 OUT VOID *Buffer
130 );
131
132
133typedef
134EFI_STATUS
135(EFIAPI *EFI_DISK_WRITE) (
136 IN struct _EFI_DISK_IO *This,
137 IN UINT32 MediaId,
138 IN UINT64 Offset,
139 IN UINTN BufferSize,
140 IN VOID *Buffer
141 );
142
143
144typedef struct _EFI_DISK_IO {
145 UINT64 Revision;
146 EFI_DISK_READ ReadDisk;
147 EFI_DISK_WRITE WriteDisk;
148} EFI_DISK_IO;
149
150
151//
152// Simple file system protocol
153//
154
155#define SIMPLE_FILE_SYSTEM_PROTOCOL \
156 { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
157
158INTERFACE_DECL(_EFI_FILE_IO_INTERFACE);
159INTERFACE_DECL(_EFI_FILE_HANDLE);
160
161typedef
162EFI_STATUS
163(EFIAPI *EFI_VOLUME_OPEN) (
164 IN struct _EFI_FILE_IO_INTERFACE *This,
165 OUT struct _EFI_FILE_HANDLE **Root
166 );
167
168#define EFI_FILE_IO_INTERFACE_REVISION 0x00010000
169
170typedef struct _EFI_FILE_IO_INTERFACE {
171 UINT64 Revision;
172 EFI_VOLUME_OPEN OpenVolume;
173} EFI_FILE_IO_INTERFACE;
174
175//
176//
177//
178
179typedef
180EFI_STATUS
181(EFIAPI *EFI_FILE_OPEN) (
182 IN struct _EFI_FILE_HANDLE *File,
183 OUT struct _EFI_FILE_HANDLE **NewHandle,
184 IN CHAR16 *FileName,
185 IN UINT64 OpenMode,
186 IN UINT64 Attributes
187 );
188
189// Open modes
190#define EFI_FILE_MODE_READ 0x0000000000000001
191#define EFI_FILE_MODE_WRITE 0x0000000000000002
192#define EFI_FILE_MODE_CREATE 0x8000000000000000
193
194// File attributes
195#define EFI_FILE_READ_ONLY 0x0000000000000001
196#define EFI_FILE_HIDDEN 0x0000000000000002
197#define EFI_FILE_SYSTEM 0x0000000000000004
198#define EFI_FILE_RESERVIED 0x0000000000000008
199#define EFI_FILE_DIRECTORY 0x0000000000000010
200#define EFI_FILE_ARCHIVE 0x0000000000000020
201#define EFI_FILE_VALID_ATTR 0x0000000000000037
202
203typedef
204EFI_STATUS
205(EFIAPI *EFI_FILE_CLOSE) (
206 IN struct _EFI_FILE_HANDLE *File
207 );
208
209typedef
210EFI_STATUS
211(EFIAPI *EFI_FILE_DELETE) (
212 IN struct _EFI_FILE_HANDLE *File
213 );
214
215typedef
216EFI_STATUS
217(EFIAPI *EFI_FILE_READ) (
218 IN struct _EFI_FILE_HANDLE *File,
219 IN OUT UINTN *BufferSize,
220 OUT VOID *Buffer
221 );
222
223typedef
224EFI_STATUS
225(EFIAPI *EFI_FILE_WRITE) (
226 IN struct _EFI_FILE_HANDLE *File,
227 IN OUT UINTN *BufferSize,
228 IN VOID *Buffer
229 );
230
231typedef
232EFI_STATUS
233(EFIAPI *EFI_FILE_SET_POSITION) (
234 IN struct _EFI_FILE_HANDLE *File,
235 IN UINT64 Position
236 );
237
238typedef
239EFI_STATUS
240(EFIAPI *EFI_FILE_GET_POSITION) (
241 IN struct _EFI_FILE_HANDLE *File,
242 OUT UINT64 *Position
243 );
244
245typedef
246EFI_STATUS
247(EFIAPI *EFI_FILE_GET_INFO) (
248 IN struct _EFI_FILE_HANDLE *File,
249 IN EFI_GUID *InformationType,
250 IN OUT UINTN *BufferSize,
251 OUT VOID *Buffer
252 );
253
254typedef
255EFI_STATUS
256(EFIAPI *EFI_FILE_SET_INFO) (
257 IN struct _EFI_FILE_HANDLE *File,
258 IN EFI_GUID *InformationType,
259 IN UINTN BufferSize,
260 IN VOID *Buffer
261 );
262
263typedef
264EFI_STATUS
265(EFIAPI *EFI_FILE_FLUSH) (
266 IN struct _EFI_FILE_HANDLE *File
267 );
268
269
270
271#define EFI_FILE_HANDLE_REVISION 0x00010000
272typedef struct _EFI_FILE_HANDLE {
273 UINT64 Revision;
274 EFI_FILE_OPEN Open;
275 EFI_FILE_CLOSE Close;
276 EFI_FILE_DELETE Delete;
277 EFI_FILE_READ Read;
278 EFI_FILE_WRITE Write;
279 EFI_FILE_GET_POSITION GetPosition;
280 EFI_FILE_SET_POSITION SetPosition;
281 EFI_FILE_GET_INFO GetInfo;
282 EFI_FILE_SET_INFO SetInfo;
283 EFI_FILE_FLUSH Flush;
284} EFI_FILE, *EFI_FILE_HANDLE;
285
286
287//
288// File information types
289//
290
291#define EFI_FILE_INFO_ID \
292 { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
293
294typedef struct {
295 UINT64 Size;
296 UINT64 FileSize;
297 UINT64 PhysicalSize;
298 EFI_TIME CreateTime;
299 EFI_TIME LastAccessTime;
300 EFI_TIME ModificationTime;
301 UINT64 Attribute;
302 CHAR16 FileName[1];
303} EFI_FILE_INFO;
304
305//
306// The FileName field of the EFI_FILE_INFO data structure is variable length.
307// Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
308// be the size of the data structure without the FileName field. The following macro
309// computes this size correctly no matter how big the FileName array is declared.
310// This is required to make the EFI_FILE_INFO data structure ANSI compilant.
311//
312
313#define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName)
314
315#define EFI_FILE_SYSTEM_INFO_ID \
316 { 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
317
318typedef struct {
319 UINT64 Size;
320 BOOLEAN ReadOnly;
321 UINT64 VolumeSize;
322 UINT64 FreeSpace;
323 UINT32 BlockSize;
324 CHAR16 VolumeLabel[1];
325} EFI_FILE_SYSTEM_INFO;
326
327//
328// The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
329// Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
330// to be the size of the data structure without the VolumeLable field. The following macro
331// computes this size correctly no matter how big the VolumeLable array is declared.
332// This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
333//
334
335#define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel)
336
337#define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID \
338 { 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
339
340typedef struct {
341 CHAR16 VolumeLabel[1];
342} EFI_FILE_SYSTEM_VOLUME_LABEL_INFO;
343
344#define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
345
346//
347// Load file protocol
348//
349
350
351#define LOAD_FILE_PROTOCOL \
352 { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
353
354INTERFACE_DECL(_EFI_LOAD_FILE_INTERFACE);
355
356typedef
357EFI_STATUS
358(EFIAPI *EFI_LOAD_FILE) (
359 IN struct _EFI_LOAD_FILE_INTERFACE *This,
360 IN EFI_DEVICE_PATH *FilePath,
361 IN BOOLEAN BootPolicy,
362 IN OUT UINTN *BufferSize,
363 IN VOID *Buffer OPTIONAL
364 );
365
366typedef struct _EFI_LOAD_FILE_INTERFACE {
367 EFI_LOAD_FILE LoadFile;
368} EFI_LOAD_FILE_INTERFACE;
369
370
371//
372// Device IO protocol
373//
374
375#define DEVICE_IO_PROTOCOL \
376 { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
377
378INTERFACE_DECL(_EFI_DEVICE_IO_INTERFACE);
379
380typedef enum {
381 IO_UINT8,
382 IO_UINT16,
383 IO_UINT32,
384 IO_UINT64,
385//
386// Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
387//
388 MMIO_COPY_UINT8,
389 MMIO_COPY_UINT16,
390 MMIO_COPY_UINT32,
391 MMIO_COPY_UINT64
392} EFI_IO_WIDTH;
393
394#define EFI_PCI_ADDRESS(_bus,_dev,_func) \
395 ( (UINT64) ( (((UINTN)_bus) << 24) + (((UINTN)_dev) << 16) + (((UINTN)_func) << 8) ) )
396
397
398typedef
399EFI_STATUS
400(EFIAPI *EFI_DEVICE_IO) (
401 IN struct _EFI_DEVICE_IO_INTERFACE *This,
402 IN EFI_IO_WIDTH Width,
403 IN UINT64 Address,
404 IN UINTN Count,
405 IN OUT VOID *Buffer
406 );
407
408typedef struct {
409 EFI_DEVICE_IO Read;
410 EFI_DEVICE_IO Write;
411} EFI_IO_ACCESS;
412
413typedef
414EFI_STATUS
415(EFIAPI *EFI_PCI_DEVICE_PATH) (
416 IN struct _EFI_DEVICE_IO_INTERFACE *This,
417 IN UINT64 Address,
418 IN OUT EFI_DEVICE_PATH **PciDevicePath
419 );
420
421typedef enum {
422 EfiBusMasterRead,
423 EfiBusMasterWrite,
424 EfiBusMasterCommonBuffer
425} EFI_IO_OPERATION_TYPE;
426
427typedef
428EFI_STATUS
429(EFIAPI *EFI_IO_MAP) (
430 IN struct _EFI_DEVICE_IO_INTERFACE *This,
431 IN EFI_IO_OPERATION_TYPE Operation,
432 IN EFI_PHYSICAL_ADDRESS *HostAddress,
433 IN OUT UINTN *NumberOfBytes,
434 OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
435 OUT VOID **Mapping
436 );
437
438typedef
439EFI_STATUS
440(EFIAPI *EFI_IO_UNMAP) (
441 IN struct _EFI_DEVICE_IO_INTERFACE *This,
442 IN VOID *Mapping
443 );
444
445typedef
446EFI_STATUS
447(EFIAPI *EFI_IO_ALLOCATE_BUFFER) (
448 IN struct _EFI_DEVICE_IO_INTERFACE *This,
449 IN EFI_ALLOCATE_TYPE Type,
450 IN EFI_MEMORY_TYPE MemoryType,
451 IN UINTN Pages,
452 IN OUT EFI_PHYSICAL_ADDRESS *HostAddress
453 );
454
455typedef
456EFI_STATUS
457(EFIAPI *EFI_IO_FLUSH) (
458 IN struct _EFI_DEVICE_IO_INTERFACE *This
459 );
460
461typedef
462EFI_STATUS
463(EFIAPI *EFI_IO_FREE_BUFFER) (
464 IN struct _EFI_DEVICE_IO_INTERFACE *This,
465 IN UINTN Pages,
466 IN EFI_PHYSICAL_ADDRESS HostAddress
467 );
468
469typedef struct _EFI_DEVICE_IO_INTERFACE {
470 EFI_IO_ACCESS Mem;
471 EFI_IO_ACCESS Io;
472 EFI_IO_ACCESS Pci;
473 EFI_IO_MAP Map;
474 EFI_PCI_DEVICE_PATH PciDevicePath;
475 EFI_IO_UNMAP Unmap;
476 EFI_IO_ALLOCATE_BUFFER AllocateBuffer;
477 EFI_IO_FLUSH Flush;
478 EFI_IO_FREE_BUFFER FreeBuffer;
479} EFI_DEVICE_IO_INTERFACE;
480
481
482//
483// Unicode Collation protocol
484//
485
486#define UNICODE_COLLATION_PROTOCOL \
487 { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
488
489#define UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff)
490
491INTERFACE_DECL(_EFI_UNICODE_COLLATION_INTERFACE);
492
493typedef
494INTN
495(EFIAPI *EFI_UNICODE_STRICOLL) (
496 IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
497 IN CHAR16 *s1,
498 IN CHAR16 *s2
499 );
500
501typedef
502BOOLEAN
503(EFIAPI *EFI_UNICODE_METAIMATCH) (
504 IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
505 IN CHAR16 *String,
506 IN CHAR16 *Pattern
507 );
508
509typedef
510VOID
511(EFIAPI *EFI_UNICODE_STRLWR) (
512 IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
513 IN OUT CHAR16 *Str
514 );
515
516typedef
517VOID
518(EFIAPI *EFI_UNICODE_STRUPR) (
519 IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
520 IN OUT CHAR16 *Str
521 );
522
523typedef
524VOID
525(EFIAPI *EFI_UNICODE_FATTOSTR) (
526 IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
527 IN UINTN FatSize,
528 IN CHAR8 *Fat,
529 OUT CHAR16 *String
530 );
531
532typedef
533BOOLEAN
534(EFIAPI *EFI_UNICODE_STRTOFAT) (
535 IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
536 IN CHAR16 *String,
537 IN UINTN FatSize,
538 OUT CHAR8 *Fat
539 );
540
541
542typedef struct _EFI_UNICODE_COLLATION_INTERFACE {
543
544 // general
545 EFI_UNICODE_STRICOLL StriColl;
546 EFI_UNICODE_METAIMATCH MetaiMatch;
547 EFI_UNICODE_STRLWR StrLwr;
548 EFI_UNICODE_STRUPR StrUpr;
549
550 // for supporting fat volumes
551 EFI_UNICODE_FATTOSTR FatToStr;
552 EFI_UNICODE_STRTOFAT StrToFat;
553
554 CHAR8 *SupportedLanguages;
555} EFI_UNICODE_COLLATION_INTERFACE;
556
557#endif
558
Note: See TracBrowser for help on using the repository browser.