import Unicorn2

This commit is contained in:
Nguyen Anh Quynh
2021-10-03 22:14:44 +08:00
parent 772558119a
commit aaaea14214
837 changed files with 368717 additions and 200912 deletions

View File

@@ -2,7 +2,7 @@
* os-win32.c
*
* Copyright (c) 2003-2008 Fabrice Bellard
* Copyright (c) 2010 Red Hat, Inc.
* Copyright (c) 2010-2016 Red Hat, Inc.
*
* QEMU library functions for win32 which are shared between QEMU and
* the QEMU tools.
@@ -25,21 +25,18 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* The implementation of g_poll (functions poll_rest, g_poll) at the end of
* this file are based on code from GNOME glib-2 and use a different license,
* see the license comment there.
*/
#include <winsock2.h>
#include <uc_priv.h>
#include "qemu/osdep.h"
#include <windows.h>
#include <stdlib.h>
#include "config-host.h"
#include "qemu-common.h"
#include "sysemu/sysemu.h"
/* this must come after including "trace.h" */
/* The pragmas are to fix this issue: https://connect.microsoft.com/VisualStudio/feedback/details/976983 */
#pragma warning(push)
#pragma warning(disable : 4091)
#include <shlobj.h>
#pragma warning(pop)
void *qemu_oom_check(void *ptr)
{
if (ptr == NULL) {
@@ -57,7 +54,7 @@ void *qemu_try_memalign(size_t alignment, size_t size)
abort();
}
ptr = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);
// trace_qemu_memalign(alignment, size, ptr);
//trace_qemu_memalign(alignment, size, ptr);
return ptr;
}
@@ -65,36 +62,45 @@ void *qemu_memalign(size_t alignment, size_t size)
{
return qemu_oom_check(qemu_try_memalign(alignment, size));
}
void *qemu_anon_ram_alloc(size_t size, uint64_t *align)
static int get_allocation_granularity(void)
{
SYSTEM_INFO system_info;
GetSystemInfo(&system_info);
return system_info.dwAllocationGranularity;
}
void *qemu_anon_ram_alloc(struct uc_struct *uc, size_t size, uint64_t *align)
{
void *ptr;
/* FIXME: this is not exactly optimal solution since VirtualAlloc
has 64Kb granularity, but at least it guarantees us that the
memory is page aligned. */
ptr = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);
// trace_qemu_anon_ram_alloc(size, ptr);
if (ptr && align) {
*align = MAX(get_allocation_granularity(), getpagesize());
}
return ptr;
}
void qemu_vfree(void *ptr)
{
// trace_qemu_vfree(ptr);
//trace_qemu_vfree(ptr);
if (ptr) {
VirtualFree(ptr, 0, MEM_RELEASE);
}
}
void qemu_anon_ram_free(void *ptr, size_t size)
void qemu_anon_ram_free(struct uc_struct *uc, void *ptr, size_t size)
{
// trace_qemu_anon_ram_free(ptr, size);
//trace_qemu_anon_ram_free(ptr, size);
if (ptr) {
VirtualFree(ptr, 0, MEM_RELEASE);
}
}
size_t getpagesize(void)
int getpagesize(void)
{
SYSTEM_INFO system_info;