void *qemu_try_memalign(size_t alignment, size_t size) { void *ptr; if (!size) { abort(); } ptr = VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE); trace_qemu_memalign(alignment, size, ptr); return ptr; }
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_try_memalign(size_t alignment, size_t size) { void *ptr; if (alignment < sizeof(void*)) { alignment = sizeof(void*); } #if defined(_POSIX_C_SOURCE) && !defined(__sun__) int ret; ret = posix_memalign(&ptr, alignment, size); if (ret != 0) { errno = ret; ptr = NULL; } #elif defined(CONFIG_BSD) ptr = valloc(size); #else ptr = memalign(alignment, size); #endif trace_qemu_memalign(alignment, size, ptr); return ptr; }