summaryrefslogtreecommitdiffstats
path: root/PrmPkg/Include/PrmModule.h
blob: d7047d8eec58e30eff037d8036ca2f04aa911a42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/** @file

  Common definitions needed for Platform Runtime Mechanism (PRM) modules.

  Copyright (c) Microsoft Corporation
  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef PRM_MODULE_H_
#define PRM_MODULE_H_

#include <Prm.h>
#include <PrmContextBuffer.h>
#include <PrmDataBuffer.h>
#include <PrmExportDescriptor.h>
#include <PrmMmio.h>
#include <PrmOsServices.h>

/**
  Macro that provides a condensed form of a PRM Handler.

  This macro can be used to define a PRM Handler that uses the standard PRM Handle
  signature. It is simply provided for convenience.

**/
#define PRM_HANDLER_EXPORT(Name)                                                  \
  STATIC_ASSERT (sizeof (PRM_STRING_(Name)) <= PRM_HANDLER_NAME_MAXIMUM_LENGTH, "The PRM handler exceeds the maximum allowed size of 128.");  \
                                                                                  \
/**                                                                               \
  A Platform Runtime Mechanism (PRM) handler.                                     \
                                                                                  \
  @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.           \
                                                                                  \
**/                                                                               \
  EFI_STATUS                                    \
  PRM_EXPORT_API                                \
  EFIAPI                                        \
  Name (                                        \
    IN VOID                 *ParameterBuffer,   \
    IN PRM_CONTEXT_BUFFER   *ContextBuffer      \
    )                                           \

#endif