1*1405d7e6SPhilippe Mathieu-Daudé /* 2*1405d7e6SPhilippe Mathieu-Daudé * MMAP declarations for QEMU user emulation 3*1405d7e6SPhilippe Mathieu-Daudé * 4*1405d7e6SPhilippe Mathieu-Daudé * SPDX-License-Identifier: GPL-2.0-or-later 5*1405d7e6SPhilippe Mathieu-Daudé */ 6*1405d7e6SPhilippe Mathieu-Daudé #ifndef USER_MMAP_H 7*1405d7e6SPhilippe Mathieu-Daudé #define USER_MMAP_H 8*1405d7e6SPhilippe Mathieu-Daudé 9*1405d7e6SPhilippe Mathieu-Daudé #include "user/abitypes.h" 10*1405d7e6SPhilippe Mathieu-Daudé 11*1405d7e6SPhilippe Mathieu-Daudé /* 12*1405d7e6SPhilippe Mathieu-Daudé * mmap_next_start: The base address for the next mmap without hint, 13*1405d7e6SPhilippe Mathieu-Daudé * increased after each successful map, starting at task_unmapped_base. 14*1405d7e6SPhilippe Mathieu-Daudé * This is an optimization within QEMU and not part of ADDR_COMPAT_LAYOUT. 15*1405d7e6SPhilippe Mathieu-Daudé */ 16*1405d7e6SPhilippe Mathieu-Daudé extern abi_ulong mmap_next_start; 17*1405d7e6SPhilippe Mathieu-Daudé 18*1405d7e6SPhilippe Mathieu-Daudé int target_mprotect(abi_ulong start, abi_ulong len, int prot); 19*1405d7e6SPhilippe Mathieu-Daudé 20*1405d7e6SPhilippe Mathieu-Daudé abi_long target_mmap(abi_ulong start, abi_ulong len, int prot, 21*1405d7e6SPhilippe Mathieu-Daudé int flags, int fd, off_t offset); 22*1405d7e6SPhilippe Mathieu-Daudé int target_munmap(abi_ulong start, abi_ulong len); 23*1405d7e6SPhilippe Mathieu-Daudé abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size, 24*1405d7e6SPhilippe Mathieu-Daudé abi_ulong new_size, unsigned long flags, 25*1405d7e6SPhilippe Mathieu-Daudé abi_ulong new_addr); 26*1405d7e6SPhilippe Mathieu-Daudé 27*1405d7e6SPhilippe Mathieu-Daudé abi_ulong mmap_find_vma(abi_ulong start, abi_ulong size, abi_ulong alignment); 28*1405d7e6SPhilippe Mathieu-Daudé 29*1405d7e6SPhilippe Mathieu-Daudé void TSA_NO_TSA mmap_fork_start(void); 30*1405d7e6SPhilippe Mathieu-Daudé void TSA_NO_TSA mmap_fork_end(int child); 31*1405d7e6SPhilippe Mathieu-Daudé 32*1405d7e6SPhilippe Mathieu-Daudé #endif 33