REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3812 Adds a new package to maintain Platform Runtime Mechanism (PRM) support. This package is intended to include generic code that provides a common infrastructure to support PRM in firmware and a collection of sample PRM modules that demonstrate how to use the interfaces and other package resources to author a PRM module. The following initial headers are included in this commit: * Prm.h - Includes common content for PRM with no dependencies on other PRM header files. * PrmContextBuffer.h - Includes definitions for PRM context buffers. Context buffers are standardized structures that point to various resources available to a PRM handler during its execution. * PrmDataBuffer.h - Includes definitions for PRM data buffers. Within the context of PRM, these data buffers are composed of a generic header followed by a variable length blob of arbitrary data. * PrmExportDescriptor.h - Includes definitions for creating PRM export descriptors. A PRM export descriptor is a structure referenced in the export table of PRM module that contains PRM-specific metadata about the module. * PrmMmio.h - Includes definitions for describing MMIO ranges uses by PRM modules. * PrmModule.h - Includes definitions commonly used by PRM module authors. This file is provided to serve as a convenient include for PRM module authors. * PrmOsServices.h - Includes content specific to PRM OS services. OS Services will not planned to be present in the final version of PRM. The OS Services have been reduced to a simple debug print function. So this is currently planned to be a temporary file to support debugging during PRM development. Note: Modules built for the UEFI environment can be built by Visual Studio and non-Visual Studio toolchains. However, PRM modules are currently only supported on Visual Studio toolchain due to usage of export tables. Cc: Andrew Fish <afish@apple.com> Cc: Kang Gao <kang.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Michael Kubacki <michael.kubacki@microsoft.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Benjamin You <benjamin.you@intel.com> Cc: Liu Yun <yun.y.liu@intel.com> Cc: Ankit Sinha <ankit.sinha@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Acked-by: Michael D Kinney <michael.d.kinney@intel.com> Acked-by: Liming Gao <gaoliming@byosoft.com.cn> Acked-by: Leif Lindholm <quic_llindhol@quicinc.com> Reviewed-by: Ankit Sinha <ankit.sinha@intel.com>
51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
/** @file
|
|
|
|
Definitions for the Platform Runtime Mechanism (PRM) data buffer structures.
|
|
|
|
Copyright (c) Microsoft Corporation
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef PRM_DATA_BUFFER_H_
|
|
#define PRM_DATA_BUFFER_H_
|
|
|
|
#include <Uefi.h>
|
|
|
|
#define PRM_DATA_BUFFER_HEADER_SIGNATURE SIGNATURE_32('P','R','M','D')
|
|
|
|
#pragma pack(push, 1)
|
|
|
|
///
|
|
/// A generic header that describes the PRM data buffer.
|
|
///
|
|
typedef struct {
|
|
///
|
|
/// PRM Data Buffer signature.
|
|
///
|
|
UINT32 Signature;
|
|
///
|
|
/// Length of the entire data buffer, including the size of the header.
|
|
///
|
|
UINT32 Length;
|
|
} PRM_DATA_BUFFER_HEADER;
|
|
|
|
///
|
|
/// A PRM data buffer is a generic header followed by variable length arbitrary data.
|
|
///
|
|
typedef struct {
|
|
///
|
|
/// The header is required at the beginning of every PRM data buffer.
|
|
///
|
|
PRM_DATA_BUFFER_HEADER Header;
|
|
|
|
///
|
|
/// The beginning of data immediately follows the header.
|
|
///
|
|
UINT8 Data[1];
|
|
} PRM_DATA_BUFFER;
|
|
|
|
#pragma pack(pop)
|
|
|
|
#endif
|