OvmfPkg: QemuFwCfgLib: introduce InternalQemuFwCfgIsAvailable()

This internal function allows separation of library-internal and
for-clients external availability of fw_cfg.

The interface contract of QemuFwCfgIsAvailable() is changed so that now it
may modify fw_cfg state. All current users are compliant with the new
contract.

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@15044 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Laszlo Ersek
2014-01-03 19:57:17 +00:00
committed by jljusten
parent e55bf53ba9
commit 0dc231c9bd
2 changed files with 47 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
/** @file
Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>
Copyright (C) 2013, Red Hat, Inc.
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -81,6 +82,8 @@ IoWriteFifo8 (
Returns a boolean indicating if the firmware configuration interface
is available or not.
This function may change fw_cfg state.
@retval TRUE The interface is available
@retval FALSE The interface is not available
@@ -91,7 +94,7 @@ QemuFwCfgIsAvailable (
VOID
)
{
return mQemuFwCfgSupported;
return InternalQemuFwCfgIsAvailable ();
}
@@ -151,7 +154,7 @@ QemuFwCfgReadBytes (
IN VOID *Buffer
)
{
if (mQemuFwCfgSupported) {
if (InternalQemuFwCfgIsAvailable ()) {
InternalQemuFwCfgReadBytes (Size, Buffer);
} else {
ZeroMem (Buffer, Size);
@@ -176,7 +179,7 @@ QemuFwCfgWriteBytes (
IN VOID *Buffer
)
{
if (mQemuFwCfgSupported) {
if (InternalQemuFwCfgIsAvailable ()) {
IoWriteFifo8 (0x511, Size, Buffer);
}
}
@@ -319,7 +322,7 @@ QemuFwCfgFindFile (
UINT32 Count;
UINT32 Idx;
if (!mQemuFwCfgSupported) {
if (!InternalQemuFwCfgIsAvailable ()) {
return RETURN_UNSUPPORTED;
}
@@ -346,3 +349,22 @@ QemuFwCfgFindFile (
return RETURN_NOT_FOUND;
}
/**
Returns a boolean indicating if the firmware configuration interface is
available for library-internal purposes.
This function never changes fw_cfg state.
@retval TRUE The interface is available internally.
@retval FALSE The interface is not available internally.
**/
BOOLEAN
EFIAPI
InternalQemuFwCfgIsAvailable (
VOID
)
{
return mQemuFwCfgSupported;
}