/** @file | |
This PRM Module demonstrates how to define an ACPI parameter buffer that is used by a PRM handler. | |
Copyright (c) Microsoft Corporation | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#include <PrmModule.h> | |
#include <Library/BaseLib.h> | |
#include <Library/UefiLib.h> | |
// TEMP | |
#include <Library/DebugLib.h> | |
#define PARAM_BUFFER_TEST_SIGNATURE SIGNATURE_32('T','E','S','T') | |
// | |
// PRM Handler GUIDs | |
// | |
// {2e4f2d13-6240-4ed0-a401-c723fbdc34e8} | |
#define CHECK_PARAM_BUFFER_PRM_HANDLER_GUID {0x2e4f2d13, 0x6240, 0x4ed0, {0xa4, 0x01, 0xc7, 0x23, 0xfb, 0xdc, 0x34, 0xe8}} | |
/** | |
A sample Platform Runtime Mechanism (PRM) handler. | |
This sample handler checks if a parameter buffer is provided with the data signature | |
('T', 'E', 'S', 'T') at the beginning of the buffer. | |
The contents are expected to be updated by ACPI code at OS runtime. | |
@param[in] ParameterBuffer A pointer to the PRM handler parameter buffer | |
@param[in] ContextBUffer A pointer to the PRM handler context buffer | |
@retval EFI_STATUS The PRM handler executed successfully. | |
@retval Others An error occurred in the PRM handler. | |
**/ | |
PRM_HANDLER_EXPORT (CheckParamBufferPrmHandler) { | |
if (ParameterBuffer == NULL) { | |
return EFI_INVALID_PARAMETER; | |
} | |
if (*((UINT32 *)ParameterBuffer) == PARAM_BUFFER_TEST_SIGNATURE) { | |
return EFI_SUCCESS; | |
} | |
return EFI_NOT_FOUND; | |
} | |
// | |
// Register the PRM export information for this PRM Module | |
// | |
PRM_MODULE_EXPORT ( | |
PRM_HANDLER_EXPORT_ENTRY (CHECK_PARAM_BUFFER_PRM_HANDLER_GUID, CheckParamBufferPrmHandler) | |
); | |
/** | |
Module entry point. | |
@param[in] ImageHandle The image handle. | |
@param[in] SystemTable A pointer to the system table. | |
@retval EFI_SUCCESS This function always returns success. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
PrmSampleAcpiParameterBufferModuleInit ( | |
IN EFI_HANDLE ImageHandle, | |
IN EFI_SYSTEM_TABLE *SystemTable | |
) | |
{ | |
return EFI_SUCCESS; | |
} |