All of lore.kernel.org
 help / color / mirror / Atom feed
From: marcandre.lureau@redhat.com
To: qemu-devel@nongnu.org
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Stefan Weil" <sw@weilnetz.de>,
	"Paolo Bonzini" <pbonzini@redhat.com>
Subject: [PATCH 20/41] include: move qemu_msync() to osdep
Date: Wed, 20 Apr 2022 17:26:03 +0400	[thread overview]
Message-ID: <20220420132624.2439741-21-marcandre.lureau@redhat.com> (raw)
In-Reply-To: <20220420132624.2439741-1-marcandre.lureau@redhat.com>

From: Marc-André Lureau <marcandre.lureau@redhat.com>

The implementation depends on the OS. (and longer-term goal is to move
cutils to a common subproject)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/qemu/cutils.h |  1 -
 include/qemu/osdep.h  | 13 +++++++++++++
 util/cutils.c         | 38 --------------------------------------
 util/oslib-posix.c    | 18 ++++++++++++++++++
 util/oslib-win32.c    | 10 ++++++++++
 5 files changed, 41 insertions(+), 39 deletions(-)

diff --git a/include/qemu/cutils.h b/include/qemu/cutils.h
index e873bad36674..fb47ec931876 100644
--- a/include/qemu/cutils.h
+++ b/include/qemu/cutils.h
@@ -130,7 +130,6 @@ const char *qemu_strchrnul(const char *s, int c);
 #endif
 time_t mktimegm(struct tm *tm);
 int qemu_fdatasync(int fd);
-int qemu_msync(void *addr, size_t length, int fd);
 int qemu_parse_fd(const char *param);
 int qemu_strtoi(const char *nptr, const char **endptr, int base,
                 int *result);
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index 14b6b65a5fa9..bf4f75dcde8f 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -641,6 +641,19 @@ static inline void qemu_reset_optind(void)
 #endif
 }
 
+/**
+ * Sync changes made to the memory mapped file back to the backing
+ * storage. For POSIX compliant systems this will fallback
+ * to regular msync call. Otherwise it will trigger whole file sync
+ * (including the metadata case there is no support to skip that otherwise)
+ *
+ * @addr   - start of the memory area to be synced
+ * @length - length of the are to be synced
+ * @fd     - file descriptor for the file to be synced
+ *           (mandatory only for POSIX non-compliant systems)
+ */
+int qemu_msync(void *addr, size_t length, int fd);
+
 /**
  * qemu_get_host_name:
  * @errp: Error object
diff --git a/util/cutils.c b/util/cutils.c
index a01a3a754049..c0775bb53c29 100644
--- a/util/cutils.c
+++ b/util/cutils.c
@@ -160,44 +160,6 @@ int qemu_fdatasync(int fd)
 #endif
 }
 
-/**
- * Sync changes made to the memory mapped file back to the backing
- * storage. For POSIX compliant systems this will fallback
- * to regular msync call. Otherwise it will trigger whole file sync
- * (including the metadata case there is no support to skip that otherwise)
- *
- * @addr   - start of the memory area to be synced
- * @length - length of the are to be synced
- * @fd     - file descriptor for the file to be synced
- *           (mandatory only for POSIX non-compliant systems)
- */
-int qemu_msync(void *addr, size_t length, int fd)
-{
-#ifdef CONFIG_POSIX
-    size_t align_mask = ~(qemu_real_host_page_size() - 1);
-
-    /**
-     * There are no strict reqs as per the length of mapping
-     * to be synced. Still the length needs to follow the address
-     * alignment changes. Additionally - round the size to the multiple
-     * of PAGE_SIZE
-     */
-    length += ((uintptr_t)addr & (qemu_real_host_page_size() - 1));
-    length = (length + ~align_mask) & align_mask;
-
-    addr = (void *)((uintptr_t)addr & align_mask);
-
-    return msync(addr, length, MS_SYNC);
-#else /* CONFIG_POSIX */
-    /**
-     * Perform the sync based on the file descriptor
-     * The sync range will most probably be wider than the one
-     * requested - but it will still get the job done
-     */
-    return qemu_fdatasync(fd);
-#endif /* CONFIG_POSIX */
-}
-
 static int64_t suffix_mul(char suffix, int64_t unit)
 {
     switch (qemu_toupper(suffix)) {
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index c471c5bc9f8d..161f1123259f 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -950,3 +950,21 @@ int fcntl_setfl(int fd, int flag)
     }
     return 0;
 }
+
+int qemu_msync(void *addr, size_t length, int fd)
+{
+    size_t align_mask = ~(qemu_real_host_page_size() - 1);
+
+    /**
+     * There are no strict reqs as per the length of mapping
+     * to be synced. Still the length needs to follow the address
+     * alignment changes. Additionally - round the size to the multiple
+     * of PAGE_SIZE
+     */
+    length += ((uintptr_t)addr & (qemu_real_host_page_size() - 1));
+    length = (length + ~align_mask) & align_mask;
+
+    addr = (void *)((uintptr_t)addr & align_mask);
+
+    return msync(addr, length, MS_SYNC);
+}
diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index f38b06914e12..1e05c316b311 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -596,3 +596,13 @@ size_t qemu_get_host_physmem(void)
     }
     return 0;
 }
+
+int qemu_msync(void *addr, size_t length, int fd)
+{
+    /**
+     * Perform the sync based on the file descriptor
+     * The sync range will most probably be wider than the one
+     * requested - but it will still get the job done
+     */
+    return qemu_fdatasync(fd);
+}
-- 
2.35.1.693.g805e0a68082a



  parent reply	other threads:[~2022-04-20 14:23 UTC|newest]

Thread overview: 124+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-20 13:25 [PATCH 00/41] Misc cleanups marcandre.lureau
2022-04-20 13:25 ` [PATCH 01/41] qga: use fixed-length for usecs formatting marcandre.lureau
2022-04-20 14:26   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 02/41] glib-compat: isolate g_date_time_format_iso8601 version-bypass marcandre.lureau
2022-04-20 14:32   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 03/41] scripts/analyze-inclusions: drop qemu-common.h from analysis marcandre.lureau
2022-04-20 14:32   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 04/41] Simplify softmmu/main.c marcandre.lureau
2022-04-20 14:55   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 05/41] hw/hyperv: remove needless qemu-common.h include marcandre.lureau
2022-04-20 15:01   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 06/41] include: rename qemu-common.h qemu/copyright.h marcandre.lureau
2022-04-20 13:25   ` [Virtio-fs] " marcandre.lureau
2022-04-20 14:23   ` Warner Losh
2022-04-20 14:23     ` [Virtio-fs] " Warner Losh
2022-04-20 15:04   ` Daniel P. Berrangé
2022-04-20 15:04     ` [Virtio-fs] " Daniel P. Berrangé
2022-04-20 15:21     ` Marc-André Lureau
2022-04-20 15:21       ` [Virtio-fs] " Marc-André Lureau
2022-04-20 16:10     ` Peter Maydell
2022-04-20 16:10       ` [Virtio-fs] " Peter Maydell
2022-04-20 16:13       ` Daniel P. Berrangé
2022-04-20 16:13         ` [Virtio-fs] " Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 07/41] build-sys: remove MSI's QEMU_GA_MSI_MINGW_DLL_PATH marcandre.lureau
2022-04-20 15:00   ` Konstantin Kostiuk
2022-04-20 15:10   ` Daniel P. Berrangé
2022-04-20 15:12   ` Paolo Bonzini
2022-04-20 13:25 ` [PATCH 08/41] build-sys: simplify MSI's QEMU_GA_MANUFACTURER marcandre.lureau
2022-04-20 13:48   ` Konstantin Kostiuk
2022-04-20 15:14     ` Daniel P. Berrangé
2022-04-20 16:36       ` Paolo Bonzini
2022-04-20 13:25 ` [PATCH 09/41] build-sys: simplify MSI's QEMU_GA_VERSION marcandre.lureau
2022-04-20 13:25 ` [PATCH 10/41] build-sys: drop MSI's QEMU_GA_DISTRO marcandre.lureau
2022-04-20 13:25 ` [PATCH 11/41] qga: replace usleep() with g_usleep() marcandre.lureau
2022-04-20 15:16   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 12/41] docs: trace-events-all is installed without renaming marcandre.lureau
2022-04-20 15:16   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 13/41] arm/digic: replace snprintf() with g_strdup_printf() marcandre.lureau
2022-04-20 15:17   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 14/41] arm/allwinner-a10: " marcandre.lureau
2022-04-20 15:17   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 15/41] intc/exynos4210_gic: " marcandre.lureau
2022-04-20 15:19   ` Daniel P. Berrangé
2022-04-20 13:25 ` [PATCH 16/41] doc/style: CLang -> Clang marcandre.lureau
2022-04-20 15:20   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 17/41] doc/build-platforms: document supported compilers marcandre.lureau
2022-04-20 14:10   ` Daniel P. Berrangé
2022-04-20 14:32     ` Marc-André Lureau
2022-04-20 14:36     ` Thomas Huth
2022-04-20 14:46       ` Marc-André Lureau
2022-04-20 14:50         ` Marc-André Lureau
2022-04-20 15:24           ` Daniel P. Berrangé
2022-04-20 15:32             ` Marc-André Lureau
2022-04-20 15:55               ` Daniel P. Berrangé
2022-04-20 16:47                 ` Marc-André Lureau
2022-04-20 18:53                   ` Daniel P. Berrangé
2022-04-20 16:11               ` Thomas Huth
2022-04-20 16:52                 ` Marc-André Lureau
2022-04-20 14:53         ` Thomas Huth
2022-04-20 14:57           ` Marc-André Lureau
2022-04-20 13:26 ` [PATCH 18/41] osdep.h: move qemu_build_not_reached() marcandre.lureau
2022-04-20 15:27   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 19/41] compiler.h: replace QEMU_NORETURN with G_NORETURN marcandre.lureau
2022-04-20 13:26   ` marcandre.lureau
2022-04-20 14:24   ` Warner Losh
2022-04-20 14:24     ` Warner Losh
2022-04-20 15:29   ` Daniel P. Berrangé
2022-04-20 15:29     ` Daniel P. Berrangé
2023-04-07 17:01   ` Stefan Weil via
2023-04-07 17:15     ` Stefan Weil via
2022-04-20 13:26 ` marcandre.lureau [this message]
2022-04-20 15:33   ` [PATCH 20/41] include: move qemu_msync() to osdep Daniel P. Berrangé
2022-04-20 15:39     ` Marc-André Lureau
2022-04-20 13:26 ` [PATCH 21/41] include: move qemu_fdatasync() " marcandre.lureau
2022-04-20 15:34   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 22/41] include: move qemu_*_exec_dir() to cutils marcandre.lureau
2022-04-20 15:36   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 23/41] include: add qemu/keyval.h marcandre.lureau
2022-04-20 15:38   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 24/41] include: move qdict_{crumple,flatten} declarations marcandre.lureau
2022-04-20 15:39   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 25/41] tests: remove block/qdict checks from check-qobject.c marcandre.lureau
2022-04-20 15:39   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 26/41] compiler.h: add QEMU_SANITIZE_{ADDRESS,THREAD} marcandre.lureau
2022-04-21 13:34   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 27/41] Use QEMU_SANITIZE_THREAD marcandre.lureau
2022-04-21 13:43   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 28/41] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
2022-04-20 14:20   ` Thomas Huth
2022-04-20 14:35     ` Marc-André Lureau
2022-04-20 13:26 ` [PATCH 29/41] tests: run-time skip test-qga if TSAN is enabled marcandre.lureau
2022-04-20 15:41   ` Daniel P. Berrangé
2022-04-21 13:02     ` Marc-André Lureau
2022-04-20 13:26 ` [PATCH 30/41] Move error_printf_unless_qmp() with monitor unit marcandre.lureau
2022-04-20 15:42   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 31/41] qga: move qga_get_host_name() marcandre.lureau
2022-04-20 13:51   ` Konstantin Kostiuk
2022-04-20 15:44   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 32/41] qtest: simplify socket_send() marcandre.lureau
2022-04-20 14:24   ` Thomas Huth
2022-04-20 15:45   ` Daniel P. Berrangé
2022-04-21 13:07     ` Marc-André Lureau
2022-04-20 13:26 ` [PATCH 33/41] tests: move libqtest.c under libqos/ marcandre.lureau
2022-04-20 14:16   ` Thomas Huth
2022-04-20 15:48   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 34/41] libqtest: split QMP part in libqmp marcandre.lureau
2022-04-20 14:29   ` Thomas Huth
2022-04-20 13:26 ` [PATCH 35/41] util: simplify write in signal handler marcandre.lureau
2022-04-20 15:49   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 36/41] util: use qemu_write_full() in qemu_write_pidfile() marcandre.lureau
2022-04-20 15:49   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 37/41] util: use qemu_create() " marcandre.lureau
2022-04-20 15:50   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 38/41] util: replace qemu_get_local_state_pathname() marcandre.lureau
2022-04-20 13:26   ` [Virtio-fs] " marcandre.lureau
2022-04-20 15:51   ` Daniel P. Berrangé
2022-04-20 15:51     ` [Virtio-fs] " Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 39/41] qga: remove need for QEMU atomic.h marcandre.lureau
2022-04-20 15:51   ` Daniel P. Berrangé
2022-04-20 13:26 ` [PATCH 40/41] migration/ram: fix clang warning marcandre.lureau
2022-04-20 14:10   ` Dr. David Alan Gilbert
2022-04-20 13:26 ` [PATCH 41/41] tests/fuzz: fix warning marcandre.lureau
2022-04-20 14:30   ` Thomas Huth
2022-04-20 14:40 ` [PATCH 00/41] Misc cleanups Thomas Huth

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=20220420132624.2439741-21-marcandre.lureau@redhat.com \
    --to=marcandre.lureau@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sw@weilnetz.de \
    /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.