OvmfPkg: AcpiPlatformDxe: extract common entry point

Currently the entry point functions of both driver builds
(AcpiPlatformDxe.inf and QemuFwCfgAcpiPlatformDxe.inf) directly contain
the logic that is different between the two builds.

Because we're going to restructure the entry point logic soon, we'd have
to duplicate the same new code between both entry point functions.

Push down the logic in which they differ to a new function:
- InstallAcpiTables() [AcpiPlatform.c]
- InstallAcpiTables() [QemuFwCfgAcpiPlatform.c]

and extract a common entry point function:
- AcpiPlatformEntryPoint() [EntryPoint.c]

which we can soon modify without code duplication.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16885 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Laszlo Ersek 2015-02-19 23:45:57 +00:00 committed by jljusten
parent f186536bdd
commit 04951644cd
7 changed files with 99 additions and 52 deletions

View File

@ -228,7 +228,7 @@ InstallOvmfFvTables (
} }
/** /**
Entrypoint of Acpi Platform driver. Effective entrypoint of Acpi Platform driver.
@param ImageHandle @param ImageHandle
@param SystemTable @param SystemTable
@ -240,23 +240,11 @@ InstallOvmfFvTables (
**/ **/
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
AcpiPlatformEntryPoint ( InstallAcpiTables (
IN EFI_HANDLE ImageHandle, IN EFI_ACPI_TABLE_PROTOCOL *AcpiTable
IN EFI_SYSTEM_TABLE *SystemTable
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_ACPI_TABLE_PROTOCOL *AcpiTable;
//
// Find the AcpiTable protocol
//
Status = gBS->LocateProtocol (
&gEfiAcpiTableProtocolGuid,
NULL,
(VOID**)&AcpiTable
);
ASSERT_EFI_ERROR (Status);
if (XenDetected ()) { if (XenDetected ()) {
Status = InstallXenTables (AcpiTable); Status = InstallXenTables (AcpiTable);

View File

@ -67,5 +67,11 @@ InstallQemuFwCfgTables (
IN EFI_ACPI_TABLE_PROTOCOL *AcpiProtocol IN EFI_ACPI_TABLE_PROTOCOL *AcpiProtocol
); );
EFI_STATUS
EFIAPI
InstallAcpiTables (
IN EFI_ACPI_TABLE_PROTOCOL *AcpiTable
);
#endif #endif

View File

@ -31,6 +31,7 @@
Qemu.c Qemu.c
QemuFwCfgAcpi.c QemuFwCfgAcpi.c
Xen.c Xen.c
EntryPoint.c
[Packages] [Packages]
MdePkg/MdePkg.dec MdePkg/MdePkg.dec

View File

@ -0,0 +1,47 @@
/** @file
Entry point of OVMF ACPI Platform Driver
Copyright (C) 2015, Red Hat, Inc.
Copyright (c) 2008 - 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.
**/
#include "AcpiPlatform.h"
STATIC
EFI_ACPI_TABLE_PROTOCOL *
FindAcpiTableProtocol (
VOID
)
{
EFI_STATUS Status;
EFI_ACPI_TABLE_PROTOCOL *AcpiTable;
Status = gBS->LocateProtocol (
&gEfiAcpiTableProtocolGuid,
NULL,
(VOID**)&AcpiTable
);
ASSERT_EFI_ERROR (Status);
return AcpiTable;
}
EFI_STATUS
EFIAPI
AcpiPlatformEntryPoint (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
Status = InstallAcpiTables (FindAcpiTableProtocol ());
return Status;
}

View File

@ -683,39 +683,3 @@ FreeLoader:
return Status; return Status;
} }
/**
Entrypoint of QEMU fw-cfg Acpi Platform driver.
@param ImageHandle
@param SystemTable
@return EFI_SUCCESS
@return EFI_LOAD_ERROR
@return EFI_OUT_OF_RESOURCES
**/
EFI_STATUS
EFIAPI
QemuFwCfgAcpiPlatformEntryPoint (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_ACPI_TABLE_PROTOCOL *AcpiTable;
//
// Find the AcpiTable protocol
//
Status = gBS->LocateProtocol (
&gEfiAcpiTableProtocolGuid,
NULL,
(VOID**)&AcpiTable
);
ASSERT_EFI_ERROR (Status);
Status = InstallQemuFwCfgTables (AcpiTable);
return Status;
}

View File

@ -0,0 +1,39 @@
/** @file
OVMF ACPI Platform Driver using QEMU's fw-cfg interface
Copyright (C) 2015, Red Hat, Inc.
Copyright (c) 2008 - 2014, 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.
**/
#include "AcpiPlatform.h"
/**
Effective entrypoint of QEMU fw-cfg Acpi Platform driver.
@param ImageHandle
@param SystemTable
@return EFI_SUCCESS
@return EFI_LOAD_ERROR
@return EFI_OUT_OF_RESOURCES
**/
EFI_STATUS
EFIAPI
InstallAcpiTables (
IN EFI_ACPI_TABLE_PROTOCOL *AcpiTable
)
{
EFI_STATUS Status;
Status = InstallQemuFwCfgTables (AcpiTable);
return Status;
}

View File

@ -18,7 +18,7 @@
FILE_GUID = 17985e6f-e778-4d94-aefa-c5dd2b77e186 FILE_GUID = 17985e6f-e778-4d94-aefa-c5dd2b77e186
MODULE_TYPE = DXE_DRIVER MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0 VERSION_STRING = 1.0
ENTRY_POINT = QemuFwCfgAcpiPlatformEntryPoint ENTRY_POINT = AcpiPlatformEntryPoint
# #
# The following information is for reference only and not required by the build tools. # The following information is for reference only and not required by the build tools.
@ -27,7 +27,9 @@
# #
[Sources] [Sources]
QemuFwCfgAcpiPlatform.c
QemuFwCfgAcpi.c QemuFwCfgAcpi.c
EntryPoint.c
[Packages] [Packages]
MdePkg/MdePkg.dec MdePkg/MdePkg.dec