mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 23:03:54 -06:00
util: Share qemu_try_memalign() implementation between POSIX and Windows
The qemu_try_memalign() functions for POSIX and Windows used to be significantly different, but these days they are identical except for the actual allocation function called, and the POSIX version already has to have ifdeffery for different allocation functions. Move to a single implementation in memalign.c, which uses the Windows _aligned_malloc if we detect that function in meson. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220226180723.1706285-7-peter.maydell@linaro.org Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
parent
8698343b86
commit
5c8c714a0a
4 changed files with 40 additions and 46 deletions
|
@ -199,35 +199,6 @@ fail_close:
|
|||
return false;
|
||||
}
|
||||
|
||||
void *qemu_try_memalign(size_t alignment, size_t size)
|
||||
{
|
||||
void *ptr;
|
||||
|
||||
if (alignment < sizeof(void*)) {
|
||||
alignment = sizeof(void*);
|
||||
} else {
|
||||
g_assert(is_power_of_2(alignment));
|
||||
}
|
||||
|
||||
if (size == 0) {
|
||||
size++;
|
||||
}
|
||||
#if defined(CONFIG_POSIX_MEMALIGN)
|
||||
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;
|
||||
}
|
||||
|
||||
/* alloc shared memory pages */
|
||||
void *qemu_anon_ram_alloc(size_t size, uint64_t *alignment, bool shared,
|
||||
bool noreserve)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue