void *qemu_memalign(size_t alignment, size_t size) { void *ptr; #if defined(_POSIX_C_SOURCE) && !defined(__sun__) int ret; ret = posix_memalign(&ptr, alignment, size); if (ret != 0) { fprintf(stderr, "Failed to allocate %zu B: %s\n", size, strerror(ret)); abort(); } #elif defined(CONFIG_BSD) ptr = qemu_oom_check(valloc(size)); #else ptr = qemu_oom_check(memalign(alignment, size)); #endif trace_qemu_memalign(alignment, size, ptr); return ptr; }
void *qemu_memalign(size_t alignment, size_t size) { void *ptr; if (!size) { abort(); } ptr = qemu_oom_check(VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE)); trace_qemu_memalign(alignment, size, ptr); return ptr; }
void *qemu_vmalloc(size_t size) { 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. */ if (!size) { abort(); } ptr = qemu_oom_check(VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE)); //trace_qemu_vmalloc(size, ptr); return ptr; }
void *qemu_mallocz(size_t size) { void *ptr; ptr = qemu_oom_check(calloc(1, size ? size : 1)); return ptr; }
void *qemu_memalign(size_t alignment, size_t size) { return qemu_oom_check(qemu_try_memalign(alignment, size)); }