Loading include/qemu/osdep.h +2 −0 Original line number Diff line number Diff line Loading @@ -371,6 +371,8 @@ void sigaction_invoke(struct sigaction *action, #endif int qemu_madvise(void *addr, size_t len, int advice); int qemu_mprotect_rwx(void *addr, size_t size); int qemu_mprotect_none(void *addr, size_t size); int qemu_open(const char *name, int flags, ...); int qemu_close(int fd); Loading util/osdep.c +41 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,47 @@ int qemu_madvise(void *addr, size_t len, int advice) #endif } static int qemu_mprotect__osdep(void *addr, size_t size, int prot) { g_assert(!((uintptr_t)addr & ~qemu_real_host_page_mask)); g_assert(!(size & ~qemu_real_host_page_mask)); #ifdef _WIN32 DWORD old_protect; if (!VirtualProtect(addr, size, prot, &old_protect)) { error_report("%s: VirtualProtect failed with error code %ld", __func__, GetLastError()); return -1; } return 0; #else if (mprotect(addr, size, prot)) { error_report("%s: mprotect failed: %s", __func__, strerror(errno)); return -1; } return 0; #endif } int qemu_mprotect_rwx(void *addr, size_t size) { #ifdef _WIN32 return qemu_mprotect__osdep(addr, size, PAGE_EXECUTE_READWRITE); #else return qemu_mprotect__osdep(addr, size, PROT_READ | PROT_WRITE | PROT_EXEC); #endif } int qemu_mprotect_none(void *addr, size_t size) { #ifdef _WIN32 return qemu_mprotect__osdep(addr, size, PAGE_NOACCESS); #else return qemu_mprotect__osdep(addr, size, PROT_NONE); #endif } #ifndef _WIN32 static int fcntl_op_setlk = -1; Loading Loading
include/qemu/osdep.h +2 −0 Original line number Diff line number Diff line Loading @@ -371,6 +371,8 @@ void sigaction_invoke(struct sigaction *action, #endif int qemu_madvise(void *addr, size_t len, int advice); int qemu_mprotect_rwx(void *addr, size_t size); int qemu_mprotect_none(void *addr, size_t size); int qemu_open(const char *name, int flags, ...); int qemu_close(int fd); Loading
util/osdep.c +41 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,47 @@ int qemu_madvise(void *addr, size_t len, int advice) #endif } static int qemu_mprotect__osdep(void *addr, size_t size, int prot) { g_assert(!((uintptr_t)addr & ~qemu_real_host_page_mask)); g_assert(!(size & ~qemu_real_host_page_mask)); #ifdef _WIN32 DWORD old_protect; if (!VirtualProtect(addr, size, prot, &old_protect)) { error_report("%s: VirtualProtect failed with error code %ld", __func__, GetLastError()); return -1; } return 0; #else if (mprotect(addr, size, prot)) { error_report("%s: mprotect failed: %s", __func__, strerror(errno)); return -1; } return 0; #endif } int qemu_mprotect_rwx(void *addr, size_t size) { #ifdef _WIN32 return qemu_mprotect__osdep(addr, size, PAGE_EXECUTE_READWRITE); #else return qemu_mprotect__osdep(addr, size, PROT_READ | PROT_WRITE | PROT_EXEC); #endif } int qemu_mprotect_none(void *addr, size_t size) { #ifdef _WIN32 return qemu_mprotect__osdep(addr, size, PAGE_NOACCESS); #else return qemu_mprotect__osdep(addr, size, PROT_NONE); #endif } #ifndef _WIN32 static int fcntl_op_setlk = -1; Loading