From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>, qemu-block@nongnu.org
Subject: [PATCH 7/9] util: Use meson checks for valloc() and memalign() presence
Date: Sat, 26 Feb 2022 18:07:21 +0000 [thread overview]
Message-ID: <20220226180723.1706285-8-peter.maydell@linaro.org> (raw)
In-Reply-To: <20220226180723.1706285-1-peter.maydell@linaro.org>
Instead of assuming that all CONFIG_BSD have valloc() and anything
else is memalign(), explicitly check for those functions in
meson.build and use the "is the function present" define. Tests for
specific functionality are better than which-OS checks; this also
lets us give a helpful error message if somehow there's no usable
function present.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
meson.build | 2 ++
util/memalign.c | 8 ++++++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index 21511d4fb61..1c44198ebda 100644
--- a/meson.build
+++ b/meson.build
@@ -1610,6 +1610,8 @@ config_host_data.set('CONFIG_POSIX_FALLOCATE', cc.has_function('posix_fallocate'
# thinking that Windows has posix_memalign()
config_host_data.set('CONFIG_POSIX_MEMALIGN', cc.has_function('posix_memalign', prefix: '#include <stdlib.h>'))
config_host_data.set('CONFIG_ALIGNED_MALLOC', cc.has_function('_aligned_malloc'))
+config_host_data.set('CONFIG_VALLOC', cc.has_function('valloc'))
+config_host_data.set('CONFIG_MEMALIGN', cc.has_function('memalign'))
config_host_data.set('CONFIG_PPOLL', cc.has_function('ppoll'))
config_host_data.set('CONFIG_PREADV', cc.has_function('preadv', prefix: '#include <sys/uio.h>'))
config_host_data.set('CONFIG_SEM_TIMEDWAIT', cc.has_function('sem_timedwait', dependencies: threads))
diff --git a/util/memalign.c b/util/memalign.c
index ee3393cc601..fc8228bffb5 100644
--- a/util/memalign.c
+++ b/util/memalign.c
@@ -25,6 +25,8 @@
*/
#include "qemu/osdep.h"
+#include "qemu/host-utils.h"
+#include "trace.h"
void *qemu_try_memalign(size_t alignment, size_t size)
{
@@ -50,10 +52,12 @@ void *qemu_try_memalign(size_t alignment, size_t size)
} else {
ptr = NULL;
}
-#elif defined(CONFIG_BSD)
+#elif defined(CONFIG_VALLOC)
ptr = valloc(size);
-#else
+#elif defined(CONFIG_MEMALIGN)
ptr = memalign(alignment, size);
+#else
+ #error No function to allocate aligned memory available
#endif
trace_qemu_memalign(alignment, size, ptr);
return ptr;
--
2.25.1
next prev parent reply other threads:[~2022-02-26 18:12 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-26 18:07 [PATCH 0/9] Cleanup of qemu_oom_check() and qemu_memalign() Peter Maydell
2022-02-26 18:07 ` [PATCH 1/9] hw/usb/redirect.c: Stop using qemu_oom_check() Peter Maydell
2022-02-26 18:41 ` Peter Maydell
2022-02-27 0:26 ` Richard Henderson
2022-03-01 0:00 ` Philippe Mathieu-Daudé
2022-03-02 16:30 ` Eric Blake
2022-03-02 17:03 ` Peter Maydell
2022-02-26 18:07 ` [PATCH 2/9] util: Make qemu_oom_check() a static function Peter Maydell
2022-02-27 0:27 ` Richard Henderson
2022-03-01 0:00 ` Philippe Mathieu-Daudé
2022-02-26 18:07 ` [PATCH 3/9] util: Unify implementations of qemu_memalign() Peter Maydell
2022-02-27 0:29 ` Richard Henderson
2022-02-26 18:07 ` [PATCH 4/9] util/oslib-win32: Return NULL on qemu_try_memalign() with zero size Peter Maydell
2022-02-27 0:46 ` Richard Henderson
2022-02-27 0:56 ` Richard Henderson
2022-02-27 12:54 ` Peter Maydell
2022-02-27 18:36 ` Richard Henderson
2022-03-03 16:55 ` Peter Maydell
2022-03-03 23:02 ` Richard Henderson
2022-03-04 10:20 ` Peter Maydell
2022-02-26 18:07 ` [PATCH 5/9] meson.build: Don't misdetect posix_memalign() on Windows Peter Maydell
2022-02-27 0:52 ` Richard Henderson
2022-02-26 18:07 ` [PATCH 6/9] util: Share qemu_try_memalign() implementation between POSIX and Windows Peter Maydell
2022-02-27 0:56 ` Richard Henderson
2022-02-26 18:07 ` Peter Maydell [this message]
2022-02-27 0:58 ` [PATCH 7/9] util: Use meson checks for valloc() and memalign() presence Richard Henderson
2022-02-28 23:56 ` Philippe Mathieu-Daudé
2022-02-26 18:07 ` [PATCH 8/9] util: Put qemu_vfree() in memalign.c Peter Maydell
2022-02-27 1:05 ` Richard Henderson
2022-02-26 18:07 ` [PATCH 9/9] osdep: Move memalign-related functions to their own header Peter Maydell
2022-02-27 1:13 ` Richard Henderson
2022-02-28 23:58 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220226180723.1706285-8-peter.maydell@linaro.org \
--to=peter.maydell@linaro.org \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.