TianoCore EDK2 master
Loading...
Searching...
No Matches
MemoryAttribute.c File Reference
#include "CpuDxe.h"

Go to the source code of this file.

Functions

STATIC BOOLEAN RegionIsSystemMemory (IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length)
 
STATIC EFI_STATUS GetMemoryAttributes (IN EFI_MEMORY_ATTRIBUTE_PROTOCOL *This, IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, OUT UINT64 *Attributes)
 
STATIC EFI_STATUS SetMemoryAttributes (IN EFI_MEMORY_ATTRIBUTE_PROTOCOL *This, IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes)
 
STATIC EFI_STATUS ClearMemoryAttributes (IN EFI_MEMORY_ATTRIBUTE_PROTOCOL *This, IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes)
 

Variables

EFI_MEMORY_ATTRIBUTE_PROTOCOL mMemoryAttribute
 

Detailed Description

Copyright (c) 2023, Google LLC. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file MemoryAttribute.c.

Function Documentation

◆ ClearMemoryAttributes()

STATIC EFI_STATUS ClearMemoryAttributes ( IN EFI_MEMORY_ATTRIBUTE_PROTOCOL This,
IN EFI_PHYSICAL_ADDRESS  BaseAddress,
IN UINT64  Length,
IN UINT64  Attributes 
)

This function clears given attributes of the memory region specified by BaseAddress and Length.

The valid Attributes is EFI_MEMORY_RP, EFI_MEMORY_XP, and EFI_MEMORY_RO.

Parameters
ThisThe EFI_MEMORY_ATTRIBUTE_PROTOCOL instance.
BaseAddressThe physical address that is the start address of a memory region.
LengthThe size in bytes of the memory region.
AttributesThe bit mask of attributes to clear for the memory region.
Return values
EFI_SUCCESSThe attributes were cleared for the memory region.
EFI_INVALID_PARAMETERLength is zero. Attributes specified an illegal combination of attributes that cannot be cleared together.
EFI_UNSUPPORTEDThe 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.
EFI_OUT_OF_RESOURCESRequested attributes cannot be applied due to lack of system resources.
EFI_ACCESS_DENIEDAttributes for the requested memory region are controlled by system firmware and cannot be updated via the protocol.

Definition at line 254 of file MemoryAttribute.c.

◆ GetMemoryAttributes()

STATIC EFI_STATUS GetMemoryAttributes ( IN EFI_MEMORY_ATTRIBUTE_PROTOCOL This,
IN EFI_PHYSICAL_ADDRESS  BaseAddress,
IN UINT64  Length,
OUT UINT64 *  Attributes 
)

This function retrieves the attributes of the memory region specified by BaseAddress and Length. If different attributes are obtained from different parts of the memory region, EFI_NO_MAPPING will be returned.

Parameters
ThisThe EFI_MEMORY_ATTRIBUTE_PROTOCOL instance.
BaseAddressThe physical address that is the start address of a memory region.
LengthThe size in bytes of the memory region.
AttributesPointer to attributes returned.
Return values
EFI_SUCCESSThe attributes got for the memory region.
EFI_INVALID_PARAMETERLength is zero. Attributes is NULL.
EFI_NO_MAPPINGAttributes are not consistent cross the memory region.
EFI_UNSUPPORTEDThe processor does not support one or more bytes of the memory resource range specified by BaseAddress and Length.

Definition at line 70 of file MemoryAttribute.c.

◆ RegionIsSystemMemory()

STATIC BOOLEAN RegionIsSystemMemory ( IN EFI_PHYSICAL_ADDRESS  BaseAddress,
IN UINT64  Length 
)

Check whether the provided memory range is covered by a single entry of type EfiGcdSystemMemory in the GCD memory map.

Parameters
BaseAddressThe physical address that is the start address of a memory region.
LengthThe size in bytes of the memory region.
Returns
Whether the region is system memory or not.

Definition at line 23 of file MemoryAttribute.c.

◆ SetMemoryAttributes()

STATIC EFI_STATUS SetMemoryAttributes ( IN EFI_MEMORY_ATTRIBUTE_PROTOCOL This,
IN EFI_PHYSICAL_ADDRESS  BaseAddress,
IN UINT64  Length,
IN UINT64  Attributes 
)

This function set given attributes of the memory region specified by BaseAddress and Length.

The valid Attributes is EFI_MEMORY_RP, EFI_MEMORY_XP, and EFI_MEMORY_RO.

Parameters
ThisThe EFI_MEMORY_ATTRIBUTE_PROTOCOL instance.
BaseAddressThe physical address that is the start address of a memory region.
LengthThe size in bytes of the memory region.
AttributesThe bit mask of attributes to set for the memory region.
Return values
EFI_SUCCESSThe attributes were set for the memory region.
EFI_INVALID_PARAMETERLength is zero. Attributes specified an illegal combination of attributes that cannot be set together.
EFI_UNSUPPORTEDThe 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.
EFI_OUT_OF_RESOURCESRequested attributes cannot be applied due to lack of system resources.
EFI_ACCESS_DENIEDAttributes for the requested memory region are controlled by system firmware and cannot be updated via the protocol.

Definition at line 186 of file MemoryAttribute.c.

Variable Documentation

◆ mMemoryAttribute

Initial value:
= {
}
STATIC EFI_STATUS ClearMemoryAttributes(IN EFI_MEMORY_ATTRIBUTE_PROTOCOL *This, IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes)
STATIC EFI_STATUS SetMemoryAttributes(IN EFI_MEMORY_ATTRIBUTE_PROTOCOL *This, IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes)
STATIC EFI_STATUS GetMemoryAttributes(IN EFI_MEMORY_ATTRIBUTE_PROTOCOL *This, IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, OUT UINT64 *Attributes)

Definition at line 290 of file MemoryAttribute.c.