Memory Enumeration

API for enumerating memory blocks.

Functions

struct metal_memory *metal_get_memory_from_address(const uintptr_t address)

Get the memory block which services the given address.

Given a physical memory address, get a handle for the memory block to which that address is mapped.

Return
The memory block handle, or NULL if the address is not mapped to a memory block
Parameters
  • address: The address to query

uintptr_t metal_memory_get_base_address(const struct metal_memory *memory)

Get the base address for a memory block.

Return
The base address of the memory block
Parameters
  • memory: The handle for the memory block

size_t metal_memory_get_size(const struct metal_memory *memory)

Get the size of a memory block.

Return
The size of the memory block
Parameters
  • memory: The handle for the memory block

int metal_memory_supports_atomics(const struct metal_memory *memory)

Query if a memory block supports atomic operations.

Return
nonzero if the memory block supports atomic operations
Parameters
  • memory: The handle for the memory block

int metal_memory_is_cachable(const struct metal_memory *memory)

Query if a memory block is cacheable.

Return
nonzero if the memory block is cachable
Parameters
  • memory: The handle for the memory block

struct metal_memory
#include <memory.h>

A handle for a memory block.