All of lore.kernel.org
 help / color / mirror / Atom feed
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



  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.