Vishal Bhoj | 82c8071 | 2015-12-15 21:13:33 +0530 | [diff] [blame^] | 1 | /** @file
|
| 2 | Boot Device Selection Architectural Protocol as defined in PI spec Volume 2 DXE
|
| 3 |
|
| 4 | When the DXE core is done it calls the BDS via this protocol.
|
| 5 |
|
| 6 | Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
|
| 7 | This program and the accompanying materials
|
| 8 | are licensed and made available under the terms and conditions of the BSD License
|
| 9 | which accompanies this distribution. The full text of the license may be found at
|
| 10 | http://opensource.org/licenses/bsd-license.php
|
| 11 |
|
| 12 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
| 13 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
| 14 |
|
| 15 | **/
|
| 16 |
|
| 17 | #ifndef __ARCH_PROTOCOL_BDS_H__
|
| 18 | #define __ARCH_PROTOCOL_BDS_H__
|
| 19 |
|
| 20 | ///
|
| 21 | /// Global ID for the BDS Architectural Protocol
|
| 22 | ///
|
| 23 | #define EFI_BDS_ARCH_PROTOCOL_GUID \
|
| 24 | { 0x665E3FF6, 0x46CC, 0x11d4, {0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D } }
|
| 25 |
|
| 26 | ///
|
| 27 | /// Declare forward reference for the BDS Architectural Protocol
|
| 28 | ///
|
| 29 | typedef struct _EFI_BDS_ARCH_PROTOCOL EFI_BDS_ARCH_PROTOCOL;
|
| 30 |
|
| 31 | /**
|
| 32 | This function uses policy data from the platform to determine what operating
|
| 33 | system or system utility should be loaded and invoked. This function call
|
| 34 | also optionally make the use of user input to determine the operating system
|
| 35 | or system utility to be loaded and invoked. When the DXE Core has dispatched
|
| 36 | all the drivers on the dispatch queue, this function is called. This
|
| 37 | function will attempt to connect the boot devices required to load and invoke
|
| 38 | the selected operating system or system utility. During this process,
|
| 39 | additional firmware volumes may be discovered that may contain addition DXE
|
| 40 | drivers that can be dispatched by the DXE Core. If a boot device cannot be
|
| 41 | fully connected, this function calls the DXE Service Dispatch() to allow the
|
| 42 | DXE drivers from any newly discovered firmware volumes to be dispatched.
|
| 43 | Then the boot device connection can be attempted again. If the same boot
|
| 44 | device connection operation fails twice in a row, then that boot device has
|
| 45 | failed, and should be skipped. This function should never return.
|
| 46 |
|
| 47 | @param This The EFI_BDS_ARCH_PROTOCOL instance.
|
| 48 |
|
| 49 | @return None.
|
| 50 |
|
| 51 | **/
|
| 52 | typedef
|
| 53 | VOID
|
| 54 | (EFIAPI *EFI_BDS_ENTRY)(
|
| 55 | IN EFI_BDS_ARCH_PROTOCOL *This
|
| 56 | );
|
| 57 |
|
| 58 | ///
|
| 59 | /// The EFI_BDS_ARCH_PROTOCOL transfers control from DXE to an operating
|
| 60 | /// system or a system utility. If there are not enough drivers initialized
|
| 61 | /// when this protocol is used to access the required boot device(s), then
|
| 62 | /// this protocol should add drivers to the dispatch queue and return control
|
| 63 | /// back to the dispatcher. Once the required boot devices are available, then
|
| 64 | /// the boot device can be used to load and invoke an OS or a system utility.
|
| 65 | ///
|
| 66 | struct _EFI_BDS_ARCH_PROTOCOL {
|
| 67 | EFI_BDS_ENTRY Entry;
|
| 68 | };
|
| 69 |
|
| 70 | extern EFI_GUID gEfiBdsArchProtocolGuid;
|
| 71 |
|
| 72 | #endif
|