blob: d7492ef46cd35d9dc29f87f894f12e013871882a [file]
/* 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