1. Add AcpiTable & ComponentName2 Protocol definitions.
2. Add HardwareErrorVariable GUID definition.
EdkModulePkg: 
1. Update DxeCore to let InsatllConfigurationTable() signal the event group whenever a table entry is inserted, modified or deleted.
2. Update ConPlatform to let Simple Text In and Out  not share a stop function .

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2625 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qhuang8 2007-06-04 09:36:42 +00:00
parent dabd48785b
commit 06fb8ffd07
9 changed files with 403 additions and 28 deletions

View File

@ -125,6 +125,12 @@ Returns:
// Modify the table enty and return.
//
gDxeCoreST->ConfigurationTable[Index].VendorTable = Table;
//
// Signal Configuration Table change
//
CoreNotifySignalList (Guid);
return EFI_SUCCESS;
}
@ -210,5 +216,10 @@ Returns:
//
CalculateEfiHdrCrc (&gDxeCoreST->Hdr);
//
// Signal Configuration Table change
//
CoreNotifySignalList (Guid);
return EFI_SUCCESS;
}

View File

@ -17,15 +17,20 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define VARIABLE_STORE_SIGNATURE EFI_SIGNATURE_32 ('$', 'V', 'S', 'S')
#define MAX_VARIABLE_SIZE 1024
#define MAX_VARIABLE_SIZE 1024
#define VARIABLE_DATA 0x55AA
//
// Enlarges the hardware error record maximum variable size to 32K bytes
//
#define MAX_HARDWARE_ERROR_VARIABLE_SIZE 0x8000
#define VARIABLE_DATA 0x55AA
//
// Variable Store Header flags
//
#define VARIABLE_STORE_FORMATTED 0x5a
#define VARIABLE_STORE_HEALTHY 0xfe
#define VARIABLE_STORE_FORMATTED 0x5a
#define VARIABLE_STORE_HEALTHY 0xfe
//
// The alignment of variable's start offset.

View File

@ -22,7 +22,7 @@ Abstract:
EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextInDriverBinding = {
ConPlatformTextInDriverBindingSupported,
ConPlatformTextInDriverBindingStart,
ConPlatformDriverBindingStop,
ConPlatformTextInDriverBindingStop,
0xa,
NULL,
NULL
@ -31,7 +31,7 @@ EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextInDriverBinding = {
EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextOutDriverBinding = {
ConPlatformTextOutDriverBindingSupported,
ConPlatformTextOutDriverBindingStart,
ConPlatformDriverBindingStop,
ConPlatformTextOutDriverBindingStop,
0xa,
NULL,
NULL
@ -287,7 +287,6 @@ Returns:
EFI_STATUS Status;
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut;
BOOLEAN NeedClose;
NeedClose = TRUE;
@ -360,6 +359,7 @@ Returns:
DevicePath,
CHECK
);
if (!EFI_ERROR (Status)) {
NeedClose = FALSE;
Status = gBS->InstallMultipleProtocolInterfaces (
@ -403,7 +403,7 @@ Returns:
EFI_STATUS
EFIAPI
ConPlatformDriverBindingStop (
ConPlatformTextInDriverBindingStop (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN UINTN NumberOfChildren,
@ -443,13 +443,81 @@ Returns:
);
if (!EFI_ERROR (Status)) {
//
// Remove DevicePath from ConInDev, ConOutDev, and StdErrDev
// Remove DevicePath from ConInDev
//
ConPlatformUpdateDeviceVariable (
VarConsoleInpDev,
DevicePath,
DELETE
);
}
}
//
// Uninstall the Console Device GUIDs from Controller Handle
//
ConPlatformUnInstallProtocol (
This,
ControllerHandle,
&gEfiConsoleInDeviceGuid
);
//
// Close the Simple Input Protocol
//
gBS->CloseProtocol (
ControllerHandle,
&gEfiSimpleTextInProtocolGuid,
This->DriverBindingHandle,
ControllerHandle
);
return EFI_SUCCESS;
}
EFI_STATUS
EFIAPI
ConPlatformTextOutDriverBindingStop (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN UINTN NumberOfChildren,
IN EFI_HANDLE *ChildHandleBuffer
)
/*++
Routine Description:
Arguments:
(Standard DriverBinding Protocol Stop() function)
Returns:
None
--*/
{
EFI_STATUS Status;
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
//
// hot plug device is not included into the console associated variables,
// so no need to check variable for those hot plug devices.
//
if (!IsHotPlugDevice (This->DriverBindingHandle, ControllerHandle)) {
//
// Get the Device Path Protocol so the environment variables can be updated
//
Status = gBS->OpenProtocol (
ControllerHandle,
&gEfiDevicePathProtocolGuid,
(VOID **) &DevicePath,
This->DriverBindingHandle,
ControllerHandle,
EFI_OPEN_PROTOCOL_GET_PROTOCOL
);
if (!EFI_ERROR (Status)) {
//
// Remove DevicePath from ConOutDev, and StdErrDev
//
ConPlatformUpdateDeviceVariable (
VarConsoleOutDev,
DevicePath,
@ -465,12 +533,6 @@ Returns:
//
// Uninstall the Console Device GUIDs from Controller Handle
//
ConPlatformUnInstallProtocol (
This,
ControllerHandle,
&gEfiConsoleInDeviceGuid
);
ConPlatformUnInstallProtocol (
This,
ControllerHandle,
@ -484,15 +546,8 @@ Returns:
);
//
// Close the Simple Input and Simple Text Output Protocols
// Close the Simple Text Output Protocol
//
gBS->CloseProtocol (
ControllerHandle,
&gEfiSimpleTextInProtocolGuid,
This->DriverBindingHandle,
ControllerHandle
);
gBS->CloseProtocol (
ControllerHandle,
&gEfiSimpleTextOutProtocolGuid,
@ -503,6 +558,7 @@ Returns:
return EFI_SUCCESS;
}
VOID
ConPlatformUnInstallProtocol (
IN EFI_DRIVER_BINDING_PROTOCOL *This,

View File

@ -75,7 +75,16 @@ ConPlatformTextOutDriverBindingStart (
EFI_STATUS
EFIAPI
ConPlatformDriverBindingStop (
ConPlatformTextInDriverBindingStop (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE Handle,
IN UINTN NumberOfChildren,
IN EFI_HANDLE *ChildHandleBuffer
);
EFI_STATUS
EFIAPI
ConPlatformTextOutDriverBindingStop (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE Handle,
IN UINTN NumberOfChildren,

View File

@ -0,0 +1,30 @@
/** @file
GUID for hardware error record variables.
Copyright (c) 2007, Intel Corporation
All rights reserved. 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.
Module Name: HardwareErrorVariable.h
@par Revision Reference:
GUID defined in UEFI 2.1.
**/
#ifndef _HARDWARE_ERROR_VARIABLE_GUID_H_
#define _HARDWARE_ERROR_VARIABLE_GUID_H_
#define EFI_HARDWARE_ERROR_VARIABLE_GUID \
{ \
0x414E6BDD, 0xE47B, 0x47cc, {0xB2, 0x44, 0xBB, 0x61, 0x02, 0x0C, 0xF5, 0x16} \
}
extern EFI_GUID gEfiHardwareErrorVariableGuid;
#endif

View File

@ -0,0 +1,97 @@
/** @file
This protocol may be used to install or remove an ACPI table from a platform.
Copyright (c) 2007, Intel Corporation
All rights reserved. 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.
Module Name: AcpiTable.h
@par Revision Reference:
ACPI Table Protocol from the UEFI 2.1 specification.
**/
#ifndef __ACPI_TABLE_H__
#define __ACPI_TABLE_H__
//
// Global ID for the Acpi Table Protocol
//
#define EFI_ACPI_TABLE_PROTOCOL_GUID \
{ \
0xffe06bdd, 0x6107, 0x46a6, {0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \
}
typedef struct _EFI_ACPI_TABLE_PROTOCOL EFI_ACPI_TABLE_PROTOCOL;
#define UEFI_ACPI_TABLE_SIGNATURE EFI_SIGNATURE_32 ('U', 'E', 'F', 'I')
/**
Installs an ACPI table into the RSDT/XSDT.
@param This Protocol instance pointer.
@param AcpiTableBuffer A pointer to a buffer containing the ACPI table
to be installed.
@param AcpiTableBufferSize Specifies the size, in bytes, of the
AcpiTableBuffer buffer.
@param TableKey Reurns a key to refer to the ACPI table.
@retval EFI_SUCCESS The table was successfully inserted.
@retval EFI_INVALID_PARAMETER Either AcpiTableBuffer is NULL, TableKey is
NULL, or AcpiTableBufferSize and the size field
embedded in the ACPI table pointed to by
AcpiTableBuffer are not in sync.
@retval EFI_OUT_OF_RESOURCES Insufficient resources exist to complete the
request.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_TABLE_INSTALL_ACPI_TABLE) (
IN EFI_ACPI_TABLE_PROTOCOL *This,
IN VOID *AcpiTableBuffer,
IN UINTN AcpiTableBufferSize,
OUT UINTN *TableKey
)
;
/**
Removes an ACPI table from the RSDT/XSDT.
@param This Protocol instance pointer.
@param TableKey Specifies the table to uninstall. The key was
returned from InstallAcpiTable().
@retval EFI_SUCCESS The table was successfully uninstalled.
@retval EFI_NOT_FOUND TableKey does not refer to a valid key for a
table entry.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE) (
IN EFI_ACPI_TABLE_PROTOCOL *This,
IN UINTN TableKey
)
;
//
// Interface structure for the ACPI Table Protocol
//
struct _EFI_ACPI_TABLE_PROTOCOL {
EFI_ACPI_TABLE_INSTALL_ACPI_TABLE InstallAcpiTable;
EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE UninstallAcpiTable;
};
//
// Extern the GUID for protocol users.
//
extern EFI_GUID gEfiAcpiTableProtocolGuid;
#endif

View File

@ -0,0 +1,136 @@
/** @file
EFI Component Name 2 Protocol
Copyright (c) 2007, Intel Corporation
All rights reserved. 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.
Module Name: ComponentName2.h
@par Revision Reference:
Component Name 2 Protocol from the UEFI 2.1 specification.
**/
#ifndef _EFI_COMPONENT_NAME2_H_
#define _EFI_COMPONENT_NAME2_H_
//
// Global ID for the Component Name Protocol
//
#define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
{ \
0x6a7a5cff, 0xe8d9, 0x4f70, {0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14} \
}
typedef struct _EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL;
/**
Retrieves a Unicode string that is the user readable name of the EFI Driver.
@param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL
instance.
@param Language A pointer to a Null-terminated ASCII string array indicating the
language. This is the language of the driver name that the caller
is requesting, and it must match one of the languages specified in
SupportedLanguages. The number of languages supported by a
driver is up to the driver writer. Language is specified in RFC
3066 language code format.
@param DriverName A pointer to the Unicode string to return. This
Unicode string is the name of the driver
specified by This in the language specified by
Language.
@retval EFI_SUCCESS The Unicode string for the Driver specified by
This and the language specified by Language was
returned in DriverName.
@retval EFI_INVALID_PARAMETER Language is NULL or DriverName is NULL.
@retval EFI_UNSUPPORTED The driver specified by This does not support
the language specified by Language.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_COMPONENT_NAME2_GET_DRIVER_NAME) (
IN EFI_COMPONENT_NAME2_PROTOCOL *This,
IN CHAR8 *Language,
OUT CHAR16 **DriverName
);
/**
Retrieves a Unicode string that is the user readable name of the controller
that is being managed by an EFI Driver.
@param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL
instance.
@param ControllerHandle The handle of a controller that the driver
specified by This is managing. This handle
specifies the controller whose name is to be
returned.
@param ChildHandle The handle of the child controller to retrieve
the name of. This is an optional parameter
that may be NULL. It will be NULL for device
drivers. It will also be NULL for a bus
drivers that wish to retrieve the name of the
bus controller. It will not be NULL for a bus
driver that wishes to retrieve the name of a
child controller.
@param Language A pointer to a Null- terminated ASCII string array indicating the
language. This is the language of the controller name that the
caller is requesting, and it must match one of the languages
specified in SupportedLanguages. The number of languages
supported by a driver is up to the driver writer. Language is
specified in RFC 3066 language code format.
@param ControllerName A pointer to the Unicode string to return. This
Unicode string is the name of the controller
specified by ControllerHandle and ChildHandle
in the language specified by Language from the
point of view of the driver specified by This.
@retval EFI_SUCCESS The Unicode string for the user readable name in
the language specified by Language for the
driver specified by This was returned in
DriverName.
@retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE;
ChildHandle is not NULL and it is not a valid
EFI_HANDLE;Language is NULL;ControllerName is
NULL.
@retval EFI_UNSUPPORTED The driver specified by This is not currently
managing the controller specified by
ControllerHandle and ChildHandle;The driver
specified by This does not support the language
specified by Language.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) (
IN EFI_COMPONENT_NAME2_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN EFI_HANDLE ChildHandle OPTIONAL,
IN CHAR8 *Language,
OUT CHAR16 **ControllerName
);
//
// Interface structure for the Component Name 2 Protocol
//
struct _EFI_COMPONENT_NAME2_PROTOCOL {
EFI_COMPONENT_NAME2_GET_DRIVER_NAME GetDriverName;
EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME GetControllerName;
CHAR8 *SupportedLanguages;
};
//
// Extern the GUID for protocol users.
//
extern EFI_GUID gEfiComponentName2ProtocolGuid;
#endif

View File

@ -580,9 +580,10 @@ VOID
//
// Variable attributes
//
#define EFI_VARIABLE_NON_VOLATILE 0x00000001
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
#define EFI_VARIABLE_NON_VOLATILE 0x00000001
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008
/**
Returns the value of a variable.
@ -2329,7 +2330,7 @@ typedef enum {
//
// Protocols from EFI 1.10 that got thier names fixed in UEFI 2.0
// Protocols from EFI 1.10 that got their names fixed in UEFI 2.0
//
#include <Protocol/LoadedImage.h>
#include <Protocol/SimpleTextIn.h>
@ -2409,8 +2410,11 @@ typedef enum {
#include <Protocol/Mtftp4.h>
#include <Protocol/ServiceBinding.h>
#include <Protocol/Hash.h>
#include <Protocol/AcpiTable.h>
#include <Protocol/ComponentName2.h>
#include <Guid/EventGroup.h>
#include <Guid/HardwareErrorVariable.h>
#endif

View File

@ -352,6 +352,10 @@
<IncludeHeader>Include/Guid/EventGroup.h</IncludeHeader>
<HelpText/>
</IndustryStdHeader>
<IndustryStdHeader Name="HardwareErrorVariable">
<IncludeHeader>Include/Guid/HardwareErrorVariable.h</IncludeHeader>
<HelpText/>
</IndustryStdHeader>
<IndustryStdHeader Name="EventLegacyBios">
<IncludeHeader>Include/Guid/EventLegacyBios.h</IncludeHeader>
<HelpText/>
@ -708,6 +712,10 @@
<IncludeHeader>Include/Protocol/AcpiSupport.h</IncludeHeader>
<HelpText/>
</IndustryStdHeader>
<IndustryStdHeader Name="AcpiTable">
<IncludeHeader>Include/Protocol/AcpiTable.h</IncludeHeader>
<HelpText/>
</IndustryStdHeader>
<IndustryStdHeader Name="Arp">
<IncludeHeader>Include/Protocol/Arp.h</IncludeHeader>
<HelpText/>
@ -736,6 +744,10 @@
<IncludeHeader>Include/Protocol/ComponentName.h</IncludeHeader>
<HelpText/>
</IndustryStdHeader>
<IndustryStdHeader Name="ComponentName2">
<IncludeHeader>Include/Protocol/ComponentName2.h</IncludeHeader>
<HelpText/>
</IndustryStdHeader>
<IndustryStdHeader Name="CpuIo">
<IncludeHeader>Include/Protocol/CpuIo.h</IncludeHeader>
<HelpText/>
@ -1305,6 +1317,11 @@
<GuidValue>1BA0062E-C779-4582-8566-336AE8F78F09</GuidValue>
<HelpText/>
</Entry>
<Entry Name="HardwareErrorVariable">
<C_Name>gEfiHardwareErrorVariableGuid</C_Name>
<GuidValue>414E6BDD-E47B-47CC-B244-BB61020CF516</GuidValue>
<HelpText/>
</Entry>
<Entry Name="HobList">
<C_Name>gEfiHobListGuid</C_Name>
<GuidValue>7739F24C-93D7-11D4-9A3A-0090273FC14D</GuidValue>
@ -1657,6 +1674,11 @@
<GuidValue>107A772C-D5E1-11D4-9A46-0090273FC14D</GuidValue>
<HelpText/>
</Entry>
<Entry Name="ComponentName2">
<C_Name>gEfiComponentName2ProtocolGuid</C_Name>
<GuidValue>6A7A5CFF-E8D9-4F70-BADA-75AB3025CE14</GuidValue>
<HelpText/>
</Entry>
<Entry Name="DebugPort">
<C_Name>gEfiDebugPortProtocolGuid</C_Name>
<GuidValue>EBA4E8D2-3858-41EC-A281-2647BA9660D0</GuidValue>
@ -1997,6 +2019,11 @@
<GuidValue>DBFF9D55-89B7-46DA-BDDF-677D3DC0241D</GuidValue>
<HelpText/>
</Entry>
<Entry Name="AcpiSupport">
<C_Name>gEfiAcpiTableProtocolGuid</C_Name>
<GuidValue>FFE06BDD-6107-46A6-7BB2-5A9C7EC5275C</GuidValue>
<HelpText/>
</Entry>
<Entry Name="BootScriptSave">
<C_Name>gEfiBootScriptSaveProtocolGuid</C_Name>
<GuidValue>470E1529-B79E-4E32-A0FE-6A156D29F9B2</GuidValue>