| /* SPDX-License-Identifier: GPL-2.0-or-later */ | |
| #ifndef USER_PROBE_GUEST_BASE_H | |
| #define USER_PROBE_GUEST_BASE_H | |
| #ifndef CONFIG_USER_ONLY | |
| #error Cannot include this header from system emulation | |
| #endif | |
| #include "exec/vaddr.h" | |
| typedef struct PGBRange { | |
| vaddr lo; | |
| vaddr hi; | |
| } PGBRange; | |
| /** | |
| * probe_guest_base: | |
| * @image_name: the executable being loaded | |
| * @image_range: the fixed addresses within the executable | |
| * | |
| * Creates the initial guest address space in the host memory space. | |
| * | |
| * If @image_range is NULL, then no address in the executable is fixed, | |
| * i.e. it is fully relocatable. | |
| * | |
| * This function will not return if a valid value for guest_base | |
| * cannot be chosen. On return, the executable loader can expect | |
| * | |
| * target_mmap(i->lo, i->hi - i->lo + 1, ...) | |
| * | |
| * to succeed. | |
| */ | |
| void probe_guest_base(const char *image_name, const PGBRange *image_range, | |
| const PGBRange *commpage_range); | |
| #endif |