mirror of https://github.com/acidanthera/audk.git
84 lines
3.1 KiB
C
84 lines
3.1 KiB
C
/** @file
|
|
|
|
Copyright (c) 2023, Google LLC. All rights reserved.<BR>
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef EDKII_MEMORY_ATTRIBUTE_PPI_H_
|
|
#define EDKII_MEMORY_ATTRIBUTE_PPI_H_
|
|
|
|
#include <Uefi/UefiSpec.h>
|
|
|
|
///
|
|
/// Global ID for the EDKII_MEMORY_ATTRIBUTE_PPI.
|
|
///
|
|
#define EDKII_MEMORY_ATTRIBUTE_PPI_GUID \
|
|
{ \
|
|
0x1be840de, 0x2d92, 0x41ec, { 0xb6, 0xd3, 0x19, 0x64, 0x13, 0x50, 0x51, 0xfb } \
|
|
}
|
|
|
|
///
|
|
/// Forward declaration for the EDKII_MEMORY_ATTRIBUTE_PPI.
|
|
///
|
|
typedef struct _EDKII_MEMORY_ATTRIBUTE_PPI EDKII_MEMORY_ATTRIBUTE_PPI;
|
|
|
|
/**
|
|
Set the requested memory permission attributes on a region of memory.
|
|
|
|
BaseAddress and Length must be aligned to EFI_PAGE_SIZE.
|
|
|
|
Attributes must contain a combination of EFI_MEMORY_RP, EFI_MEMORY_RO and
|
|
EFI_MEMORY_XP, and specifies the attributes that must be set for the
|
|
region in question. Attributes that are omitted will be cleared from the
|
|
region only if they are set in AttributeMask.
|
|
|
|
AttributeMask must contain a combination of EFI_MEMORY_RP, EFI_MEMORY_RO and
|
|
EFI_MEMORY_XP, and specifies the attributes that the call will operate on.
|
|
AttributeMask must not be 0x0, and must contain at least the bits set in
|
|
Attributes.
|
|
|
|
@param[in] This The protocol instance pointer.
|
|
@param[in] BaseAddress The physical address that is the start address
|
|
of a memory region.
|
|
@param[in] Length The size in bytes of the memory region.
|
|
@param[in] Attributes Memory attributes to set or clear.
|
|
@param[in] AttributeMask Mask of memory attributes to operate on.
|
|
|
|
@retval EFI_SUCCESS The attributes were set for the memory region.
|
|
@retval EFI_INVALID_PARAMETER Length is zero.
|
|
AttributeMask is zero.
|
|
AttributeMask lacks bits set in Attributes.
|
|
BaseAddress or Length is not suitably aligned.
|
|
@retval EFI_UNSUPPORTED The processor does not support one or more
|
|
bytes of the memory resource range specified
|
|
by BaseAddress and Length.
|
|
The bit mask of attributes is not supported for
|
|
the memory resource range specified by
|
|
BaseAddress and Length.
|
|
@retval EFI_OUT_OF_RESOURCES Requested attributes cannot be applied due to
|
|
lack of system resources.
|
|
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EDKII_MEMORY_ATTRIBUTE_SET_PERMISSIONS)(
|
|
IN EDKII_MEMORY_ATTRIBUTE_PPI *This,
|
|
IN EFI_PHYSICAL_ADDRESS BaseAddress,
|
|
IN UINT64 Length,
|
|
IN UINT64 Attributes,
|
|
IN UINT64 AttributeMask
|
|
);
|
|
|
|
///
|
|
/// This PPI contains a set of services to manage memory permission attributes.
|
|
///
|
|
struct _EDKII_MEMORY_ATTRIBUTE_PPI {
|
|
EDKII_MEMORY_ATTRIBUTE_SET_PERMISSIONS SetPermissions;
|
|
};
|
|
|
|
extern EFI_GUID gEdkiiMemoryAttributePpiGuid;
|
|
|
|
#endif
|