blob: a05b72d3886eccf6fcbe79626503546093400394 [file] [log] [blame]
/*
* Copyright (c) 2020 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_SYS_MEM_MANAGE_H
#define ZEPHYR_INCLUDE_SYS_MEM_MANAGE_H
/**
* @brief Memory Management
* @defgroup memory_management Memory Management
* @ingroup os_services
* @{
*/
#ifndef _ASMLANGUAGE
#include <stdbool.h>
#include <stdint.h>
/**
* @brief Check if a physical address is within range of physical memory.
*
* This checks if the physical address (@p virt) is within
* permissible range, e.g. between
* :kconfig:option:`CONFIG_SRAM_BASE_ADDRESS` and
* (:kconfig:option:`CONFIG_SRAM_BASE_ADDRESS` +
* :kconfig:option:`CONFIG_SRAM_SIZE`).
*
* @note Only used if
* :kconfig:option:`CONFIG_KERNEL_VM_USE_CUSTOM_MEM_RANGE_CHECK`
* is enabled.
*
* @param phys Physical address to be checked.
*
* @return True if physical address is within range, false if not.
*/
bool sys_mm_is_phys_addr_in_range(uintptr_t phys);
/**
* @brief Check if a virtual address is within range of virtual memory.
*
* This checks if the virtual address (@p virt) is within
* permissible range, e.g. between
* :kconfig:option:`CONFIG_KERNEL_VM_BASE` and
* (:kconfig:option:`CONFIG_KERNEL_VM_BASE` +
* :kconfig:option:`CONFIG_KERNEL_VM_SIZE`).
*
* @note Only used if
* :kconfig:option:`CONFIG_KERNEL_VM_USE_CUSTOM_MEM_RANGE_CHECK`
* is enabled.
*
* @param virt Virtual address to be checked.
*
* @return True if virtual address is within range, false if not.
*/
bool sys_mm_is_virt_addr_in_range(void *virt);
/** @} */
#endif /* !_ASMLANGUAGE */
#endif /* ZEPHYR_INCLUDE_SYS_MEM_MANAGE_H */