mirror of https://github.com/acidanthera/audk.git
MdePkg: Add BootManagerPolicy protocol definition.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17404 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
1634214dbb
commit
b9eb59f866
|
@ -0,0 +1,138 @@
|
||||||
|
/** @file
|
||||||
|
Boot Manager Policy Protocol as defined in UEFI Specification.
|
||||||
|
|
||||||
|
This protocol is used by EFI Applications to request the UEFI Boot Manager
|
||||||
|
to connect devices using platform policy.
|
||||||
|
|
||||||
|
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
||||||
|
This program and the accompanying materials
|
||||||
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef __BOOT_MANAGER_POLICY_H__
|
||||||
|
#define __BOOT_MANAGER_POLICY_H__
|
||||||
|
|
||||||
|
#define EFI_BOOT_MANAGER_POLICY_PROTOCOL_GUID \
|
||||||
|
{ \
|
||||||
|
0xFEDF8E0C, 0xE147, 0x11E3, { 0x99, 0x03, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define EFI_BOOT_MANAGER_POLICY_CONSOLE_GUID \
|
||||||
|
{ \
|
||||||
|
0xCAB0E94C, 0xE15F, 0x11E3, { 0x91, 0x8D, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define EFI_BOOT_MANAGER_POLICY_NETWORK_GUID \
|
||||||
|
{ \
|
||||||
|
0xD04159DC, 0xE15F, 0x11E3, { 0xB2, 0x61, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define EFI_BOOT_MANAGER_POLICY_CONNECT_ALL_GUID \
|
||||||
|
{ \
|
||||||
|
0x113B2126, 0xFC8A, 0x11E3, { 0xBD, 0x6C, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA } \
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL EFI_BOOT_MANAGER_POLICY_PROTOCOL;
|
||||||
|
|
||||||
|
#define EFI_BOOT_MANAGER_POLICY_PROTOCOL_REVISION 0x00010000
|
||||||
|
|
||||||
|
/**
|
||||||
|
Connect a device path following the platforms EFI Boot Manager policy.
|
||||||
|
|
||||||
|
The ConnectDevicePath() function allows the caller to connect a DevicePath using the
|
||||||
|
same policy as the EFI Boot Manger.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_BOOT_MANAGER_POLICY_PROTOCOL instance.
|
||||||
|
@param[in] DevicePath Points to the start of the EFI device path to connect.
|
||||||
|
If DevicePath is NULL then all the controllers in the
|
||||||
|
system will be connected using the platforms EFI Boot
|
||||||
|
Manager policy.
|
||||||
|
@param[in] Recursive If TRUE, then ConnectController() is called recursively
|
||||||
|
until the entire tree of controllers below the
|
||||||
|
controller specified by DevicePath have been created.
|
||||||
|
If FALSE, then the tree of controllers is only expanded
|
||||||
|
one level. If DevicePath is NULL then Recursive is ignored.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The DevicePath was connected.
|
||||||
|
@retval EFI_NOT_FOUND The DevicePath was not found.
|
||||||
|
@retval EFI_NOT_FOUND No driver was connected to DevicePath.
|
||||||
|
@retval EFI_SECURITY_VIOLATION The user has no permission to start UEFI device
|
||||||
|
drivers on the DevicePath.
|
||||||
|
@retval EFI_UNSUPPORTED The current TPL is not TPL_APPLICATION.
|
||||||
|
**/
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_PATH)(
|
||||||
|
IN EFI_BOOT_MANAGER_POLICY_PROTOCOL *This,
|
||||||
|
IN EFI_DEVICE_PATH *DevicePath,
|
||||||
|
IN BOOLEAN Recursive
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Connect a class of devices using the platform Boot Manager policy.
|
||||||
|
|
||||||
|
The ConnectDeviceClass() function allows the caller to request that the Boot
|
||||||
|
Manager connect a class of devices.
|
||||||
|
|
||||||
|
If Class is EFI_BOOT_MANAGER_POLICY_CONSOLE_GUID then the Boot Manager will
|
||||||
|
use platform policy to connect consoles. Some platforms may restrict the
|
||||||
|
number of consoles connected as they attempt to fast boot, and calling
|
||||||
|
ConnectDeviceClass() with a Class value of EFI_BOOT_MANAGER_POLICY_CONSOLE_GUID
|
||||||
|
must connect the set of consoles that follow the Boot Manager platform policy,
|
||||||
|
and the EFI_SIMPLE_TEXT_INPUT_PROTOCOL, EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL, and
|
||||||
|
the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL are produced on the connected handles.
|
||||||
|
The Boot Manager may restrict which consoles get connect due to platform policy,
|
||||||
|
for example a security policy may require that a given console is not connected.
|
||||||
|
|
||||||
|
If Class is EFI_BOOT_MANAGER_POLICY_NETWORK_GUID then the Boot Manager will
|
||||||
|
connect the protocols the platforms supports for UEFI general purpose network
|
||||||
|
applications on one or more handles. If more than one network controller is
|
||||||
|
available a platform will connect, one, many, or all of the networks based
|
||||||
|
on platform policy. Connecting UEFI networking protocols, like EFI_DHCP4_PROTOCOL,
|
||||||
|
does not establish connections on the network. The UEFI general purpose network
|
||||||
|
application that called ConnectDeviceClass() may need to use the published
|
||||||
|
protocols to establish the network connection. The Boot Manager can optionally
|
||||||
|
have a policy to establish a network connection.
|
||||||
|
|
||||||
|
If Class is EFI_BOOT_MANAGER_POLICY_CONNECT_ALL_GUID then the Boot Manager
|
||||||
|
will connect all UEFI drivers using the UEFI Boot Service
|
||||||
|
EFI_BOOT_SERVICES.ConnectController(). If the Boot Manager has policy
|
||||||
|
associated with connect all UEFI drivers this policy will be used.
|
||||||
|
|
||||||
|
A platform can also define platform specific Class values as a properly generated
|
||||||
|
EFI_GUID would never conflict with this specification.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_BOOT_MANAGER_POLICY_PROTOCOL instance.
|
||||||
|
@param[in] Class A pointer to an EFI_GUID that represents a class of devices
|
||||||
|
that will be connected using the Boot Mangers platform policy.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS At least one devices of the Class was connected.
|
||||||
|
@retval EFI_DEVICE_ERROR Devices were not connected due to an error.
|
||||||
|
@retval EFI_NOT_FOUND The Class is not supported by the platform.
|
||||||
|
@retval EFI_UNSUPPORTED The current TPL is not TPL_APPLICATION.
|
||||||
|
**/
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_CLASS)(
|
||||||
|
IN EFI_BOOT_MANAGER_POLICY_PROTOCOL *This,
|
||||||
|
IN EFI_GUID *Class
|
||||||
|
);
|
||||||
|
|
||||||
|
struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL {
|
||||||
|
UINT64 Revision;
|
||||||
|
EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_PATH ConnectDevicePath;
|
||||||
|
EFI_BOOT_MANAGER_POLICY_CONNECT_DEVICE_CLASS ConnectDeviceClass;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern EFI_GUID gEfiBootManagerPolicyProtocolGuid;
|
||||||
|
|
||||||
|
extern EFI_GUID gEfiBootManagerPolicyConsoleGuid;
|
||||||
|
extern EFI_GUID gEfiBootManagerPolicyNetworkGuid;
|
||||||
|
extern EFI_GUID gEfiBootManagerPolicyConnectAllGuid;
|
||||||
|
|
||||||
|
#endif
|
|
@ -586,6 +586,11 @@
|
||||||
## Include/Guid/SmBios.h
|
## Include/Guid/SmBios.h
|
||||||
gEfiSmbios3TableGuid = { 0xF2FD1544, 0x9794, 0x4A2C, { 0x99, 0x2E, 0xE5, 0xBB, 0xCF, 0x20, 0xE3, 0x94 }}
|
gEfiSmbios3TableGuid = { 0xF2FD1544, 0x9794, 0x4A2C, { 0x99, 0x2E, 0xE5, 0xBB, 0xCF, 0x20, 0xE3, 0x94 }}
|
||||||
|
|
||||||
|
## Include/Protocol/BootManagerPolicy.h
|
||||||
|
gEfiBootManagerPolicyConsoleGuid = { 0xCAB0E94C, 0xE15F, 0x11E3, { 0x91, 0x8D, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA }}
|
||||||
|
gEfiBootManagerPolicyNetworkGuid = { 0xD04159DC, 0xE15F, 0x11E3, { 0xB2, 0x61, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA }}
|
||||||
|
gEfiBootManagerPolicyConnectAllGuid = { 0x113B2126, 0xFC8A, 0x11E3, { 0xBD, 0x6C, 0xB8, 0xE8, 0x56, 0x2C, 0xBA, 0xFA }}
|
||||||
|
|
||||||
#
|
#
|
||||||
# GUID defined in PI1.0
|
# GUID defined in PI1.0
|
||||||
#
|
#
|
||||||
|
@ -1488,6 +1493,9 @@
|
||||||
## Include/Protocol/RegularExpressionProtocol.h
|
## Include/Protocol/RegularExpressionProtocol.h
|
||||||
gEfiRegularExpressionProtocolGuid = { 0xB3F79D9A, 0x436C, 0xDC11, {0xB0, 0x52, 0xCD, 0x85, 0xDF, 0x52, 0x4C, 0xE6 }}
|
gEfiRegularExpressionProtocolGuid = { 0xB3F79D9A, 0x436C, 0xDC11, {0xB0, 0x52, 0xCD, 0x85, 0xDF, 0x52, 0x4C, 0xE6 }}
|
||||||
|
|
||||||
|
## Include/Protocol/BootManagerPolicy.h
|
||||||
|
gEfiBootManagerPolicyProtocolGuid = { 0xfedf8e0c, 0xe147, 0x11e3, { 0x99, 0x03, 0xb8, 0xe8, 0x56, 0x2c, 0xba, 0xfa }}
|
||||||
|
|
||||||
#
|
#
|
||||||
# [Error.gEfiMdePkgTokenSpaceGuid]
|
# [Error.gEfiMdePkgTokenSpaceGuid]
|
||||||
# 0x80000001 | Invalid value provided.
|
# 0x80000001 | Invalid value provided.
|
||||||
|
|
Loading…
Reference in New Issue