mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
Replace traditional `#ifndef`/`#define`/`#endif` include guards with
`#pragma` once.
`#pragma once` is a widely supported preprocessor directive that
prevents header files from being included multiple times. It is
supported by all toolchains used to build edk2: GCC, Clang/LLVM, and
MSVC.
Compared to macro-based include guards, `#pragma once`:
- Eliminates the risk of macro name collisions or copy/paste errors
where two headers inadvertently use the same guard macro.
- Eliminate inconsistency in the way include guard macros are named
(e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.).
- Reduces boilerplate (three lines replaced by one).
- Avoids polluting the macro namespace with guard symbols.
- Can improve build times as the preprocessor can skip re-opening the
file entirely, rather than re-reading it to find the matching
`#endif` ("multiple-include optimization").
- Note that some compilers may already optimize traditional include
guards, by recognzining the idiomatic pattern.
This change is made acknowledging that overall portability of the
code will technically be reduced, as `#pragma once` is not part of the
C/C++ standards.
However, this is considered acceptable given:
1. edk2 already defines a subset of supported compilers in
BaseTools/Conf/tools_def.template, all of which have supported
`#pragma once` for over two decades.
2. There have been concerns raised to the project about inconsistent
include guard naming and potential macro collisions.
Approximate compiler support dates:
- MSVC: Supported since Visual C++ 4.2 (1996)
- GCC: Supported since 3.4 (2004)
(http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html)
- Clang (LLVM based): Since initial release in 2007
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
116 lines
3.2 KiB
C
116 lines
3.2 KiB
C
/** @file
|
|
This header file declares functions and type for common use.
|
|
|
|
Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#pragma once
|
|
|
|
typedef enum {
|
|
TraceHubDebugType = 0,
|
|
TraceHubCatalogType
|
|
} TRACEHUB_PRINTTYPE;
|
|
|
|
typedef enum {
|
|
TraceHubRoutingDisable = 0,
|
|
TraceHubRoutingEnable,
|
|
TraceHubRoutingMax
|
|
} TRACE_HUB_ROUTING;
|
|
|
|
typedef enum {
|
|
TraceHubDebugLevelError = 0,
|
|
TraceHubDebugLevelErrorWarning,
|
|
TraceHubDebugLevelErrorWarningInfo,
|
|
TraceHubDebugLevelErrorWarningInfoVerbose,
|
|
TraceHubDebugLevelMax
|
|
} TRACE_HUB_DEBUG_LEVEL;
|
|
|
|
/**
|
|
Conditionally determine whether to enable Trace Hub message.
|
|
|
|
@param[in] Flag Flag to enable or disable Trace Hub message.
|
|
@param[in] DbgLevel Debug Level of Trace Hub.
|
|
@param[in] SeverityType Severity type of input message.
|
|
|
|
@retval TRUE Enable trace hub message.
|
|
@retval FALSE Disable trace hub message.
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
TraceHubDataEnabled (
|
|
IN BOOLEAN Flag,
|
|
IN UINT8 DbgLevel,
|
|
IN TRACE_HUB_SEVERITY_TYPE SeverityType
|
|
);
|
|
|
|
/**
|
|
Convert GUID from LE to BE or BE to LE.
|
|
|
|
@param[in] Guid GUID that need to be converted.
|
|
@param[out] ConvertedGuid GUID that is converted.
|
|
**/
|
|
VOID
|
|
EFIAPI
|
|
SwapBytesGuid (
|
|
IN GUID *Guid,
|
|
OUT GUID *ConvertedGuid
|
|
);
|
|
|
|
/**
|
|
Check whether to output Trace Hub message according to some conditions.
|
|
Trace Hub message will be disabled if TraceHubDataEnabled() return FALSE
|
|
or Trace Hub MMIO address is 0.
|
|
|
|
@param[in, out] MipiSystHandle A pointer to MIPI_SYST_HANDLE structure.
|
|
@param[in] DbgContext A pointer to Trace Hub debug instance.
|
|
@param[in] SeverityType Severity type of input message.
|
|
@param[in] PrintType Either catalog print or debug print.
|
|
|
|
@retval RETURN_SUCCESS Current Trace Hub message need to be output.
|
|
@retval Other Current Trace Hub message will be disabled.
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
CheckWhetherToOutputMsg (
|
|
IN OUT MIPI_SYST_HANDLE *MipiSystHandle,
|
|
IN UINT8 *DbgContext,
|
|
IN TRACE_HUB_SEVERITY_TYPE SeverityType,
|
|
IN TRACEHUB_PRINTTYPE PrintType
|
|
);
|
|
|
|
/**
|
|
Get Trace Hub MMIO Address.
|
|
|
|
@param[in] DbgContext A pointer to Trace Hub debug instance.
|
|
@param[in, out] TraceAddress Trace Hub MMIO Address.
|
|
|
|
@retval RETURN_SUCCESS Operation is successfully.
|
|
@retval Other Operation is failed.
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
GetTraceHubMmioAddress (
|
|
IN UINT8 *DbgContext,
|
|
IN OUT UINT64 *TraceAddress
|
|
);
|
|
|
|
/**
|
|
Get visibility of Trace Hub Msg.
|
|
|
|
@param[in] DbgContext A pointer to Trace Hub debug instance.
|
|
@param[in, out] Flag Flag to enable or disable Trace Hub message.
|
|
@param[in, out] DbgLevel Debug Level of Trace Hub.
|
|
|
|
@retval RETURN_SUCCESS Operation is successfully.
|
|
@retval Other Operation is failed.
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
GetTraceHubMsgVisibility (
|
|
IN UINT8 *DbgContext,
|
|
IN OUT BOOLEAN *Flag,
|
|
IN OUT UINT8 *DbgLevel
|
|
);
|