mirror of https://github.com/acidanthera/audk.git
79 lines
2.0 KiB
C
79 lines
2.0 KiB
C
/** @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;
|
|
}
|