mirror of https://github.com/acidanthera/audk.git
66 lines
1.6 KiB
C
66 lines
1.6 KiB
C
/** @file
|
|
Detection code for hypervisor debug port.
|
|
Non-SEC instance, caches the result of detection.
|
|
|
|
Copyright (c) 2017, Red Hat, Inc.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#include <Base.h>
|
|
#include "DebugLibDetect.h"
|
|
|
|
//
|
|
// Set to TRUE if the debug I/O port has been checked
|
|
//
|
|
STATIC BOOLEAN mDebugIoPortChecked = FALSE;
|
|
|
|
//
|
|
// Set to TRUE if the debug I/O port is enabled
|
|
//
|
|
STATIC BOOLEAN mDebugIoPortFound = FALSE;
|
|
|
|
/**
|
|
This constructor function must not do anything.
|
|
|
|
Some modules consuming this library instance, such as the DXE Core, invoke
|
|
the DEBUG() macro before they explicitly call
|
|
ProcessLibraryConstructorList(). Therefore the auto-generated call from
|
|
ProcessLibraryConstructorList() to this constructor function may be preceded
|
|
by some calls to PlatformDebugLibIoPortFound() below. Hence
|
|
PlatformDebugLibIoPortFound() must not rely on anything this constructor
|
|
could set up.
|
|
|
|
@retval RETURN_SUCCESS The constructor always returns RETURN_SUCCESS.
|
|
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
PlatformDebugLibIoPortConstructor (
|
|
VOID
|
|
)
|
|
{
|
|
return RETURN_SUCCESS;
|
|
}
|
|
|
|
/**
|
|
At the first call, check if the debug I/O port device is present, and cache
|
|
the result for later use. At subsequent calls, return the cached result.
|
|
|
|
@retval TRUE if the debug I/O port device was detected.
|
|
@retval FALSE otherwise
|
|
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
PlatformDebugLibIoPortFound (
|
|
VOID
|
|
)
|
|
{
|
|
if (!mDebugIoPortChecked) {
|
|
mDebugIoPortFound = PlatformDebugLibIoPortDetect ();
|
|
mDebugIoPortChecked = TRUE;
|
|
}
|
|
return mDebugIoPortFound;
|
|
}
|