All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/10] Misc cleanups
@ 2022-04-22  8:36 marcandre.lureau
  2022-04-22  8:36 ` [PATCH 01/10] Use QEMU_SANITIZE_THREAD marcandre.lureau
                   ` (9 more replies)
  0 siblings, 10 replies; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

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

Hi,

Another batch of cleanup patches, mostly while working on moving the common code
in some future subprojects. (a few patches have been posted and reviewed
earlier)

Marc-André Lureau (10):
  Use QEMU_SANITIZE_THREAD
  Use QEMU_SANITIZE_ADDRESS
  include: move qemu_*_exec_dir() to cutils
  tests: move libqtest.h back under qtest/
  libqtest: split QMP part in libqmp
  Replace qemu_pipe() with g_unix_open_pipe()
  tests: make libqmp buildable for win32
  Use g_unix_set_fd_nonblocking()
  block: move fcntl_setfl()
  util/win32: simplify qemu_get_local_state_dir()

 docs/devel/qtest.rst                          |   2 +-
 include/qemu/atomic.h                         |   8 +-
 include/qemu/cutils.h                         |   7 +
 include/qemu/osdep.h                          |  12 -
 include/sysemu/os-posix.h                     |   2 -
 subprojects/libvhost-user/include/compiler.h  |   1 +
 tests/qtest/acpi-utils.h                      |   2 +-
 tests/qtest/boot-sector.h                     |   2 +-
 tests/qtest/fuzz/fuzz.h                       |   2 +-
 tests/qtest/libqmp.h                          |  52 ++++
 tests/qtest/libqos/fw_cfg.h                   |   2 +-
 tests/qtest/libqos/i2c.h                      |   2 +-
 tests/qtest/libqos/libqos.h                   |   2 +-
 tests/qtest/libqos/malloc.h                   |   2 +-
 tests/qtest/libqos/pci.h                      |   2 +-
 tests/qtest/libqos/sdhci-cmd.h                |   2 +-
 tests/qtest/libqtest-single.h                 |   2 +-
 tests/qtest/{libqos => }/libqtest.h           |  29 +-
 tests/qtest/migration-helpers.h               |   2 +-
 tests/qtest/tpm-emu.h                         |   2 +-
 block/file-posix.c                            |  15 +
 hw/misc/ivshmem.c                             |   2 +-
 qemu-io.c                                     |   1 +
 qemu-nbd.c                                    |   5 +-
 storage-daemon/qemu-storage-daemon.c          |   1 +
 tests/qtest/ac97-test.c                       |   2 +-
 tests/qtest/ahci-test.c                       |   2 +-
 tests/qtest/am53c974-test.c                   |   2 +-
 tests/qtest/arm-cpu-features.c                |   2 +-
 tests/qtest/aspeed_hace-test.c                |   2 +-
 tests/qtest/boot-order-test.c                 |   2 +-
 tests/qtest/boot-sector.c                     |   2 +-
 tests/qtest/boot-serial-test.c                |   2 +-
 tests/qtest/cdrom-test.c                      |   2 +-
 tests/qtest/dbus-display-test.c               |   2 +-
 tests/qtest/dbus-vmstate-test.c               |   2 +-
 tests/qtest/device-introspect-test.c          |   2 +-
 tests/qtest/device-plug-test.c                |   2 +-
 tests/qtest/drive_del-test.c                  |   2 +-
 tests/qtest/ds1338-test.c                     |   2 +-
 tests/qtest/e1000-test.c                      |   2 +-
 tests/qtest/eepro100-test.c                   |   2 +-
 tests/qtest/endianness-test.c                 |   2 +-
 tests/qtest/erst-test.c                       |   2 +-
 tests/qtest/es1370-test.c                     |   2 +-
 tests/qtest/fdc-test.c                        |   2 +-
 tests/qtest/fuzz-e1000e-test.c                |   2 +-
 tests/qtest/fuzz-lsi53c895a-test.c            |   2 +-
 tests/qtest/fuzz-megasas-test.c               |   2 +-
 tests/qtest/fuzz-sb16-test.c                  |   2 +-
 tests/qtest/fuzz-sdcard-test.c                |   2 +-
 tests/qtest/fuzz-virtio-scsi-test.c           |   2 +-
 tests/qtest/fuzz-xlnx-dp-test.c               |   2 +-
 tests/qtest/fuzz/fuzz.c                       |   3 +-
 tests/qtest/fuzz/generic_fuzz.c               |   2 +-
 tests/qtest/fuzz/i440fx_fuzz.c                |   2 +-
 tests/qtest/fuzz/qos_fuzz.c                   |   2 +-
 tests/qtest/fuzz/virtio_blk_fuzz.c            |   2 +-
 tests/qtest/fuzz/virtio_net_fuzz.c            |   2 +-
 tests/qtest/fuzz/virtio_scsi_fuzz.c           |   2 +-
 tests/qtest/fw_cfg-test.c                     |   2 +-
 tests/qtest/hd-geo-test.c                     |   2 +-
 tests/qtest/hexloader-test.c                  |   2 +-
 tests/qtest/ide-test.c                        |   2 +-
 tests/qtest/ipoctal232-test.c                 |   2 +-
 tests/qtest/ivshmem-test.c                    |   2 +-
 tests/qtest/libqmp.c                          | 258 ++++++++++++++++++
 .../libqos/aarch64-xlnx-zcu102-machine.c      |   2 +-
 tests/qtest/libqos/ahci.c                     |   2 +-
 tests/qtest/libqos/arm-imx25-pdk-machine.c    |   2 +-
 tests/qtest/libqos/arm-n800-machine.c         |   2 +-
 tests/qtest/libqos/arm-raspi2-machine.c       |   2 +-
 tests/qtest/libqos/arm-sabrelite-machine.c    |   2 +-
 tests/qtest/libqos/arm-smdkc210-machine.c     |   2 +-
 tests/qtest/libqos/arm-virt-machine.c         |   2 +-
 .../qtest/libqos/arm-xilinx-zynq-a9-machine.c |   2 +-
 tests/qtest/libqos/e1000e.c                   |   2 +-
 tests/qtest/libqos/fw_cfg.c                   |   2 +-
 tests/qtest/libqos/i2c-imx.c                  |   2 +-
 tests/qtest/libqos/i2c-omap.c                 |   2 +-
 tests/qtest/libqos/i2c.c                      |   2 +-
 tests/qtest/libqos/libqos.c                   |   2 +-
 tests/qtest/libqos/pci-pc.c                   |   2 +-
 tests/qtest/libqos/pci-spapr.c                |   2 +-
 tests/qtest/libqos/ppc64_pseries-machine.c    |   2 +-
 tests/qtest/libqos/qgraph.c                   |   2 +-
 tests/qtest/libqos/qos_external.c             |   2 +-
 tests/qtest/libqos/rtas.c                     |   2 +-
 tests/qtest/libqos/sdhci-cmd.c                |   2 +-
 tests/qtest/libqos/sdhci.c                    |   2 +-
 tests/qtest/libqos/tpci200.c                  |   2 +-
 tests/qtest/libqos/usb.c                      |   2 +-
 tests/qtest/libqos/vhost-user-blk.c           |   2 +-
 tests/qtest/libqos/virtio-9p.c                |   2 +-
 tests/qtest/libqos/virtio-balloon.c           |   2 +-
 tests/qtest/libqos/virtio-blk.c               |   2 +-
 tests/qtest/libqos/virtio-iommu.c             |   2 +-
 tests/qtest/libqos/virtio-mmio.c              |   2 +-
 tests/qtest/libqos/virtio-net.c               |   2 +-
 tests/qtest/libqos/virtio-pci.c               |   2 +-
 tests/qtest/libqos/virtio-rng.c               |   2 +-
 tests/qtest/libqos/virtio-scsi.c              |   2 +-
 tests/qtest/libqos/virtio-serial.c            |   2 +-
 tests/qtest/libqos/virtio.c                   |   2 +-
 tests/qtest/libqos/x86_64_pc-machine.c        |   2 +-
 tests/qtest/libqtest.c                        | 207 +-------------
 tests/qtest/lpc-ich9-test.c                   |   2 +-
 tests/qtest/m48t59-test.c                     |   2 +-
 tests/qtest/machine-none-test.c               |   2 +-
 tests/qtest/megasas-test.c                    |   2 +-
 tests/qtest/microbit-test.c                   |   2 +-
 tests/qtest/migration-test.c                  |   2 +-
 tests/qtest/modules-test.c                    |   2 +-
 tests/qtest/ne2000-test.c                     |   2 +-
 tests/qtest/npcm7xx_adc-test.c                |   2 +-
 tests/qtest/npcm7xx_pwm-test.c                |   2 +-
 tests/qtest/npcm7xx_sdhci-test.c              |   2 +-
 tests/qtest/npcm7xx_smbus-test.c              |   2 +-
 tests/qtest/npcm7xx_watchdog_timer-test.c     |   2 +-
 tests/qtest/numa-test.c                       |   2 +-
 tests/qtest/nvme-test.c                       |   2 +-
 tests/qtest/pca9552-test.c                    |   2 +-
 tests/qtest/pci-test.c                        |   2 +-
 tests/qtest/pcnet-test.c                      |   2 +-
 tests/qtest/pflash-cfi02-test.c               |   2 +-
 tests/qtest/pnv-xscom-test.c                  |   2 +-
 tests/qtest/prom-env-test.c                   |   2 +-
 tests/qtest/pvpanic-pci-test.c                |   2 +-
 tests/qtest/pvpanic-test.c                    |   2 +-
 tests/qtest/pxe-test.c                        |   2 +-
 tests/qtest/q35-test.c                        |   2 +-
 tests/qtest/qmp-cmd-test.c                    |   2 +-
 tests/qtest/qmp-test.c                        |   2 +-
 tests/qtest/qom-test.c                        |   2 +-
 tests/qtest/rtas-test.c                       |   2 +-
 tests/qtest/sdhci-test.c                      |   2 +-
 tests/qtest/spapr-phb-test.c                  |   2 +-
 tests/qtest/tco-test.c                        |   2 +-
 tests/qtest/test-filter-mirror.c              |   2 +-
 tests/qtest/test-filter-redirector.c          |   2 +-
 tests/qtest/test-hmp.c                        |   2 +-
 tests/qtest/tpm-crb-swtpm-test.c              |   2 +-
 tests/qtest/tpm-tis-device-swtpm-test.c       |   2 +-
 tests/qtest/tpm-tis-swtpm-test.c              |   2 +-
 tests/qtest/tpm-util.c                        |   2 +-
 tests/qtest/tulip-test.c                      |   2 +-
 tests/qtest/virtio-net-failover.c             |   2 +-
 tests/qtest/virtio-rng-test.c                 |   2 +-
 tests/qtest/virtio-test.c                     |   2 +-
 tests/qtest/vmgenid-test.c                    |   2 +-
 tests/qtest/vmxnet3-test.c                    |   2 +-
 tests/qtest/wdt_ib700-test.c                  |   2 +-
 tests/qtest/xlnx-can-test.c                   |   2 +-
 tests/unit/test-qga.c                         |   2 +-
 util/coroutine-ucontext.c                     |   2 +-
 util/cutils.c                                 | 108 ++++++++
 util/event_notifier-posix.c                   |   8 +-
 util/main-loop.c                              |   2 +-
 util/oslib-posix.c                            | 118 --------
 util/oslib-win32.c                            |  53 +---
 scripts/oss-fuzz/output_reproducer.py         |   2 +-
 tests/qtest/libqos/meson.build                |   5 +-
 tests/unit/meson.build                        |   2 +-
 163 files changed, 611 insertions(+), 570 deletions(-)
 create mode 120000 subprojects/libvhost-user/include/compiler.h
 create mode 100644 tests/qtest/libqmp.h
 rename tests/qtest/{libqos => }/libqtest.h (95%)
 create mode 100644 tests/qtest/libqmp.c

-- 
2.36.0



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 01/10] Use QEMU_SANITIZE_THREAD
  2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
@ 2022-04-22  8:36 ` marcandre.lureau
  2022-04-22  8:36 ` [PATCH 02/10] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau

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

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
---
 include/qemu/atomic.h                        | 8 +++++---
 subprojects/libvhost-user/include/compiler.h | 1 +
 2 files changed, 6 insertions(+), 3 deletions(-)
 create mode 120000 subprojects/libvhost-user/include/compiler.h

diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h
index 112a29910bea..7e8fc8e7cde2 100644
--- a/include/qemu/atomic.h
+++ b/include/qemu/atomic.h
@@ -15,6 +15,8 @@
 #ifndef QEMU_ATOMIC_H
 #define QEMU_ATOMIC_H
 
+#include "compiler.h"
+
 /* Compiler barrier */
 #define barrier()   ({ asm volatile("" ::: "memory"); (void)0; })
 
@@ -81,7 +83,7 @@
  * no processors except Alpha need a barrier here.  Leave it in if
  * using Thread Sanitizer to avoid warnings, otherwise optimize it away.
  */
-#if defined(__SANITIZE_THREAD__)
+#ifdef QEMU_SANITIZE_THREAD
 #define smp_read_barrier_depends()   ({ barrier(); __atomic_thread_fence(__ATOMIC_CONSUME); })
 #elif defined(__alpha__)
 #define smp_read_barrier_depends()   asm volatile("mb":::"memory")
@@ -146,7 +148,7 @@
 /* See above: most compilers currently treat consume and acquire the
  * same, but this slows down qatomic_rcu_read unnecessarily.
  */
-#ifdef __SANITIZE_THREAD__
+#ifdef QEMU_SANITIZE_THREAD
 #define qatomic_rcu_read__nocheck(ptr, valptr)           \
     __atomic_load(ptr, valptr, __ATOMIC_CONSUME);
 #else
@@ -254,7 +256,7 @@
 #define qatomic_mb_read(ptr)                             \
     qatomic_load_acquire(ptr)
 
-#if !defined(__SANITIZE_THREAD__) && \
+#if !defined(QEMU_SANITIZE_THREAD) && \
     (defined(__i386__) || defined(__x86_64__) || defined(__s390x__))
 /* This is more efficient than a store plus a fence.  */
 # define qatomic_mb_set(ptr, i)  ((void)qatomic_xchg(ptr, i))
diff --git a/subprojects/libvhost-user/include/compiler.h b/subprojects/libvhost-user/include/compiler.h
new file mode 120000
index 000000000000..de7b70697cd2
--- /dev/null
+++ b/subprojects/libvhost-user/include/compiler.h
@@ -0,0 +1 @@
+../../../include/qemu/compiler.h
\ No newline at end of file
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 02/10] Use QEMU_SANITIZE_ADDRESS
  2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
  2022-04-22  8:36 ` [PATCH 01/10] Use QEMU_SANITIZE_THREAD marcandre.lureau
@ 2022-04-22  8:36 ` marcandre.lureau
  2022-04-22  8:36 ` [PATCH 03/10] include: move qemu_*_exec_dir() to cutils marcandre.lureau
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel
  Cc: Laurent Vivier, Kevin Wolf, Thomas Huth, open list:Floppy,
	Stefan Hajnoczi, Paolo Bonzini, Marc-André Lureau,
	John Snow

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

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/qtest/fdc-test.c    | 2 +-
 util/coroutine-ucontext.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/qtest/fdc-test.c b/tests/qtest/fdc-test.c
index 4aa72f36431f..0b3c2c0d523f 100644
--- a/tests/qtest/fdc-test.c
+++ b/tests/qtest/fdc-test.c
@@ -550,7 +550,7 @@ static void fuzz_registers(void)
 
 static bool qtest_check_clang_sanitizer(void)
 {
-#if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer)
+#ifdef QEMU_SANITIZE_ADDRESS
     return true;
 #else
     g_test_skip("QEMU not configured using --enable-sanitizers");
diff --git a/util/coroutine-ucontext.c b/util/coroutine-ucontext.c
index 904b375192ca..ed368e1a3ec3 100644
--- a/util/coroutine-ucontext.c
+++ b/util/coroutine-ucontext.c
@@ -30,7 +30,7 @@
 #include <valgrind/valgrind.h>
 #endif
 
-#if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer)
+#ifdef QEMU_SANITIZE_ADDRESS
 #ifdef CONFIG_ASAN_IFACE_FIBER
 #define CONFIG_ASAN 1
 #include <sanitizer/asan_interface.h>
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 03/10] include: move qemu_*_exec_dir() to cutils
  2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
  2022-04-22  8:36 ` [PATCH 01/10] Use QEMU_SANITIZE_THREAD marcandre.lureau
  2022-04-22  8:36 ` [PATCH 02/10] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
@ 2022-04-22  8:36 ` marcandre.lureau
  2022-04-22  8:36 ` [PATCH 04/10] tests: move libqtest.h back under qtest/ marcandre.lureau
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Laurent Vivier, Thomas Huth,
	open list:Block layer core, Darren Kenny, Stefan Weil,
	Bandan Das, Qiuhao Li, Alexander Bulekov, Hanna Reitz,
	Stefan Hajnoczi, Paolo Bonzini, Marc-André Lureau

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

The function is required by get_relocated_path() (already in cutils),
and used by qemu-ga and may be generally useful.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/qemu/cutils.h                |   7 ++
 include/qemu/osdep.h                 |   8 --
 qemu-io.c                            |   1 +
 storage-daemon/qemu-storage-daemon.c |   1 +
 tests/qtest/fuzz/fuzz.c              |   1 +
 util/cutils.c                        | 108 +++++++++++++++++++++++++++
 util/oslib-posix.c                   |  81 --------------------
 util/oslib-win32.c                   |  36 ---------
 8 files changed, 118 insertions(+), 125 deletions(-)

diff --git a/include/qemu/cutils.h b/include/qemu/cutils.h
index 5c6572d44422..40e10e19a7ed 100644
--- a/include/qemu/cutils.h
+++ b/include/qemu/cutils.h
@@ -193,6 +193,13 @@ int uleb128_decode_small(const uint8_t *in, uint32_t *n);
  */
 int qemu_pstrcmp0(const char **str1, const char **str2);
 
+/* Find program directory, and save it for later usage with
+ * qemu_get_exec_dir().
+ * Try OS specific API first, if not working, parse from argv0. */
+void qemu_init_exec_dir(const char *argv0);
+
+/* Get the saved exec dir.  */
+const char *qemu_get_exec_dir(void);
 
 /**
  * get_relocated_path:
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index baaa23c1568d..220b44f710e5 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -564,14 +564,6 @@ bool fips_get_state(void);
  */
 char *qemu_get_local_state_dir(void);
 
-/* Find program directory, and save it for later usage with
- * qemu_get_exec_dir().
- * Try OS specific API first, if not working, parse from argv0. */
-void qemu_init_exec_dir(const char *argv0);
-
-/* Get the saved exec dir.  */
-const char *qemu_get_exec_dir(void);
-
 /**
  * qemu_getauxval:
  * @type: the auxiliary vector key to lookup
diff --git a/qemu-io.c b/qemu-io.c
index d70d3dd4fde5..2bd7bfb65073 100644
--- a/qemu-io.c
+++ b/qemu-io.c
@@ -16,6 +16,7 @@
 #endif
 
 #include "qemu/help-texts.h"
+#include "qemu/cutils.h"
 #include "qapi/error.h"
 #include "qemu-io.h"
 #include "qemu/error-report.h"
diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-storage-daemon.c
index 9b8b17f52e48..c104817cdddc 100644
--- a/storage-daemon/qemu-storage-daemon.c
+++ b/storage-daemon/qemu-storage-daemon.c
@@ -44,6 +44,7 @@
 
 #include "qemu/help-texts.h"
 #include "qemu-version.h"
+#include "qemu/cutils.h"
 #include "qemu/config-file.h"
 #include "qemu/error-report.h"
 #include "qemu/help_option.h"
diff --git a/tests/qtest/fuzz/fuzz.c b/tests/qtest/fuzz/fuzz.c
index 5f77c849837f..d3afd294db24 100644
--- a/tests/qtest/fuzz/fuzz.c
+++ b/tests/qtest/fuzz/fuzz.c
@@ -15,6 +15,7 @@
 
 #include <wordexp.h>
 
+#include "qemu/cutils.h"
 #include "qemu/datadir.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/qtest.h"
diff --git a/util/cutils.c b/util/cutils.c
index b2777210e7da..6cc7cc8cde99 100644
--- a/util/cutils.c
+++ b/util/cutils.c
@@ -931,6 +931,114 @@ static inline const char *next_component(const char *dir, int *p_len)
     return dir;
 }
 
+static const char *exec_dir;
+
+void qemu_init_exec_dir(const char *argv0)
+{
+#ifdef G_OS_WIN32
+    char *p;
+    char buf[MAX_PATH];
+    DWORD len;
+
+    if (exec_dir) {
+        return;
+    }
+
+    len = GetModuleFileName(NULL, buf, sizeof(buf) - 1);
+    if (len == 0) {
+        return;
+    }
+
+    buf[len] = 0;
+    p = buf + len - 1;
+    while (p != buf && *p != '\\') {
+        p--;
+    }
+    *p = 0;
+    if (access(buf, R_OK) == 0) {
+        exec_dir = g_strdup(buf);
+    } else {
+        exec_dir = CONFIG_BINDIR;
+    }
+#else
+    char *p = NULL;
+    char buf[PATH_MAX];
+
+    if (exec_dir) {
+        return;
+    }
+
+#if defined(__linux__)
+    {
+        int len;
+        len = readlink("/proc/self/exe", buf, sizeof(buf) - 1);
+        if (len > 0) {
+            buf[len] = 0;
+            p = buf;
+        }
+    }
+#elif defined(__FreeBSD__) \
+      || (defined(__NetBSD__) && defined(KERN_PROC_PATHNAME))
+    {
+#if defined(__FreeBSD__)
+        static int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
+#else
+        static int mib[4] = {CTL_KERN, KERN_PROC_ARGS, -1, KERN_PROC_PATHNAME};
+#endif
+        size_t len = sizeof(buf) - 1;
+
+        *buf = '\0';
+        if (!sysctl(mib, ARRAY_SIZE(mib), buf, &len, NULL, 0) &&
+            *buf) {
+            buf[sizeof(buf) - 1] = '\0';
+            p = buf;
+        }
+    }
+#elif defined(__APPLE__)
+    {
+        char fpath[PATH_MAX];
+        uint32_t len = sizeof(fpath);
+        if (_NSGetExecutablePath(fpath, &len) == 0) {
+            p = realpath(fpath, buf);
+            if (!p) {
+                return;
+            }
+        }
+    }
+#elif defined(__HAIKU__)
+    {
+        image_info ii;
+        int32_t c = 0;
+
+        *buf = '\0';
+        while (get_next_image_info(0, &c, &ii) == B_OK) {
+            if (ii.type == B_APP_IMAGE) {
+                strncpy(buf, ii.name, sizeof(buf));
+                buf[sizeof(buf) - 1] = 0;
+                p = buf;
+                break;
+            }
+        }
+    }
+#endif
+    /* If we don't have any way of figuring out the actual executable
+       location then try argv[0].  */
+    if (!p && argv0) {
+        p = realpath(argv0, buf);
+    }
+    if (p) {
+        exec_dir = g_path_get_dirname(p);
+    } else {
+        exec_dir = CONFIG_BINDIR;
+    }
+#endif
+}
+
+const char *qemu_get_exec_dir(void)
+{
+    return exec_dir;
+}
+
 char *get_relocated_path(const char *dir)
 {
     size_t prefix_len = strlen(CONFIG_PREFIX);
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index b8bf7d4070ce..03d97741562c 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -317,87 +317,6 @@ void qemu_set_tty_echo(int fd, bool echo)
     tcsetattr(fd, TCSANOW, &tty);
 }
 
-static const char *exec_dir;
-
-void qemu_init_exec_dir(const char *argv0)
-{
-    char *p = NULL;
-    char buf[PATH_MAX];
-
-    if (exec_dir) {
-        return;
-    }
-
-#if defined(__linux__)
-    {
-        int len;
-        len = readlink("/proc/self/exe", buf, sizeof(buf) - 1);
-        if (len > 0) {
-            buf[len] = 0;
-            p = buf;
-        }
-    }
-#elif defined(__FreeBSD__) \
-      || (defined(__NetBSD__) && defined(KERN_PROC_PATHNAME))
-    {
-#if defined(__FreeBSD__)
-        static int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
-#else
-        static int mib[4] = {CTL_KERN, KERN_PROC_ARGS, -1, KERN_PROC_PATHNAME};
-#endif
-        size_t len = sizeof(buf) - 1;
-
-        *buf = '\0';
-        if (!sysctl(mib, ARRAY_SIZE(mib), buf, &len, NULL, 0) &&
-            *buf) {
-            buf[sizeof(buf) - 1] = '\0';
-            p = buf;
-        }
-    }
-#elif defined(__APPLE__)
-    {
-        char fpath[PATH_MAX];
-        uint32_t len = sizeof(fpath);
-        if (_NSGetExecutablePath(fpath, &len) == 0) {
-            p = realpath(fpath, buf);
-            if (!p) {
-                return;
-            }
-        }
-    }
-#elif defined(__HAIKU__)
-    {
-        image_info ii;
-        int32_t c = 0;
-
-        *buf = '\0';
-        while (get_next_image_info(0, &c, &ii) == B_OK) {
-            if (ii.type == B_APP_IMAGE) {
-                strncpy(buf, ii.name, sizeof(buf));
-                buf[sizeof(buf) - 1] = 0;
-                p = buf;
-                break;
-            }
-        }
-    }
-#endif
-    /* If we don't have any way of figuring out the actual executable
-       location then try argv[0].  */
-    if (!p && argv0) {
-        p = realpath(argv0, buf);
-    }
-    if (p) {
-        exec_dir = g_path_get_dirname(p);
-    } else {
-        exec_dir = CONFIG_BINDIR;
-    }
-}
-
-const char *qemu_get_exec_dir(void)
-{
-    return exec_dir;
-}
-
 #ifdef CONFIG_LINUX
 static void sigbus_handler(int signal, siginfo_t *siginfo, void *ctx)
 #else /* CONFIG_LINUX */
diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index 9c1e8121fd6d..9483c4c1d5de 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -269,42 +269,6 @@ void qemu_set_tty_echo(int fd, bool echo)
     }
 }
 
-static const char *exec_dir;
-
-void qemu_init_exec_dir(const char *argv0)
-{
-
-    char *p;
-    char buf[MAX_PATH];
-    DWORD len;
-
-    if (exec_dir) {
-        return;
-    }
-
-    len = GetModuleFileName(NULL, buf, sizeof(buf) - 1);
-    if (len == 0) {
-        return;
-    }
-
-    buf[len] = 0;
-    p = buf + len - 1;
-    while (p != buf && *p != '\\') {
-        p--;
-    }
-    *p = 0;
-    if (access(buf, R_OK) == 0) {
-        exec_dir = g_strdup(buf);
-    } else {
-        exec_dir = CONFIG_BINDIR;
-    }
-}
-
-const char *qemu_get_exec_dir(void)
-{
-    return exec_dir;
-}
-
 int getpagesize(void)
 {
     SYSTEM_INFO system_info;
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 04/10] tests: move libqtest.h back under qtest/
  2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
                   ` (2 preceding siblings ...)
  2022-04-22  8:36 ` [PATCH 03/10] include: move qemu_*_exec_dir() to cutils marcandre.lureau
@ 2022-04-22  8:36 ` marcandre.lureau
  2022-04-25 19:32   ` Thomas Huth
  2022-04-22  8:36 ` [PATCH 05/10] libqtest: split QMP part in libqmp marcandre.lureau
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel
  Cc: Fam Zheng, Peter Maydell, Dmitry Fleytman, Michael S. Tsirkin,
	Bin Meng, Li Zhijian, Havard Skinnemoen, Klaus Jensen, Su Hang,
	Gerd Hoffmann, Zhang Chen, Ani Sinha, Hannes Reinecke,
	Vikram Garhwal, open list:IDE, Juan Quintela,
	Daniel Henrique Barboza, Qiuhao Li, Joel Stanley,
	Marc-André Lureau, Laurent Vivier, Thomas Huth, Amit Shah,
	Michael Roth, Greg Kurz, Dr. David Alan Gilbert, Darren Kenny,
	Bandan Das, open list:ARM TCG CPUs, Cédric Le Goater,
	Stefan Hajnoczi, Igor Mammedov, Keith Busch, John Snow,
	David Gibson, Francisco Iglesias, Alexander Bulekov,
	Andrew Jeffery, Markus Armbruster, Stefan Berger,
	Philippe Mathieu-Daudé,
	Coiby Xu, Tyrone Ting, open list:sPAPR pseries, Paolo Bonzini

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

Since commit a2ce7dbd917 ("meson: convert tests/qtest to meson"),
libqtest.h is under libqos/ directory, while libqtest.c is still in
qtest/. Move back to its original location to avoid mixing with libqos/.

Suggested-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 docs/devel/qtest.rst                             | 2 +-
 tests/qtest/acpi-utils.h                         | 2 +-
 tests/qtest/boot-sector.h                        | 2 +-
 tests/qtest/fuzz/fuzz.h                          | 2 +-
 tests/qtest/libqos/fw_cfg.h                      | 2 +-
 tests/qtest/libqos/i2c.h                         | 2 +-
 tests/qtest/libqos/libqos.h                      | 2 +-
 tests/qtest/libqos/malloc.h                      | 2 +-
 tests/qtest/libqos/pci.h                         | 2 +-
 tests/qtest/libqos/sdhci-cmd.h                   | 2 +-
 tests/qtest/libqtest-single.h                    | 2 +-
 tests/qtest/{libqos => }/libqtest.h              | 0
 tests/qtest/migration-helpers.h                  | 2 +-
 tests/qtest/tpm-emu.h                            | 2 +-
 tests/qtest/ac97-test.c                          | 2 +-
 tests/qtest/ahci-test.c                          | 2 +-
 tests/qtest/am53c974-test.c                      | 2 +-
 tests/qtest/arm-cpu-features.c                   | 2 +-
 tests/qtest/aspeed_hace-test.c                   | 2 +-
 tests/qtest/boot-order-test.c                    | 2 +-
 tests/qtest/boot-sector.c                        | 2 +-
 tests/qtest/boot-serial-test.c                   | 2 +-
 tests/qtest/cdrom-test.c                         | 2 +-
 tests/qtest/dbus-display-test.c                  | 2 +-
 tests/qtest/dbus-vmstate-test.c                  | 2 +-
 tests/qtest/device-introspect-test.c             | 2 +-
 tests/qtest/device-plug-test.c                   | 2 +-
 tests/qtest/drive_del-test.c                     | 2 +-
 tests/qtest/ds1338-test.c                        | 2 +-
 tests/qtest/e1000-test.c                         | 2 +-
 tests/qtest/eepro100-test.c                      | 2 +-
 tests/qtest/endianness-test.c                    | 2 +-
 tests/qtest/erst-test.c                          | 2 +-
 tests/qtest/es1370-test.c                        | 2 +-
 tests/qtest/fuzz-e1000e-test.c                   | 2 +-
 tests/qtest/fuzz-lsi53c895a-test.c               | 2 +-
 tests/qtest/fuzz-megasas-test.c                  | 2 +-
 tests/qtest/fuzz-sb16-test.c                     | 2 +-
 tests/qtest/fuzz-sdcard-test.c                   | 2 +-
 tests/qtest/fuzz-virtio-scsi-test.c              | 2 +-
 tests/qtest/fuzz-xlnx-dp-test.c                  | 2 +-
 tests/qtest/fuzz/fuzz.c                          | 2 +-
 tests/qtest/fuzz/generic_fuzz.c                  | 2 +-
 tests/qtest/fuzz/i440fx_fuzz.c                   | 2 +-
 tests/qtest/fuzz/qos_fuzz.c                      | 2 +-
 tests/qtest/fuzz/virtio_blk_fuzz.c               | 2 +-
 tests/qtest/fuzz/virtio_net_fuzz.c               | 2 +-
 tests/qtest/fuzz/virtio_scsi_fuzz.c              | 2 +-
 tests/qtest/fw_cfg-test.c                        | 2 +-
 tests/qtest/hd-geo-test.c                        | 2 +-
 tests/qtest/hexloader-test.c                     | 2 +-
 tests/qtest/ide-test.c                           | 2 +-
 tests/qtest/ipoctal232-test.c                    | 2 +-
 tests/qtest/ivshmem-test.c                       | 2 +-
 tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c | 2 +-
 tests/qtest/libqos/ahci.c                        | 2 +-
 tests/qtest/libqos/arm-imx25-pdk-machine.c       | 2 +-
 tests/qtest/libqos/arm-n800-machine.c            | 2 +-
 tests/qtest/libqos/arm-raspi2-machine.c          | 2 +-
 tests/qtest/libqos/arm-sabrelite-machine.c       | 2 +-
 tests/qtest/libqos/arm-smdkc210-machine.c        | 2 +-
 tests/qtest/libqos/arm-virt-machine.c            | 2 +-
 tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c  | 2 +-
 tests/qtest/libqos/e1000e.c                      | 2 +-
 tests/qtest/libqos/fw_cfg.c                      | 2 +-
 tests/qtest/libqos/i2c-imx.c                     | 2 +-
 tests/qtest/libqos/i2c-omap.c                    | 2 +-
 tests/qtest/libqos/i2c.c                         | 2 +-
 tests/qtest/libqos/libqos.c                      | 2 +-
 tests/qtest/libqos/pci-pc.c                      | 2 +-
 tests/qtest/libqos/pci-spapr.c                   | 2 +-
 tests/qtest/libqos/ppc64_pseries-machine.c       | 2 +-
 tests/qtest/libqos/qgraph.c                      | 2 +-
 tests/qtest/libqos/qos_external.c                | 2 +-
 tests/qtest/libqos/rtas.c                        | 2 +-
 tests/qtest/libqos/sdhci-cmd.c                   | 2 +-
 tests/qtest/libqos/sdhci.c                       | 2 +-
 tests/qtest/libqos/tpci200.c                     | 2 +-
 tests/qtest/libqos/usb.c                         | 2 +-
 tests/qtest/libqos/vhost-user-blk.c              | 2 +-
 tests/qtest/libqos/virtio-9p.c                   | 2 +-
 tests/qtest/libqos/virtio-balloon.c              | 2 +-
 tests/qtest/libqos/virtio-blk.c                  | 2 +-
 tests/qtest/libqos/virtio-iommu.c                | 2 +-
 tests/qtest/libqos/virtio-mmio.c                 | 2 +-
 tests/qtest/libqos/virtio-net.c                  | 2 +-
 tests/qtest/libqos/virtio-pci.c                  | 2 +-
 tests/qtest/libqos/virtio-rng.c                  | 2 +-
 tests/qtest/libqos/virtio-scsi.c                 | 2 +-
 tests/qtest/libqos/virtio-serial.c               | 2 +-
 tests/qtest/libqos/virtio.c                      | 2 +-
 tests/qtest/libqos/x86_64_pc-machine.c           | 2 +-
 tests/qtest/libqtest.c                           | 2 +-
 tests/qtest/lpc-ich9-test.c                      | 2 +-
 tests/qtest/m48t59-test.c                        | 2 +-
 tests/qtest/machine-none-test.c                  | 2 +-
 tests/qtest/megasas-test.c                       | 2 +-
 tests/qtest/microbit-test.c                      | 2 +-
 tests/qtest/migration-test.c                     | 2 +-
 tests/qtest/modules-test.c                       | 2 +-
 tests/qtest/ne2000-test.c                        | 2 +-
 tests/qtest/npcm7xx_adc-test.c                   | 2 +-
 tests/qtest/npcm7xx_pwm-test.c                   | 2 +-
 tests/qtest/npcm7xx_sdhci-test.c                 | 2 +-
 tests/qtest/npcm7xx_smbus-test.c                 | 2 +-
 tests/qtest/npcm7xx_watchdog_timer-test.c        | 2 +-
 tests/qtest/numa-test.c                          | 2 +-
 tests/qtest/nvme-test.c                          | 2 +-
 tests/qtest/pca9552-test.c                       | 2 +-
 tests/qtest/pci-test.c                           | 2 +-
 tests/qtest/pcnet-test.c                         | 2 +-
 tests/qtest/pflash-cfi02-test.c                  | 2 +-
 tests/qtest/pnv-xscom-test.c                     | 2 +-
 tests/qtest/prom-env-test.c                      | 2 +-
 tests/qtest/pvpanic-pci-test.c                   | 2 +-
 tests/qtest/pvpanic-test.c                       | 2 +-
 tests/qtest/pxe-test.c                           | 2 +-
 tests/qtest/q35-test.c                           | 2 +-
 tests/qtest/qmp-cmd-test.c                       | 2 +-
 tests/qtest/qmp-test.c                           | 2 +-
 tests/qtest/qom-test.c                           | 2 +-
 tests/qtest/rtas-test.c                          | 2 +-
 tests/qtest/sdhci-test.c                         | 2 +-
 tests/qtest/spapr-phb-test.c                     | 2 +-
 tests/qtest/tco-test.c                           | 2 +-
 tests/qtest/test-filter-mirror.c                 | 2 +-
 tests/qtest/test-filter-redirector.c             | 2 +-
 tests/qtest/test-hmp.c                           | 2 +-
 tests/qtest/tpm-crb-swtpm-test.c                 | 2 +-
 tests/qtest/tpm-tis-device-swtpm-test.c          | 2 +-
 tests/qtest/tpm-tis-swtpm-test.c                 | 2 +-
 tests/qtest/tpm-util.c                           | 2 +-
 tests/qtest/tulip-test.c                         | 2 +-
 tests/qtest/virtio-net-failover.c                | 2 +-
 tests/qtest/virtio-rng-test.c                    | 2 +-
 tests/qtest/virtio-test.c                        | 2 +-
 tests/qtest/vmgenid-test.c                       | 2 +-
 tests/qtest/vmxnet3-test.c                       | 2 +-
 tests/qtest/wdt_ib700-test.c                     | 2 +-
 tests/qtest/xlnx-can-test.c                      | 2 +-
 tests/unit/test-qga.c                            | 2 +-
 scripts/oss-fuzz/output_reproducer.py            | 2 +-
 142 files changed, 141 insertions(+), 141 deletions(-)
 rename tests/qtest/{libqos => }/libqtest.h (100%)

diff --git a/docs/devel/qtest.rst b/docs/devel/qtest.rst
index add293d39700..0455aa06ab28 100644
--- a/docs/devel/qtest.rst
+++ b/docs/devel/qtest.rst
@@ -88,4 +88,4 @@ QTest Protocol
 libqtest API reference
 ----------------------
 
-.. kernel-doc:: tests/qtest/libqos/libqtest.h
+.. kernel-doc:: tests/qtest/libqtest.h
diff --git a/tests/qtest/acpi-utils.h b/tests/qtest/acpi-utils.h
index 261784d25189..0c8678068931 100644
--- a/tests/qtest/acpi-utils.h
+++ b/tests/qtest/acpi-utils.h
@@ -13,7 +13,7 @@
 #ifndef TEST_ACPI_UTILS_H
 #define TEST_ACPI_UTILS_H
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /* DSDT and SSDTs format */
 typedef struct {
diff --git a/tests/qtest/boot-sector.h b/tests/qtest/boot-sector.h
index b339fdee4c84..6ee6bb4d97f4 100644
--- a/tests/qtest/boot-sector.h
+++ b/tests/qtest/boot-sector.h
@@ -14,7 +14,7 @@
 #ifndef TEST_BOOT_SECTOR_H
 #define TEST_BOOT_SECTOR_H
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /* Create boot disk file. fname must be a suitable string for mkstemp() */
 int boot_sector_init(char *fname);
diff --git a/tests/qtest/fuzz/fuzz.h b/tests/qtest/fuzz/fuzz.h
index 3a8570e84c79..c5f0b7227a10 100644
--- a/tests/qtest/fuzz/fuzz.h
+++ b/tests/qtest/fuzz/fuzz.h
@@ -17,7 +17,7 @@
 #include "qemu/units.h"
 #include "qapi/error.h"
 
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 
 /**
  * A libfuzzer fuzzing target
diff --git a/tests/qtest/libqos/fw_cfg.h b/tests/qtest/libqos/fw_cfg.h
index c6a7cf8cf053..b0456a15df19 100644
--- a/tests/qtest/libqos/fw_cfg.h
+++ b/tests/qtest/libqos/fw_cfg.h
@@ -13,7 +13,7 @@
 #ifndef LIBQOS_FW_CFG_H
 #define LIBQOS_FW_CFG_H
 
-#include "libqtest.h"
+#include "../libqtest.h"
 
 typedef struct QFWCFG QFWCFG;
 
diff --git a/tests/qtest/libqos/i2c.h b/tests/qtest/libqos/i2c.h
index 1341bac1c599..d0322409227c 100644
--- a/tests/qtest/libqos/i2c.h
+++ b/tests/qtest/libqos/i2c.h
@@ -9,7 +9,7 @@
 #ifndef LIBQOS_I2C_H
 #define LIBQOS_I2C_H
 
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qgraph.h"
 
 typedef struct I2CAdapter I2CAdapter;
diff --git a/tests/qtest/libqos/libqos.h b/tests/qtest/libqos/libqos.h
index e0b2bfe7caf9..ba7df448cad7 100644
--- a/tests/qtest/libqos/libqos.h
+++ b/tests/qtest/libqos/libqos.h
@@ -1,7 +1,7 @@
 #ifndef LIBQOS_H
 #define LIBQOS_H
 
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "pci.h"
 #include "malloc.h"
 
diff --git a/tests/qtest/libqos/malloc.h b/tests/qtest/libqos/malloc.h
index 4d1a2e2bef4a..bbb8c743cc5a 100644
--- a/tests/qtest/libqos/malloc.h
+++ b/tests/qtest/libqos/malloc.h
@@ -14,7 +14,7 @@
 #define LIBQOS_MALLOC_H
 
 #include "qemu/queue.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 
 typedef enum {
     ALLOC_NO_FLAGS    = 0x00,
diff --git a/tests/qtest/libqos/pci.h b/tests/qtest/libqos/pci.h
index becb800f9e6a..e705e06598c2 100644
--- a/tests/qtest/libqos/pci.h
+++ b/tests/qtest/libqos/pci.h
@@ -13,7 +13,7 @@
 #ifndef LIBQOS_PCI_H
 #define LIBQOS_PCI_H
 
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qgraph.h"
 
 #define QPCI_PIO_LIMIT    0x10000
diff --git a/tests/qtest/libqos/sdhci-cmd.h b/tests/qtest/libqos/sdhci-cmd.h
index 64763c5a2ace..9e61dd494464 100644
--- a/tests/qtest/libqos/sdhci-cmd.h
+++ b/tests/qtest/libqos/sdhci-cmd.h
@@ -14,7 +14,7 @@
  * for more details.
  */
 
-#include "libqtest.h"
+#include "../libqtest.h"
 
 /* more details at hw/sd/sdhci-internal.h */
 #define SDHC_BLKSIZE 0x04
diff --git a/tests/qtest/libqtest-single.h b/tests/qtest/libqtest-single.h
index b0838b9e0e71..4e7d0ae1dcd3 100644
--- a/tests/qtest/libqtest-single.h
+++ b/tests/qtest/libqtest-single.h
@@ -11,7 +11,7 @@
 #ifndef LIBQTEST_SINGLE_H
 #define LIBQTEST_SINGLE_H
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 QTestState *global_qtest __attribute__((common, weak));
 
diff --git a/tests/qtest/libqos/libqtest.h b/tests/qtest/libqtest.h
similarity index 100%
rename from tests/qtest/libqos/libqtest.h
rename to tests/qtest/libqtest.h
diff --git a/tests/qtest/migration-helpers.h b/tests/qtest/migration-helpers.h
index 555adafce129..c7872e84421f 100644
--- a/tests/qtest/migration-helpers.h
+++ b/tests/qtest/migration-helpers.h
@@ -12,7 +12,7 @@
 #ifndef MIGRATION_HELPERS_H_
 #define MIGRATION_HELPERS_H_
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 extern bool got_stop;
 
diff --git a/tests/qtest/tpm-emu.h b/tests/qtest/tpm-emu.h
index c33d99af3743..712cee9b7a54 100644
--- a/tests/qtest/tpm-emu.h
+++ b/tests/qtest/tpm-emu.h
@@ -22,7 +22,7 @@
 #include "qemu/sockets.h"
 #include "io/channel.h"
 #include "sysemu/tpm.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 struct tpm_hdr {
     uint16_t tag;
diff --git a/tests/qtest/ac97-test.c b/tests/qtest/ac97-test.c
index e09f2495d24d..b084e31bff5f 100644
--- a/tests/qtest/ac97-test.c
+++ b/tests/qtest/ac97-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/ahci-test.c b/tests/qtest/ahci-test.c
index aff5f3f79776..f1e510b0ac00 100644
--- a/tests/qtest/ahci-test.c
+++ b/tests/qtest/ahci-test.c
@@ -25,7 +25,7 @@
 #include "qemu/osdep.h"
 #include <getopt.h>
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/libqos-pc.h"
 #include "libqos/ahci.h"
 #include "libqos/pci-pc.h"
diff --git a/tests/qtest/am53c974-test.c b/tests/qtest/am53c974-test.c
index d214a912b3b4..ed3ac7db20de 100644
--- a/tests/qtest/am53c974-test.c
+++ b/tests/qtest/am53c974-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 
 static void test_cmdfifo_underflow_ok(void)
diff --git a/tests/qtest/arm-cpu-features.c b/tests/qtest/arm-cpu-features.c
index f76652143acc..5a145273860c 100644
--- a/tests/qtest/arm-cpu-features.c
+++ b/tests/qtest/arm-cpu-features.c
@@ -10,7 +10,7 @@
  */
 #include "qemu/osdep.h"
 #include "qemu/bitops.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qjson.h"
 
diff --git a/tests/qtest/aspeed_hace-test.c b/tests/qtest/aspeed_hace-test.c
index 58aa22014d04..be0dd71df9bd 100644
--- a/tests/qtest/aspeed_hace-test.c
+++ b/tests/qtest/aspeed_hace-test.c
@@ -7,7 +7,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/bitops.h"
 
 #define HACE_CMD                 0x10
diff --git a/tests/qtest/boot-order-test.c b/tests/qtest/boot-order-test.c
index f1f59b1261fe..0680d79d6da3 100644
--- a/tests/qtest/boot-order-test.c
+++ b/tests/qtest/boot-order-test.c
@@ -12,7 +12,7 @@
 
 #include "qemu/osdep.h"
 #include "libqos/fw_cfg.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "standard-headers/linux/qemu_fw_cfg.h"
 
diff --git a/tests/qtest/boot-sector.c b/tests/qtest/boot-sector.c
index 9d9825bc8145..44a109abd8f0 100644
--- a/tests/qtest/boot-sector.c
+++ b/tests/qtest/boot-sector.c
@@ -12,7 +12,7 @@
  */
 #include "qemu/osdep.h"
 #include "boot-sector.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #define LOW(x) ((x) & 0xff)
 #define HIGH(x) ((x) >> 8)
diff --git a/tests/qtest/boot-serial-test.c b/tests/qtest/boot-serial-test.c
index d72a82d6292e..2f99d71cab35 100644
--- a/tests/qtest/boot-serial-test.c
+++ b/tests/qtest/boot-serial-test.c
@@ -14,7 +14,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/libqos-spapr.h"
 
 static const uint8_t bios_avr[] = {
diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c
index fdd889a487db..a7766a9e6571 100644
--- a/tests/qtest/cdrom-test.c
+++ b/tests/qtest/cdrom-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "boot-sector.h"
 #include "qapi/qmp/qdict.h"
 
diff --git a/tests/qtest/dbus-display-test.c b/tests/qtest/dbus-display-test.c
index 81043162dfdd..8be597476315 100644
--- a/tests/qtest/dbus-display-test.c
+++ b/tests/qtest/dbus-display-test.c
@@ -2,7 +2,7 @@
 #include "qemu/dbus.h"
 #include <gio/gio.h>
 #include <gio/gunixfdlist.h>
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "dbus-display1.h"
 
 static GDBusConnection*
diff --git a/tests/qtest/dbus-vmstate-test.c b/tests/qtest/dbus-vmstate-test.c
index a8acab763f5d..74ede651f63d 100644
--- a/tests/qtest/dbus-vmstate-test.c
+++ b/tests/qtest/dbus-vmstate-test.c
@@ -1,7 +1,7 @@
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
 #include <gio/gio.h>
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "dbus-vmstate1.h"
 #include "migration-helpers.h"
 
diff --git a/tests/qtest/device-introspect-test.c b/tests/qtest/device-introspect-test.c
index adf39b2518e8..5b0ffe43f5f4 100644
--- a/tests/qtest/device-introspect-test.c
+++ b/tests/qtest/device-introspect-test.c
@@ -21,7 +21,7 @@
 #include "qapi/qmp/qstring.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qlist.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 const char common_args[] = "-nodefaults -machine none";
 
diff --git a/tests/qtest/device-plug-test.c b/tests/qtest/device-plug-test.c
index 404a92e1328a..2e3137843e37 100644
--- a/tests/qtest/device-plug-test.c
+++ b/tests/qtest/device-plug-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qstring.h"
 
diff --git a/tests/qtest/drive_del-test.c b/tests/qtest/drive_del-test.c
index 0cc18dfa4aae..5e6d58b4dd26 100644
--- a/tests/qtest/drive_del-test.c
+++ b/tests/qtest/drive_del-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/virtio.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qlist.h"
diff --git a/tests/qtest/ds1338-test.c b/tests/qtest/ds1338-test.c
index c5d46bcc643d..f6ade9a050fb 100644
--- a/tests/qtest/ds1338-test.c
+++ b/tests/qtest/ds1338-test.c
@@ -18,7 +18,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/i2c.h"
 
 #define DS1338_ADDR 0x68
diff --git a/tests/qtest/e1000-test.c b/tests/qtest/e1000-test.c
index ea286d179304..c387984ef6d6 100644
--- a/tests/qtest/e1000-test.c
+++ b/tests/qtest/e1000-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/eepro100-test.c b/tests/qtest/eepro100-test.c
index d72ad099f1eb..8dbffff0b81b 100644
--- a/tests/qtest/eepro100-test.c
+++ b/tests/qtest/eepro100-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/endianness-test.c b/tests/qtest/endianness-test.c
index 2f5a88bf4ce5..222d116fae2d 100644
--- a/tests/qtest/endianness-test.c
+++ b/tests/qtest/endianness-test.c
@@ -13,7 +13,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/bswap.h"
 
 typedef struct TestCase TestCase;
diff --git a/tests/qtest/erst-test.c b/tests/qtest/erst-test.c
index a0adc35bef7f..4e768a126f6a 100644
--- a/tests/qtest/erst-test.c
+++ b/tests/qtest/erst-test.c
@@ -10,7 +10,7 @@
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
 #include "libqos/libqos-pc.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #include "hw/pci/pci.h"
 
diff --git a/tests/qtest/es1370-test.c b/tests/qtest/es1370-test.c
index 2fd7fd2d3d30..adccdac1be57 100644
--- a/tests/qtest/es1370-test.c
+++ b/tests/qtest/es1370-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/fuzz-e1000e-test.c b/tests/qtest/fuzz-e1000e-test.c
index 66229e60964a..5052883fb6a8 100644
--- a/tests/qtest/fuzz-e1000e-test.c
+++ b/tests/qtest/fuzz-e1000e-test.c
@@ -8,7 +8,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * https://bugs.launchpad.net/qemu/+bug/1879531
diff --git a/tests/qtest/fuzz-lsi53c895a-test.c b/tests/qtest/fuzz-lsi53c895a-test.c
index 031d9de2419b..2e8e67859efb 100644
--- a/tests/qtest/fuzz-lsi53c895a-test.c
+++ b/tests/qtest/fuzz-lsi53c895a-test.c
@@ -6,7 +6,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * This used to trigger the assert in lsi_do_dma()
diff --git a/tests/qtest/fuzz-megasas-test.c b/tests/qtest/fuzz-megasas-test.c
index 129b182f830c..287fe19fc764 100644
--- a/tests/qtest/fuzz-megasas-test.c
+++ b/tests/qtest/fuzz-megasas-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * This used to trigger the assert in scsi_dma_complete
diff --git a/tests/qtest/fuzz-sb16-test.c b/tests/qtest/fuzz-sb16-test.c
index 91fdcd1e8a0f..a65826b94378 100644
--- a/tests/qtest/fuzz-sb16-test.c
+++ b/tests/qtest/fuzz-sb16-test.c
@@ -7,7 +7,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * This used to trigger the assert in audio_calloc
diff --git a/tests/qtest/fuzz-sdcard-test.c b/tests/qtest/fuzz-sdcard-test.c
index d0f4e0e93c0b..e7fd818148e8 100644
--- a/tests/qtest/fuzz-sdcard-test.c
+++ b/tests/qtest/fuzz-sdcard-test.c
@@ -7,7 +7,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * https://gitlab.com/qemu-project/qemu/-/issues/450
diff --git a/tests/qtest/fuzz-virtio-scsi-test.c b/tests/qtest/fuzz-virtio-scsi-test.c
index c9b6fe21231d..71c91b03568d 100644
--- a/tests/qtest/fuzz-virtio-scsi-test.c
+++ b/tests/qtest/fuzz-virtio-scsi-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * Here a MemoryRegionCache pointed to an MMIO region but had a
diff --git a/tests/qtest/fuzz-xlnx-dp-test.c b/tests/qtest/fuzz-xlnx-dp-test.c
index 69eb6c0eb104..51e9a373002c 100644
--- a/tests/qtest/fuzz-xlnx-dp-test.c
+++ b/tests/qtest/fuzz-xlnx-dp-test.c
@@ -7,7 +7,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * This used to trigger the out-of-bounds read in xlnx_dp_read
diff --git a/tests/qtest/fuzz/fuzz.c b/tests/qtest/fuzz/fuzz.c
index d3afd294db24..0ad4ba9e94dc 100644
--- a/tests/qtest/fuzz/fuzz.c
+++ b/tests/qtest/fuzz/fuzz.c
@@ -22,7 +22,7 @@
 #include "sysemu/runstate.h"
 #include "qemu/main-loop.h"
 #include "qemu/rcu.h"
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/qgraph.h"
 #include "fuzz.h"
 
diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuzz.c
index bce83604825e..25df19fd5af3 100644
--- a/tests/qtest/fuzz/generic_fuzz.c
+++ b/tests/qtest/fuzz/generic_fuzz.c
@@ -15,7 +15,7 @@
 #include <wordexp.h>
 
 #include "hw/core/cpu.h"
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/pci-pc.h"
 #include "fuzz.h"
 #include "fork_fuzz.h"
diff --git a/tests/qtest/fuzz/i440fx_fuzz.c b/tests/qtest/fuzz/i440fx_fuzz.c
index 86796bff2bca..b17fc725dfd6 100644
--- a/tests/qtest/fuzz/i440fx_fuzz.c
+++ b/tests/qtest/fuzz/i440fx_fuzz.c
@@ -13,7 +13,7 @@
 #include "qemu/osdep.h"
 
 #include "qemu/main-loop.h"
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/pci.h"
 #include "tests/qtest/libqos/pci-pc.h"
 #include "fuzz.h"
diff --git a/tests/qtest/fuzz/qos_fuzz.c b/tests/qtest/fuzz/qos_fuzz.c
index dc891d838b6a..c856d3d500e8 100644
--- a/tests/qtest/fuzz/qos_fuzz.c
+++ b/tests/qtest/fuzz/qos_fuzz.c
@@ -22,7 +22,7 @@
 #include "exec/memory.h"
 #include "qemu/main-loop.h"
 
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/malloc.h"
 #include "tests/qtest/libqos/qgraph.h"
 #include "tests/qtest/libqos/qgraph_internal.h"
diff --git a/tests/qtest/fuzz/virtio_blk_fuzz.c b/tests/qtest/fuzz/virtio_blk_fuzz.c
index 623a756fd472..236d078cc862 100644
--- a/tests/qtest/fuzz/virtio_blk_fuzz.c
+++ b/tests/qtest/fuzz/virtio_blk_fuzz.c
@@ -11,7 +11,7 @@
 
 #include "qemu/osdep.h"
 
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/virtio-blk.h"
 #include "tests/qtest/libqos/virtio.h"
 #include "tests/qtest/libqos/virtio-pci.h"
diff --git a/tests/qtest/fuzz/virtio_net_fuzz.c b/tests/qtest/fuzz/virtio_net_fuzz.c
index 0e873ab8e25f..3df78d9c1c2a 100644
--- a/tests/qtest/fuzz/virtio_net_fuzz.c
+++ b/tests/qtest/fuzz/virtio_net_fuzz.c
@@ -13,7 +13,7 @@
 #include "qemu/osdep.h"
 
 #include "standard-headers/linux/virtio_config.h"
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/virtio-net.h"
 #include "fuzz.h"
 #include "fork_fuzz.h"
diff --git a/tests/qtest/fuzz/virtio_scsi_fuzz.c b/tests/qtest/fuzz/virtio_scsi_fuzz.c
index 6ff6fabe4ad3..b3220ef6cb20 100644
--- a/tests/qtest/fuzz/virtio_scsi_fuzz.c
+++ b/tests/qtest/fuzz/virtio_scsi_fuzz.c
@@ -12,7 +12,7 @@
 
 #include "qemu/osdep.h"
 
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/virtio-scsi.h"
 #include "tests/qtest/libqos/virtio.h"
 #include "tests/qtest/libqos/virtio-pci.h"
diff --git a/tests/qtest/fw_cfg-test.c b/tests/qtest/fw_cfg-test.c
index 95b3907c18c4..5dc807ba2385 100644
--- a/tests/qtest/fw_cfg-test.c
+++ b/tests/qtest/fw_cfg-test.c
@@ -12,7 +12,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "standard-headers/linux/qemu_fw_cfg.h"
 #include "libqos/fw_cfg.h"
 #include "qemu/bswap.h"
diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c
index da9c4c2792de..413cf964c05b 100644
--- a/tests/qtest/hd-geo-test.c
+++ b/tests/qtest/hd-geo-test.c
@@ -18,7 +18,7 @@
 #include "qemu/osdep.h"
 #include "qemu/bswap.h"
 #include "qapi/qmp/qlist.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/fw_cfg.h"
 #include "libqos/libqos.h"
 #include "standard-headers/linux/qemu_fw_cfg.h"
diff --git a/tests/qtest/hexloader-test.c b/tests/qtest/hexloader-test.c
index 561502052a67..8b7aa2d72d0d 100644
--- a/tests/qtest/hexloader-test.c
+++ b/tests/qtest/hexloader-test.c
@@ -10,7 +10,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /* Load 'test.hex' and verify that the in-memory contents are as expected.
  * 'test.hex' is a memory test pattern stored in Hexadecimal Object
diff --git a/tests/qtest/ide-test.c b/tests/qtest/ide-test.c
index b7243a17b11d..5bcb75a7e53d 100644
--- a/tests/qtest/ide-test.c
+++ b/tests/qtest/ide-test.c
@@ -25,7 +25,7 @@
 #include "qemu/osdep.h"
 
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/libqos.h"
 #include "libqos/pci-pc.h"
 #include "libqos/malloc-pc.h"
diff --git a/tests/qtest/ipoctal232-test.c b/tests/qtest/ipoctal232-test.c
index 65ce10b81bef..53a8c9b13ce5 100644
--- a/tests/qtest/ipoctal232-test.c
+++ b/tests/qtest/ipoctal232-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 
diff --git a/tests/qtest/ivshmem-test.c b/tests/qtest/ivshmem-test.c
index 95628a418579..bfc91d1719d2 100644
--- a/tests/qtest/ivshmem-test.c
+++ b/tests/qtest/ivshmem-test.c
@@ -13,7 +13,7 @@
 #include "contrib/ivshmem-server/ivshmem-server.h"
 #include "libqos/libqos-pc.h"
 #include "libqos/libqos-spapr.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #define TMPSHMSIZE (1 << 20)
 static char *tmpshm;
diff --git a/tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c b/tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c
index 79631cc7a9ad..c8a3ea11eb40 100644
--- a/tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c
+++ b/tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/ahci.c b/tests/qtest/libqos/ahci.c
index 41c4be5efa93..f53f12aa9965 100644
--- a/tests/qtest/libqos/ahci.c
+++ b/tests/qtest/libqos/ahci.c
@@ -24,7 +24,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "ahci.h"
 #include "pci-pc.h"
 
diff --git a/tests/qtest/libqos/arm-imx25-pdk-machine.c b/tests/qtest/libqos/arm-imx25-pdk-machine.c
index 6692adfa4fcb..54d0c9533044 100644
--- a/tests/qtest/libqos/arm-imx25-pdk-machine.c
+++ b/tests/qtest/libqos/arm-imx25-pdk-machine.c
@@ -19,7 +19,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "malloc.h"
 #include "qgraph.h"
 #include "i2c.h"
diff --git a/tests/qtest/libqos/arm-n800-machine.c b/tests/qtest/libqos/arm-n800-machine.c
index ff2049c3a7eb..ecd46b1dafa0 100644
--- a/tests/qtest/libqos/arm-n800-machine.c
+++ b/tests/qtest/libqos/arm-n800-machine.c
@@ -19,7 +19,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "malloc.h"
 #include "qgraph.h"
 #include "i2c.h"
diff --git a/tests/qtest/libqos/arm-raspi2-machine.c b/tests/qtest/libqos/arm-raspi2-machine.c
index 09ca863c1030..0a2943440b28 100644
--- a/tests/qtest/libqos/arm-raspi2-machine.c
+++ b/tests/qtest/libqos/arm-raspi2-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/arm-sabrelite-machine.c b/tests/qtest/libqos/arm-sabrelite-machine.c
index 72425f0ad404..ec19a01660c0 100644
--- a/tests/qtest/libqos/arm-sabrelite-machine.c
+++ b/tests/qtest/libqos/arm-sabrelite-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/arm-smdkc210-machine.c b/tests/qtest/libqos/arm-smdkc210-machine.c
index 321b8826d4a2..4bff249ee89a 100644
--- a/tests/qtest/libqos/arm-smdkc210-machine.c
+++ b/tests/qtest/libqos/arm-smdkc210-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/arm-virt-machine.c b/tests/qtest/libqos/arm-virt-machine.c
index e0f59322845a..2e0beaefb8d7 100644
--- a/tests/qtest/libqos/arm-virt-machine.c
+++ b/tests/qtest/libqos/arm-virt-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c b/tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c
index 56e53c745bff..3be80020a6bc 100644
--- a/tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c
+++ b/tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/e1000e.c b/tests/qtest/libqos/e1000e.c
index a451f6168f63..f87e0e84b2aa 100644
--- a/tests/qtest/libqos/e1000e.c
+++ b/tests/qtest/libqos/e1000e.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "pci-pc.h"
 #include "qemu/sockets.h"
 #include "qemu/iov.h"
diff --git a/tests/qtest/libqos/fw_cfg.c b/tests/qtest/libqos/fw_cfg.c
index 6b8e1babe51e..89f053ccacbd 100644
--- a/tests/qtest/libqos/fw_cfg.c
+++ b/tests/qtest/libqos/fw_cfg.c
@@ -14,7 +14,7 @@
 
 #include "qemu/osdep.h"
 #include "fw_cfg.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/bswap.h"
 #include "hw/nvram/fw_cfg.h"
 
diff --git a/tests/qtest/libqos/i2c-imx.c b/tests/qtest/libqos/i2c-imx.c
index 8f9a7e383146..710cb926d62b 100644
--- a/tests/qtest/libqos/i2c-imx.c
+++ b/tests/qtest/libqos/i2c-imx.c
@@ -21,7 +21,7 @@
 #include "i2c.h"
 
 
-#include "libqtest.h"
+#include "../libqtest.h"
 
 #include "hw/i2c/imx_i2c.h"
 
diff --git a/tests/qtest/libqos/i2c-omap.c b/tests/qtest/libqos/i2c-omap.c
index eb4e453485db..6f98f54820be 100644
--- a/tests/qtest/libqos/i2c-omap.c
+++ b/tests/qtest/libqos/i2c-omap.c
@@ -11,7 +11,7 @@
 
 
 #include "qemu/bswap.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 
 enum OMAPI2CRegisters {
     OMAP_I2C_REV  = 0x00,
diff --git a/tests/qtest/libqos/i2c.c b/tests/qtest/libqos/i2c.c
index ade1bdb40e05..1a54c004eb41 100644
--- a/tests/qtest/libqos/i2c.c
+++ b/tests/qtest/libqos/i2c.c
@@ -8,7 +8,7 @@
  */
 #include "qemu/osdep.h"
 #include "i2c.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 
 void qi2c_send(QI2CDevice *i2cdev, const uint8_t *buf, uint16_t len)
 {
diff --git a/tests/qtest/libqos/libqos.c b/tests/qtest/libqos/libqos.c
index 2251e864efe1..85c7641add1b 100644
--- a/tests/qtest/libqos/libqos.c
+++ b/tests/qtest/libqos/libqos.c
@@ -1,7 +1,7 @@
 #include "qemu/osdep.h"
 #include <sys/wait.h>
 
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "libqos.h"
 #include "pci.h"
 #include "qapi/qmp/qdict.h"
diff --git a/tests/qtest/libqos/pci-pc.c b/tests/qtest/libqos/pci-pc.c
index f97844289f13..e9dd5a57ec55 100644
--- a/tests/qtest/libqos/pci-pc.c
+++ b/tests/qtest/libqos/pci-pc.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "pci-pc.h"
 #include "qapi/qmp/qdict.h"
 #include "hw/pci/pci_regs.h"
diff --git a/tests/qtest/libqos/pci-spapr.c b/tests/qtest/libqos/pci-spapr.c
index 262226985f37..76bf9a855d5c 100644
--- a/tests/qtest/libqos/pci-spapr.c
+++ b/tests/qtest/libqos/pci-spapr.c
@@ -6,7 +6,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "pci-spapr.h"
 #include "rtas.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/ppc64_pseries-machine.c b/tests/qtest/libqos/ppc64_pseries-machine.c
index 24ca1799765f..364e9c689bb9 100644
--- a/tests/qtest/libqos/ppc64_pseries-machine.c
+++ b/tests/qtest/libqos/ppc64_pseries-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qgraph.h"
 #include "pci-spapr.h"
 #include "qemu/module.h"
diff --git a/tests/qtest/libqos/qgraph.c b/tests/qtest/libqos/qgraph.c
index 109ff04e1e8f..0a2dddfafa4f 100644
--- a/tests/qtest/libqos/qgraph.c
+++ b/tests/qtest/libqos/qgraph.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/queue.h"
 #include "qgraph_internal.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/qos_external.c b/tests/qtest/libqos/qos_external.c
index 10ee0f75b288..b7a0b873a362 100644
--- a/tests/qtest/libqos/qos_external.c
+++ b/tests/qtest/libqos/qos_external.c
@@ -18,7 +18,7 @@
 
 #include "qemu/osdep.h"
 #include <getopt.h>
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qbool.h"
 #include "qapi/qmp/qstring.h"
diff --git a/tests/qtest/libqos/rtas.c b/tests/qtest/libqos/rtas.c
index db29d5554dcb..dedbfb4cb3a6 100644
--- a/tests/qtest/libqos/rtas.c
+++ b/tests/qtest/libqos/rtas.c
@@ -4,7 +4,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "rtas.h"
 
 static void qrtas_copy_args(QTestState *qts, uint64_t target_args,
diff --git a/tests/qtest/libqos/sdhci-cmd.c b/tests/qtest/libqos/sdhci-cmd.c
index 2d9e51834114..a6f073ac1ac9 100644
--- a/tests/qtest/libqos/sdhci-cmd.c
+++ b/tests/qtest/libqos/sdhci-cmd.c
@@ -16,7 +16,7 @@
 
 #include "qemu/osdep.h"
 #include "sdhci-cmd.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 
 static ssize_t read_fifo(QTestState *qts, uint64_t reg, char *msg, size_t count)
 {
diff --git a/tests/qtest/libqos/sdhci.c b/tests/qtest/libqos/sdhci.c
index 65f0d07fc5ac..71696980f83e 100644
--- a/tests/qtest/libqos/sdhci.c
+++ b/tests/qtest/libqos/sdhci.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qgraph.h"
 #include "pci.h"
 #include "qemu/module.h"
diff --git a/tests/qtest/libqos/tpci200.c b/tests/qtest/libqos/tpci200.c
index 1787b1f188d3..8b0060324728 100644
--- a/tests/qtest/libqos/tpci200.c
+++ b/tests/qtest/libqos/tpci200.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "pci.h"
diff --git a/tests/qtest/libqos/usb.c b/tests/qtest/libqos/usb.c
index 8b45b0298446..446fdb5796c4 100644
--- a/tests/qtest/libqos/usb.c
+++ b/tests/qtest/libqos/usb.c
@@ -12,7 +12,7 @@
  * See the COPYING file in the top-level directory.
  */
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "hw/usb/uhci-regs.h"
 #include "usb.h"
 
diff --git a/tests/qtest/libqos/vhost-user-blk.c b/tests/qtest/libqos/vhost-user-blk.c
index 568c3426ed3a..2f3c9cb5336d 100644
--- a/tests/qtest/libqos/vhost-user-blk.c
+++ b/tests/qtest/libqos/vhost-user-blk.c
@@ -21,7 +21,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "standard-headers/linux/virtio_blk.h"
 #include "vhost-user-blk.h"
diff --git a/tests/qtest/libqos/virtio-9p.c b/tests/qtest/libqos/virtio-9p.c
index f51f0635cc0c..70aea8bf6287 100644
--- a/tests/qtest/libqos/virtio-9p.c
+++ b/tests/qtest/libqos/virtio-9p.c
@@ -22,7 +22,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "standard-headers/linux/virtio_ids.h"
 #include "virtio-9p.h"
diff --git a/tests/qtest/libqos/virtio-balloon.c b/tests/qtest/libqos/virtio-balloon.c
index a3da5c234d49..29b5d175845a 100644
--- a/tests/qtest/libqos/virtio-balloon.c
+++ b/tests/qtest/libqos/virtio-balloon.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "virtio-balloon.h"
diff --git a/tests/qtest/libqos/virtio-blk.c b/tests/qtest/libqos/virtio-blk.c
index 5da02591bcc2..ee4943f32b99 100644
--- a/tests/qtest/libqos/virtio-blk.c
+++ b/tests/qtest/libqos/virtio-blk.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "standard-headers/linux/virtio_blk.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/virtio-iommu.c b/tests/qtest/libqos/virtio-iommu.c
index 18cba4ca36b6..afc7d14e9a60 100644
--- a/tests/qtest/libqos/virtio-iommu.c
+++ b/tests/qtest/libqos/virtio-iommu.c
@@ -12,7 +12,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "virtio-iommu.h"
diff --git a/tests/qtest/libqos/virtio-mmio.c b/tests/qtest/libqos/virtio-mmio.c
index 75efda30299a..a6cca8613b2c 100644
--- a/tests/qtest/libqos/virtio-mmio.c
+++ b/tests/qtest/libqos/virtio-mmio.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "virtio.h"
 #include "virtio-mmio.h"
diff --git a/tests/qtest/libqos/virtio-net.c b/tests/qtest/libqos/virtio-net.c
index 1cae07f60d6c..2ac73ac0b416 100644
--- a/tests/qtest/libqos/virtio-net.c
+++ b/tests/qtest/libqos/virtio-net.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "virtio-net.h"
diff --git a/tests/qtest/libqos/virtio-pci.c b/tests/qtest/libqos/virtio-pci.c
index cd3c0f5bf335..67c2498c84af 100644
--- a/tests/qtest/libqos/virtio-pci.c
+++ b/tests/qtest/libqos/virtio-pci.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "virtio.h"
 #include "virtio-pci.h"
 #include "pci.h"
diff --git a/tests/qtest/libqos/virtio-rng.c b/tests/qtest/libqos/virtio-rng.c
index 2e09dd7c48cb..078e3abaa72a 100644
--- a/tests/qtest/libqos/virtio-rng.c
+++ b/tests/qtest/libqos/virtio-rng.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "virtio-rng.h"
diff --git a/tests/qtest/libqos/virtio-scsi.c b/tests/qtest/libqos/virtio-scsi.c
index 5644e32fc319..c4d046142012 100644
--- a/tests/qtest/libqos/virtio-scsi.c
+++ b/tests/qtest/libqos/virtio-scsi.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "standard-headers/linux/virtio_ids.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/virtio-serial.c b/tests/qtest/libqos/virtio-serial.c
index ee34afd95ad8..1d689c3e38fc 100644
--- a/tests/qtest/libqos/virtio-serial.c
+++ b/tests/qtest/libqos/virtio-serial.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "virtio-serial.h"
diff --git a/tests/qtest/libqos/virtio.c b/tests/qtest/libqos/virtio.c
index fba918665951..09ec09b655cd 100644
--- a/tests/qtest/libqos/virtio.c
+++ b/tests/qtest/libqos/virtio.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "qemu/bswap.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "virtio.h"
 #include "standard-headers/linux/virtio_config.h"
 #include "standard-headers/linux/virtio_ring.h"
diff --git a/tests/qtest/libqos/x86_64_pc-machine.c b/tests/qtest/libqos/x86_64_pc-machine.c
index ad96742a92d6..dce0c9463a47 100644
--- a/tests/qtest/libqos/x86_64_pc-machine.c
+++ b/tests/qtest/libqos/x86_64_pc-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qgraph.h"
 #include "pci-pc.h"
 #include "qemu/module.h"
diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
index 5098d71485cc..aaf5ab0ca533 100644
--- a/tests/qtest/libqtest.c
+++ b/tests/qtest/libqtest.c
@@ -20,7 +20,7 @@
 #include <sys/wait.h>
 #include <sys/un.h>
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/ctype.h"
 #include "qemu/cutils.h"
 #include "qapi/error.h"
diff --git a/tests/qtest/lpc-ich9-test.c b/tests/qtest/lpc-ich9-test.c
index fe0bef998075..8ac95b89f729 100644
--- a/tests/qtest/lpc-ich9-test.c
+++ b/tests/qtest/lpc-ich9-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 static void test_lp1878642_pci_bus_get_irq_level_assert(void)
 {
diff --git a/tests/qtest/m48t59-test.c b/tests/qtest/m48t59-test.c
index 6db3234100a3..b94a1230f7fd 100644
--- a/tests/qtest/m48t59-test.c
+++ b/tests/qtest/m48t59-test.c
@@ -14,7 +14,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #define RTC_SECONDS             0x9
 #define RTC_MINUTES             0xa
diff --git a/tests/qtest/machine-none-test.c b/tests/qtest/machine-none-test.c
index 8ca18074b9f9..d0f8cd990245 100644
--- a/tests/qtest/machine-none-test.c
+++ b/tests/qtest/machine-none-test.c
@@ -13,7 +13,7 @@
 #include "qemu/osdep.h"
 
 #include "qemu/cutils.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 
 
diff --git a/tests/qtest/megasas-test.c b/tests/qtest/megasas-test.c
index eae70ff95f9c..d6796b9bd74d 100644
--- a/tests/qtest/megasas-test.c
+++ b/tests/qtest/megasas-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/bswap.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
diff --git a/tests/qtest/microbit-test.c b/tests/qtest/microbit-test.c
index 2b255579dfdd..04e199ec33f4 100644
--- a/tests/qtest/microbit-test.c
+++ b/tests/qtest/microbit-test.c
@@ -16,7 +16,7 @@
 
 #include "qemu/osdep.h"
 #include "exec/hwaddr.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #include "hw/arm/nrf51.h"
 #include "hw/char/nrf51_uart.h"
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index 2af36c16a371..cba6023eb500 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -12,7 +12,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/error.h"
 #include "qapi/qmp/qdict.h"
 #include "qemu/module.h"
diff --git a/tests/qtest/modules-test.c b/tests/qtest/modules-test.c
index c238b3f42216..88217686e14e 100644
--- a/tests/qtest/modules-test.c
+++ b/tests/qtest/modules-test.c
@@ -1,5 +1,5 @@
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 const char common_args[] = "-nodefaults -machine none";
 
diff --git a/tests/qtest/ne2000-test.c b/tests/qtest/ne2000-test.c
index 43cfc4535aab..3fc0e555d5e2 100644
--- a/tests/qtest/ne2000-test.c
+++ b/tests/qtest/ne2000-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/npcm7xx_adc-test.c b/tests/qtest/npcm7xx_adc-test.c
index 5ce8ce13b3d7..3fa6d9ece0bd 100644
--- a/tests/qtest/npcm7xx_adc-test.c
+++ b/tests/qtest/npcm7xx_adc-test.c
@@ -17,7 +17,7 @@
 #include "qemu/osdep.h"
 #include "qemu/bitops.h"
 #include "qemu/timer.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 
 #define REF_HZ          (25000000)
diff --git a/tests/qtest/npcm7xx_pwm-test.c b/tests/qtest/npcm7xx_pwm-test.c
index a54fd70d273b..c4a5fdcacd79 100644
--- a/tests/qtest/npcm7xx_pwm-test.c
+++ b/tests/qtest/npcm7xx_pwm-test.c
@@ -16,7 +16,7 @@
 
 #include "qemu/osdep.h"
 #include "qemu/bitops.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qnum.h"
 
diff --git a/tests/qtest/npcm7xx_sdhci-test.c b/tests/qtest/npcm7xx_sdhci-test.c
index c1f496fb29bb..aa35a77e8d37 100644
--- a/tests/qtest/npcm7xx_sdhci-test.c
+++ b/tests/qtest/npcm7xx_sdhci-test.c
@@ -17,7 +17,7 @@
 #include "qemu/osdep.h"
 #include "hw/sd/npcm7xx_sdhci.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqtest-single.h"
 #include "libqos/sdhci-cmd.h"
 
diff --git a/tests/qtest/npcm7xx_smbus-test.c b/tests/qtest/npcm7xx_smbus-test.c
index 6b3038ac596f..a878cdc00142 100644
--- a/tests/qtest/npcm7xx_smbus-test.c
+++ b/tests/qtest/npcm7xx_smbus-test.c
@@ -17,7 +17,7 @@
 #include "qemu/osdep.h"
 #include "qemu/bitops.h"
 #include "libqos/i2c.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "hw/sensor/tmp105_regs.h"
 
 #define NR_SMBUS_DEVICES    16
diff --git a/tests/qtest/npcm7xx_watchdog_timer-test.c b/tests/qtest/npcm7xx_watchdog_timer-test.c
index 3aae5a043813..4773a673b207 100644
--- a/tests/qtest/npcm7xx_watchdog_timer-test.c
+++ b/tests/qtest/npcm7xx_watchdog_timer-test.c
@@ -17,7 +17,7 @@
 #include "qemu/osdep.h"
 #include "qemu/timer.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 
 #define WTCR_OFFSET     0x1c
diff --git a/tests/qtest/numa-test.c b/tests/qtest/numa-test.c
index 90bf68a5b33c..749429dd27e6 100644
--- a/tests/qtest/numa-test.c
+++ b/tests/qtest/numa-test.c
@@ -10,7 +10,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qlist.h"
 
diff --git a/tests/qtest/nvme-test.c b/tests/qtest/nvme-test.c
index f8bafb5d70fb..008d189b0faf 100644
--- a/tests/qtest/nvme-test.c
+++ b/tests/qtest/nvme-test.c
@@ -10,7 +10,7 @@
 #include "qemu/osdep.h"
 #include "qemu/module.h"
 #include "qemu/units.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
 #include "include/block/nvme.h"
diff --git a/tests/qtest/pca9552-test.c b/tests/qtest/pca9552-test.c
index 42a131266512..d80ed93cd3a5 100644
--- a/tests/qtest/pca9552-test.c
+++ b/tests/qtest/pca9552-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/qgraph.h"
 #include "libqos/i2c.h"
 #include "hw/misc/pca9552_regs.h"
diff --git a/tests/qtest/pci-test.c b/tests/qtest/pci-test.c
index e15d4d94d1d0..4b2092b94973 100644
--- a/tests/qtest/pci-test.c
+++ b/tests/qtest/pci-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/pcnet-test.c b/tests/qtest/pcnet-test.c
index 7583aeb3c38f..900944fa7e34 100644
--- a/tests/qtest/pcnet-test.c
+++ b/tests/qtest/pcnet-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/pflash-cfi02-test.c b/tests/qtest/pflash-cfi02-test.c
index 6168edc821a8..7fce614b6412 100644
--- a/tests/qtest/pflash-cfi02-test.c
+++ b/tests/qtest/pflash-cfi02-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * To test the pflash_cfi02 device, we run QEMU with the musicpal machine with
diff --git a/tests/qtest/pnv-xscom-test.c b/tests/qtest/pnv-xscom-test.c
index c8d40433620a..2c46d5cf6de3 100644
--- a/tests/qtest/pnv-xscom-test.c
+++ b/tests/qtest/pnv-xscom-test.c
@@ -8,7 +8,7 @@
  */
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 typedef enum PnvChipType {
     PNV_CHIP_POWER8E,     /* AKA Murano (default) */
diff --git a/tests/qtest/prom-env-test.c b/tests/qtest/prom-env-test.c
index bdbb01d8e584..c2b0448e551d 100644
--- a/tests/qtest/prom-env-test.c
+++ b/tests/qtest/prom-env-test.c
@@ -20,7 +20,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/libqos-spapr.h"
 
 #define MAGIC   0xcafec0de
diff --git a/tests/qtest/pvpanic-pci-test.c b/tests/qtest/pvpanic-pci-test.c
index 2358852d356f..c82c365c267d 100644
--- a/tests/qtest/pvpanic-pci-test.c
+++ b/tests/qtest/pvpanic-pci-test.c
@@ -12,7 +12,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "libqos/pci.h"
 #include "libqos/pci-pc.h"
diff --git a/tests/qtest/pvpanic-test.c b/tests/qtest/pvpanic-test.c
index 6dcad2db4984..bc7b7dfc39e2 100644
--- a/tests/qtest/pvpanic-test.c
+++ b/tests/qtest/pvpanic-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 
 static void test_panic_nopause(void)
diff --git a/tests/qtest/pxe-test.c b/tests/qtest/pxe-test.c
index 3cb47d2c5496..52f0b5c67c03 100644
--- a/tests/qtest/pxe-test.c
+++ b/tests/qtest/pxe-test.c
@@ -14,7 +14,7 @@
 
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "boot-sector.h"
 #include "libqos/libqos-spapr.h"
 
diff --git a/tests/qtest/q35-test.c b/tests/qtest/q35-test.c
index b7cf1449906f..c922d81bc020 100644
--- a/tests/qtest/q35-test.c
+++ b/tests/qtest/q35-test.c
@@ -10,7 +10,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/pci.h"
 #include "libqos/pci-pc.h"
 #include "hw/pci-host/q35.h"
diff --git a/tests/qtest/qmp-cmd-test.c b/tests/qtest/qmp-cmd-test.c
index 7f103ea3fd2a..056b40e67f60 100644
--- a/tests/qtest/qmp-cmd-test.c
+++ b/tests/qtest/qmp-cmd-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/error.h"
 #include "qapi/qapi-visit-introspect.h"
 #include "qapi/qmp/qdict.h"
diff --git a/tests/qtest/qmp-test.c b/tests/qtest/qmp-test.c
index cd27fae3deb2..9a42480cef0a 100644
--- a/tests/qtest/qmp-test.c
+++ b/tests/qtest/qmp-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/error.h"
 #include "qapi/qapi-visit-control.h"
 #include "qapi/qmp/qdict.h"
diff --git a/tests/qtest/qom-test.c b/tests/qtest/qom-test.c
index 6b162e12b5aa..7b871b2a3107 100644
--- a/tests/qtest/qom-test.c
+++ b/tests/qtest/qom-test.c
@@ -12,7 +12,7 @@
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qlist.h"
 #include "qemu/cutils.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 static void test_properties(QTestState *qts, const char *path, bool recurse)
 {
diff --git a/tests/qtest/rtas-test.c b/tests/qtest/rtas-test.c
index 5f1194a6eb53..50df60e5b20e 100644
--- a/tests/qtest/rtas-test.c
+++ b/tests/qtest/rtas-test.c
@@ -1,6 +1,6 @@
 #include "qemu/osdep.h"
 #include "qemu/cutils.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #include "libqos/libqos-spapr.h"
 #include "libqos/rtas.h"
diff --git a/tests/qtest/sdhci-test.c b/tests/qtest/sdhci-test.c
index a110cfe3219c..6275e7626c21 100644
--- a/tests/qtest/sdhci-test.c
+++ b/tests/qtest/sdhci-test.c
@@ -10,7 +10,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/registerfields.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/pci-pc.h"
 #include "hw/pci/pci.h"
diff --git a/tests/qtest/spapr-phb-test.c b/tests/qtest/spapr-phb-test.c
index ea8d59650721..093dc22f2f41 100644
--- a/tests/qtest/spapr-phb-test.c
+++ b/tests/qtest/spapr-phb-test.c
@@ -9,7 +9,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 
diff --git a/tests/qtest/tco-test.c b/tests/qtest/tco-test.c
index 47bc7ad3019d..254f7353701c 100644
--- a/tests/qtest/tco-test.c
+++ b/tests/qtest/tco-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/pci.h"
 #include "libqos/pci-pc.h"
 #include "qapi/qmp/qdict.h"
diff --git a/tests/qtest/test-filter-mirror.c b/tests/qtest/test-filter-mirror.c
index fdf66cebd62f..c8b0a92b53b7 100644
--- a/tests/qtest/test-filter-mirror.c
+++ b/tests/qtest/test-filter-mirror.c
@@ -9,7 +9,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qemu/iov.h"
 #include "qemu/sockets.h"
diff --git a/tests/qtest/test-filter-redirector.c b/tests/qtest/test-filter-redirector.c
index 339d3c04cedc..24ca9280f814 100644
--- a/tests/qtest/test-filter-redirector.c
+++ b/tests/qtest/test-filter-redirector.c
@@ -51,7 +51,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qemu/iov.h"
 #include "qemu/sockets.h"
diff --git a/tests/qtest/test-hmp.c b/tests/qtest/test-hmp.c
index 413eb95d2a0c..f8b22abe4cac 100644
--- a/tests/qtest/test-hmp.c
+++ b/tests/qtest/test-hmp.c
@@ -15,7 +15,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 static int verbose;
 
diff --git a/tests/qtest/tpm-crb-swtpm-test.c b/tests/qtest/tpm-crb-swtpm-test.c
index 1d82a48c04be..55fdb5657d91 100644
--- a/tests/qtest/tpm-crb-swtpm-test.c
+++ b/tests/qtest/tpm-crb-swtpm-test.c
@@ -15,7 +15,7 @@
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "tpm-tests.h"
 #include "hw/acpi/tpm.h"
diff --git a/tests/qtest/tpm-tis-device-swtpm-test.c b/tests/qtest/tpm-tis-device-swtpm-test.c
index f7126eff9e74..7b200351426a 100644
--- a/tests/qtest/tpm-tis-device-swtpm-test.c
+++ b/tests/qtest/tpm-tis-device-swtpm-test.c
@@ -16,7 +16,7 @@
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "tpm-tests.h"
 #include "hw/acpi/tpm.h"
diff --git a/tests/qtest/tpm-tis-swtpm-test.c b/tests/qtest/tpm-tis-swtpm-test.c
index fa590e68f115..90131cb3c487 100644
--- a/tests/qtest/tpm-tis-swtpm-test.c
+++ b/tests/qtest/tpm-tis-swtpm-test.c
@@ -15,7 +15,7 @@
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "tpm-tests.h"
 #include "hw/acpi/tpm.h"
diff --git a/tests/qtest/tpm-util.c b/tests/qtest/tpm-util.c
index 3a40ff3f96c2..e0dc5da0af1e 100644
--- a/tests/qtest/tpm-util.c
+++ b/tests/qtest/tpm-util.c
@@ -15,7 +15,7 @@
 #include "qemu/osdep.h"
 
 #include "hw/acpi/tpm.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "tpm-util.h"
 #include "qapi/qmp/qdict.h"
 
diff --git a/tests/qtest/tulip-test.c b/tests/qtest/tulip-test.c
index da16cbfafcc2..2fb6c4d5a781 100644
--- a/tests/qtest/tulip-test.c
+++ b/tests/qtest/tulip-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/virtio-net-failover.c b/tests/qtest/virtio-net-failover.c
index 78811f1c9216..443ee56de966 100644
--- a/tests/qtest/virtio-net-failover.c
+++ b/tests/qtest/virtio-net-failover.c
@@ -8,7 +8,7 @@
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/pci.h"
 #include "libqos/pci-pc.h"
 #include "qapi/qmp/qdict.h"
diff --git a/tests/qtest/virtio-rng-test.c b/tests/qtest/virtio-rng-test.c
index e6b8cd8e0cfa..092ba130684d 100644
--- a/tests/qtest/virtio-rng-test.c
+++ b/tests/qtest/virtio-rng-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/virtio-rng.h"
diff --git a/tests/qtest/virtio-test.c b/tests/qtest/virtio-test.c
index 63134176303a..f7c6afdcf111 100644
--- a/tests/qtest/virtio-test.c
+++ b/tests/qtest/virtio-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/vmgenid-test.c b/tests/qtest/vmgenid-test.c
index 6781a514479b..efba76e7164e 100644
--- a/tests/qtest/vmgenid-test.c
+++ b/tests/qtest/vmgenid-test.c
@@ -14,7 +14,7 @@
 #include "hw/acpi/acpi-defs.h"
 #include "boot-sector.h"
 #include "acpi-utils.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 
 #define VGID_GUID "324e6eaf-d1d1-4bf6-bf41-b9bb6c91fb87"
diff --git a/tests/qtest/vmxnet3-test.c b/tests/qtest/vmxnet3-test.c
index 97c23fd3a8f6..a81025252c87 100644
--- a/tests/qtest/vmxnet3-test.c
+++ b/tests/qtest/vmxnet3-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/wdt_ib700-test.c b/tests/qtest/wdt_ib700-test.c
index 6c36e43fb835..797288d939fa 100644
--- a/tests/qtest/wdt_ib700-test.c
+++ b/tests/qtest/wdt_ib700-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qemu/timer.h"
 
diff --git a/tests/qtest/xlnx-can-test.c b/tests/qtest/xlnx-can-test.c
index 54de71a68643..89610fc499b6 100644
--- a/tests/qtest/xlnx-can-test.c
+++ b/tests/qtest/xlnx-can-test.c
@@ -25,7 +25,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /* Base address. */
 #define CAN0_BASE_ADDR          0xFF060000
diff --git a/tests/unit/test-qga.c b/tests/unit/test-qga.c
index e17a288034bc..d6df1ee92ea1 100644
--- a/tests/unit/test-qga.c
+++ b/tests/unit/test-qga.c
@@ -4,7 +4,7 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 
-#include "../qtest/libqos/libqtest.h"
+#include "../qtest/libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qlist.h"
 
diff --git a/scripts/oss-fuzz/output_reproducer.py b/scripts/oss-fuzz/output_reproducer.py
index 3608b0600e00..e8ef76b34138 100755
--- a/scripts/oss-fuzz/output_reproducer.py
+++ b/scripts/oss-fuzz/output_reproducer.py
@@ -36,7 +36,7 @@ def c_header(owner):
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
     """.format(date=date.today().year, owner=owner)
 
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 05/10] libqtest: split QMP part in libqmp
  2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
                   ` (3 preceding siblings ...)
  2022-04-22  8:36 ` [PATCH 04/10] tests: move libqtest.h back under qtest/ marcandre.lureau
@ 2022-04-22  8:36 ` marcandre.lureau
  2022-04-25 19:39   ` Thomas Huth
  2022-04-22  8:36 ` [PATCH 06/10] Replace qemu_pipe() with g_unix_open_pipe() marcandre.lureau
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel
  Cc: Laurent Vivier, Marc-André Lureau, Thomas Huth, Paolo Bonzini

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

This will help moving QAPI/QMP in a common subproject.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/qtest/libqmp.h           |  50 +++++++
 tests/qtest/libqtest.h         |  29 +---
 tests/qtest/libqmp.c           | 233 +++++++++++++++++++++++++++++++++
 tests/qtest/libqtest.c         | 205 +----------------------------
 tests/qtest/libqos/meson.build |   5 +-
 tests/unit/meson.build         |   2 +-
 6 files changed, 290 insertions(+), 234 deletions(-)
 create mode 100644 tests/qtest/libqmp.h
 create mode 100644 tests/qtest/libqmp.c

diff --git a/tests/qtest/libqmp.h b/tests/qtest/libqmp.h
new file mode 100644
index 000000000000..94aa97328a17
--- /dev/null
+++ b/tests/qtest/libqmp.h
@@ -0,0 +1,50 @@
+/*
+ * libqmp test unit
+ *
+ * Copyright IBM, Corp. 2012
+ * Copyright Red Hat, Inc. 2012
+ * Copyright SUSE LINUX Products GmbH 2013
+ *
+ * Authors:
+ *  Anthony Liguori   <aliguori@us.ibm.com>
+ *  Paolo Bonzini     <pbonzini@redhat.com>
+ *  Andreas Färber    <afaerber@suse.de>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+#ifndef LIBQMP_H_
+#define LIBQMP_H_
+
+#include "qapi/qmp/qdict.h"
+
+QDict *qmp_fd_receive(int fd);
+void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
+                      const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
+void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
+void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
+void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
+void qmp_fd_vsend_raw(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
+QDict *qmp_fdv(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
+QDict *qmp_fd(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
+
+/**
+ * qmp_rsp_is_err:
+ * @rsp: QMP response to check for error
+ *
+ * Test @rsp for error and discard @rsp.
+ * Returns 'true' if there is error in @rsp and 'false' otherwise.
+ */
+bool qmp_rsp_is_err(QDict *rsp);
+
+/**
+ * qmp_expect_error_and_unref:
+ * @rsp: QMP response to check for error
+ * @class: an error class
+ *
+ * Assert the response has the given error class and discard @rsp.
+ */
+void qmp_expect_error_and_unref(QDict *rsp, const char *class);
+
+#endif /* LIBQMP_H_ */
diff --git a/tests/qtest/libqtest.h b/tests/qtest/libqtest.h
index 552667f17e37..4ab0cad3266d 100644
--- a/tests/qtest/libqtest.h
+++ b/tests/qtest/libqtest.h
@@ -19,6 +19,7 @@
 
 #include "qapi/qmp/qobject.h"
 #include "qapi/qmp/qdict.h"
+#include "libqmp.h"
 
 typedef struct QTestState QTestState;
 
@@ -690,16 +691,6 @@ void qtest_remove_abrt_handler(void *data);
 void qtest_qmp_assert_success(QTestState *qts, const char *fmt, ...)
     G_GNUC_PRINTF(2, 3);
 
-QDict *qmp_fd_receive(int fd);
-void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
-                      const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
-void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
-void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
-void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
-void qmp_fd_vsend_raw(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
-QDict *qmp_fdv(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
-QDict *qmp_fd(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
-
 /**
  * qtest_cb_for_every_machine:
  * @cb: Pointer to the callback function
@@ -771,24 +762,6 @@ void qtest_qmp_add_client(QTestState *qts, const char *protocol, int fd);
  */
 void qtest_qmp_device_del(QTestState *qts, const char *id);
 
-/**
- * qmp_rsp_is_err:
- * @rsp: QMP response to check for error
- *
- * Test @rsp for error and discard @rsp.
- * Returns 'true' if there is error in @rsp and 'false' otherwise.
- */
-bool qmp_rsp_is_err(QDict *rsp);
-
-/**
- * qmp_expect_error_and_unref:
- * @rsp: QMP response to check for error
- * @class: an error class
- *
- * Assert the response has the given error class and discard @rsp.
- */
-void qmp_expect_error_and_unref(QDict *rsp, const char *class);
-
 /**
  * qtest_probe_child:
  * @s: QTestState instance to operate on.
diff --git a/tests/qtest/libqmp.c b/tests/qtest/libqmp.c
new file mode 100644
index 000000000000..0358b8313dc4
--- /dev/null
+++ b/tests/qtest/libqmp.c
@@ -0,0 +1,233 @@
+/*
+ * QTest
+ *
+ * Copyright IBM, Corp. 2012
+ * Copyright Red Hat, Inc. 2012
+ * Copyright SUSE LINUX Products GmbH 2013
+ *
+ * Authors:
+ *  Anthony Liguori   <aliguori@us.ibm.com>
+ *  Paolo Bonzini     <pbonzini@redhat.com>
+ *  Andreas Färber    <afaerber@suse.de>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+
+#include "libqmp.h"
+
+#include "qapi/error.h"
+#include "qapi/qmp/json-parser.h"
+#include "qapi/qmp/qjson.h"
+
+#define SOCKET_MAX_FDS 16
+
+typedef struct {
+    JSONMessageParser parser;
+    QDict *response;
+} QMPResponseParser;
+
+static void socket_send(int fd, const char *buf, size_t size)
+{
+    size_t res = qemu_write_full(fd, buf, size);
+
+    assert(res == size);
+}
+
+static void qmp_response(void *opaque, QObject *obj, Error *err)
+{
+    QMPResponseParser *qmp = opaque;
+
+    assert(!obj != !err);
+
+    if (err) {
+        error_prepend(&err, "QMP JSON response parsing failed: ");
+        error_report_err(err);
+        abort();
+    }
+
+    g_assert(!qmp->response);
+    qmp->response = qobject_to(QDict, obj);
+    g_assert(qmp->response);
+}
+
+QDict *qmp_fd_receive(int fd)
+{
+    QMPResponseParser qmp;
+    bool log = getenv("QTEST_LOG") != NULL;
+
+    qmp.response = NULL;
+    json_message_parser_init(&qmp.parser, qmp_response, &qmp, NULL);
+    while (!qmp.response) {
+        ssize_t len;
+        char c;
+
+        len = read(fd, &c, 1);
+        if (len == -1 && errno == EINTR) {
+            continue;
+        }
+
+        if (len == -1 || len == 0) {
+            fprintf(stderr, "Broken pipe\n");
+            abort();
+        }
+
+        if (log) {
+            g_assert(write(2, &c, 1) == 1);
+        }
+        json_message_parser_feed(&qmp.parser, &c, 1);
+    }
+    if (log) {
+        g_assert(write(2, "\n", 1) == 1);
+    }
+    json_message_parser_destroy(&qmp.parser);
+
+    return qmp.response;
+}
+
+/* Sends a message and file descriptors to the socket.
+ * It's needed for qmp-commands like getfd/add-fd */
+static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
+                            const char *buf, size_t buf_size)
+{
+    ssize_t ret;
+    struct msghdr msg = { 0 };
+    char control[CMSG_SPACE(sizeof(int) * SOCKET_MAX_FDS)] = { 0 };
+    size_t fdsize = sizeof(int) * fds_num;
+    struct cmsghdr *cmsg;
+    struct iovec iov = { .iov_base = (char *)buf, .iov_len = buf_size };
+
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+
+    if (fds && fds_num > 0) {
+        g_assert_cmpuint(fds_num, <, SOCKET_MAX_FDS);
+
+        msg.msg_control = control;
+        msg.msg_controllen = CMSG_SPACE(fdsize);
+
+        cmsg = CMSG_FIRSTHDR(&msg);
+        cmsg->cmsg_len = CMSG_LEN(fdsize);
+        cmsg->cmsg_level = SOL_SOCKET;
+        cmsg->cmsg_type = SCM_RIGHTS;
+        memcpy(CMSG_DATA(cmsg), fds, fdsize);
+    }
+
+    do {
+        ret = sendmsg(socket_fd, &msg, 0);
+    } while (ret < 0 && errno == EINTR);
+    g_assert_cmpint(ret, >, 0);
+}
+
+/**
+ * Allow users to send a message without waiting for the reply,
+ * in the case that they choose to discard all replies up until
+ * a particular EVENT is received.
+ */
+void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
+                      const char *fmt, va_list ap)
+{
+    QObject *qobj;
+
+    /* Going through qobject ensures we escape strings properly */
+    qobj = qobject_from_vjsonf_nofail(fmt, ap);
+
+    /* No need to send anything for an empty QObject.  */
+    if (qobj) {
+        int log = getenv("QTEST_LOG") != NULL;
+        GString *str = qobject_to_json(qobj);
+
+        /*
+         * BUG: QMP doesn't react to input until it sees a newline, an
+         * object, or an array.  Work-around: give it a newline.
+         */
+        g_string_append_c(str, '\n');
+
+        if (log) {
+            fprintf(stderr, "%s", str->str);
+        }
+        /* Send QMP request */
+        if (fds && fds_num > 0) {
+            socket_send_fds(fd, fds, fds_num, str->str, str->len);
+        } else {
+            socket_send(fd, str->str, str->len);
+        }
+
+        g_string_free(str, true);
+        qobject_unref(qobj);
+    }
+}
+
+void qmp_fd_vsend(int fd, const char *fmt, va_list ap)
+{
+    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
+}
+
+
+QDict *qmp_fdv(int fd, const char *fmt, va_list ap)
+{
+    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
+
+    return qmp_fd_receive(fd);
+}
+
+QDict *qmp_fd(int fd, const char *fmt, ...)
+{
+    va_list ap;
+    QDict *response;
+
+    va_start(ap, fmt);
+    response = qmp_fdv(fd, fmt, ap);
+    va_end(ap);
+    return response;
+}
+
+void qmp_fd_send(int fd, const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    qmp_fd_vsend(fd, fmt, ap);
+    va_end(ap);
+}
+
+void qmp_fd_vsend_raw(int fd, const char *fmt, va_list ap)
+{
+    bool log = getenv("QTEST_LOG") != NULL;
+    char *str = g_strdup_vprintf(fmt, ap);
+
+    if (log) {
+        fprintf(stderr, "%s", str);
+    }
+    socket_send(fd, str, strlen(str));
+    g_free(str);
+}
+
+void qmp_fd_send_raw(int fd, const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    qmp_fd_vsend_raw(fd, fmt, ap);
+    va_end(ap);
+}
+
+bool qmp_rsp_is_err(QDict *rsp)
+{
+    QDict *error = qdict_get_qdict(rsp, "error");
+    qobject_unref(rsp);
+    return !!error;
+}
+
+void qmp_expect_error_and_unref(QDict *rsp, const char *class)
+{
+    QDict *error = qdict_get_qdict(rsp, "error");
+
+    g_assert_cmpstr(qdict_get_try_str(error, "class"), ==, class);
+    g_assert_nonnull(qdict_get_try_str(error, "desc"));
+    g_assert(!qdict_haskey(rsp, "return"));
+
+    qobject_unref(rsp);
+}
diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
index aaf5ab0ca533..228357f1eade 100644
--- a/tests/qtest/libqtest.c
+++ b/tests/qtest/libqtest.c
@@ -21,10 +21,9 @@
 #include <sys/un.h>
 
 #include "libqtest.h"
+#include "libqmp.h"
 #include "qemu/ctype.h"
 #include "qemu/cutils.h"
-#include "qapi/error.h"
-#include "qapi/qmp/json-parser.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qjson.h"
 #include "qapi/qmp/qlist.h"
@@ -32,8 +31,6 @@
 
 #define MAX_IRQ 256
 #define SOCKET_TIMEOUT 50
-#define SOCKET_MAX_FDS 16
-
 
 typedef void (*QTestSendFn)(QTestState *s, const char *buf);
 typedef void (*ExternalSendFn)(void *s, const char *buf);
@@ -440,40 +437,6 @@ static void G_GNUC_PRINTF(2, 3) qtest_sendf(QTestState *s, const char *fmt, ...)
     g_free(str);
 }
 
-/* Sends a message and file descriptors to the socket.
- * It's needed for qmp-commands like getfd/add-fd */
-static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
-                            const char *buf, size_t buf_size)
-{
-    ssize_t ret;
-    struct msghdr msg = { 0 };
-    char control[CMSG_SPACE(sizeof(int) * SOCKET_MAX_FDS)] = { 0 };
-    size_t fdsize = sizeof(int) * fds_num;
-    struct cmsghdr *cmsg;
-    struct iovec iov = { .iov_base = (char *)buf, .iov_len = buf_size };
-
-    msg.msg_iov = &iov;
-    msg.msg_iovlen = 1;
-
-    if (fds && fds_num > 0) {
-        g_assert_cmpuint(fds_num, <, SOCKET_MAX_FDS);
-
-        msg.msg_control = control;
-        msg.msg_controllen = CMSG_SPACE(fdsize);
-
-        cmsg = CMSG_FIRSTHDR(&msg);
-        cmsg->cmsg_len = CMSG_LEN(fdsize);
-        cmsg->cmsg_level = SOL_SOCKET;
-        cmsg->cmsg_type = SCM_RIGHTS;
-        memcpy(CMSG_DATA(cmsg), fds, fdsize);
-    }
-
-    do {
-        ret = sendmsg(socket_fd, &msg, 0);
-    } while (ret < 0 && errno == EINTR);
-    g_assert_cmpint(ret, >, 0);
-}
-
 static GString *qtest_client_socket_recv_line(QTestState *s)
 {
     GString *line;
@@ -568,62 +531,6 @@ static int qtest_query_target_endianness(QTestState *s)
     return big_endian;
 }
 
-typedef struct {
-    JSONMessageParser parser;
-    QDict *response;
-} QMPResponseParser;
-
-static void qmp_response(void *opaque, QObject *obj, Error *err)
-{
-    QMPResponseParser *qmp = opaque;
-
-    assert(!obj != !err);
-
-    if (err) {
-        error_prepend(&err, "QMP JSON response parsing failed: ");
-        error_report_err(err);
-        abort();
-    }
-
-    g_assert(!qmp->response);
-    qmp->response = qobject_to(QDict, obj);
-    g_assert(qmp->response);
-}
-
-QDict *qmp_fd_receive(int fd)
-{
-    QMPResponseParser qmp;
-    bool log = getenv("QTEST_LOG") != NULL;
-
-    qmp.response = NULL;
-    json_message_parser_init(&qmp.parser, qmp_response, &qmp, NULL);
-    while (!qmp.response) {
-        ssize_t len;
-        char c;
-
-        len = read(fd, &c, 1);
-        if (len == -1 && errno == EINTR) {
-            continue;
-        }
-
-        if (len == -1 || len == 0) {
-            fprintf(stderr, "Broken pipe\n");
-            abort();
-        }
-
-        if (log) {
-            g_assert(write(2, &c, 1) == 1);
-        }
-        json_message_parser_feed(&qmp.parser, &c, 1);
-    }
-    if (log) {
-        g_assert(write(2, "\n", 1) == 1);
-    }
-    json_message_parser_destroy(&qmp.parser);
-
-    return qmp.response;
-}
-
 QDict *qtest_qmp_receive(QTestState *s)
 {
     while (true) {
@@ -664,50 +571,6 @@ int qtest_socket_server(const char *socket_path)
     return sock;
 }
 
-/**
- * Allow users to send a message without waiting for the reply,
- * in the case that they choose to discard all replies up until
- * a particular EVENT is received.
- */
-void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
-                      const char *fmt, va_list ap)
-{
-    QObject *qobj;
-
-    /* Going through qobject ensures we escape strings properly */
-    qobj = qobject_from_vjsonf_nofail(fmt, ap);
-
-    /* No need to send anything for an empty QObject.  */
-    if (qobj) {
-        int log = getenv("QTEST_LOG") != NULL;
-        GString *str = qobject_to_json(qobj);
-
-        /*
-         * BUG: QMP doesn't react to input until it sees a newline, an
-         * object, or an array.  Work-around: give it a newline.
-         */
-        g_string_append_c(str, '\n');
-
-        if (log) {
-            fprintf(stderr, "%s", str->str);
-        }
-        /* Send QMP request */
-        if (fds && fds_num > 0) {
-            socket_send_fds(fd, fds, fds_num, str->str, str->len);
-        } else {
-            socket_send(fd, str->str, str->len);
-        }
-
-        g_string_free(str, true);
-        qobject_unref(qobj);
-    }
-}
-
-void qmp_fd_vsend(int fd, const char *fmt, va_list ap)
-{
-    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
-}
-
 void qtest_qmp_vsend_fds(QTestState *s, int *fds, size_t fds_num,
                          const char *fmt, va_list ap)
 {
@@ -719,13 +582,6 @@ void qtest_qmp_vsend(QTestState *s, const char *fmt, va_list ap)
     qmp_fd_vsend_fds(s->qmp_fd, NULL, 0, fmt, ap);
 }
 
-QDict *qmp_fdv(int fd, const char *fmt, va_list ap)
-{
-    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
-
-    return qmp_fd_receive(fd);
-}
-
 QDict *qtest_vqmp_fds(QTestState *s, int *fds, size_t fds_num,
                       const char *fmt, va_list ap)
 {
@@ -743,26 +599,6 @@ QDict *qtest_vqmp(QTestState *s, const char *fmt, va_list ap)
     return qtest_qmp_receive(s);
 }
 
-QDict *qmp_fd(int fd, const char *fmt, ...)
-{
-    va_list ap;
-    QDict *response;
-
-    va_start(ap, fmt);
-    response = qmp_fdv(fd, fmt, ap);
-    va_end(ap);
-    return response;
-}
-
-void qmp_fd_send(int fd, const char *fmt, ...)
-{
-    va_list ap;
-
-    va_start(ap, fmt);
-    qmp_fd_vsend(fd, fmt, ap);
-    va_end(ap);
-}
-
 QDict *qtest_qmp_fds(QTestState *s, int *fds, size_t fds_num,
                      const char *fmt, ...)
 {
@@ -795,27 +631,6 @@ void qtest_qmp_send(QTestState *s, const char *fmt, ...)
     va_end(ap);
 }
 
-void qmp_fd_vsend_raw(int fd, const char *fmt, va_list ap)
-{
-    bool log = getenv("QTEST_LOG") != NULL;
-    char *str = g_strdup_vprintf(fmt, ap);
-
-    if (log) {
-        fprintf(stderr, "%s", str);
-    }
-    socket_send(fd, str, strlen(str));
-    g_free(str);
-}
-
-void qmp_fd_send_raw(int fd, const char *fmt, ...)
-{
-    va_list ap;
-
-    va_start(ap, fmt);
-    qmp_fd_vsend_raw(fd, fmt, ap);
-    va_end(ap);
-}
-
 void qtest_qmp_send_raw(QTestState *s, const char *fmt, ...)
 {
     va_list ap;
@@ -1539,24 +1354,6 @@ void qtest_qmp_device_del(QTestState *qts, const char *id)
     qtest_qmp_eventwait(qts, "DEVICE_DELETED");
 }
 
-bool qmp_rsp_is_err(QDict *rsp)
-{
-    QDict *error = qdict_get_qdict(rsp, "error");
-    qobject_unref(rsp);
-    return !!error;
-}
-
-void qmp_expect_error_and_unref(QDict *rsp, const char *class)
-{
-    QDict *error = qdict_get_qdict(rsp, "error");
-
-    g_assert_cmpstr(qdict_get_try_str(error, "class"), ==, class);
-    g_assert_nonnull(qdict_get_try_str(error, "desc"));
-    g_assert(!qdict_haskey(rsp, "return"));
-
-    qobject_unref(rsp);
-}
-
 static void qtest_client_set_tx_handler(QTestState *s,
                     QTestSendFn send)
 {
diff --git a/tests/qtest/libqos/meson.build b/tests/qtest/libqos/meson.build
index e988d1579172..9f292339f9cf 100644
--- a/tests/qtest/libqos/meson.build
+++ b/tests/qtest/libqos/meson.build
@@ -1,4 +1,7 @@
-libqos_srcs = files('../libqtest.c',
+libqos_srcs = files(
+        '../libqtest.c',
+        '../libqmp.c',
+
         'qgraph.c',
         'qos_external.c',
         'pci.c',
diff --git a/tests/unit/meson.build b/tests/unit/meson.build
index ab01e00f12cf..264f2bc0c81d 100644
--- a/tests/unit/meson.build
+++ b/tests/unit/meson.build
@@ -154,7 +154,7 @@ if have_system
 endif
 
 if have_ga and targetos == 'linux'
-  tests += {'test-qga': ['../qtest/libqtest.c']}
+  tests += {'test-qga': ['../qtest/libqmp.c']}
   test_deps += {'test-qga': qga}
 endif
 
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 06/10] Replace qemu_pipe() with g_unix_open_pipe()
  2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
                   ` (4 preceding siblings ...)
  2022-04-22  8:36 ` [PATCH 05/10] libqtest: split QMP part in libqmp marcandre.lureau
@ 2022-04-22  8:36 ` marcandre.lureau
  2022-04-22  8:59   ` Daniel P. Berrangé
  2022-04-22  8:36 ` [PATCH 07/10] tests: make libqmp buildable for win32 marcandre.lureau
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel
  Cc: Marc-André Lureau, Vladimir Sementsov-Ogievskiy, Eric Blake,
	open list:Network Block Dev...,
	Paolo Bonzini

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

GLib g_unix_open_pipe() is essentially like qemu_pipe(), available since
2.30.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/qemu/osdep.h        |  4 ----
 qemu-nbd.c                  |  5 +++--
 util/event_notifier-posix.c |  2 +-
 util/oslib-posix.c          | 22 ----------------------
 4 files changed, 4 insertions(+), 29 deletions(-)

diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index 220b44f710e5..241d249d7e5b 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -547,10 +547,6 @@ static inline void qemu_timersub(const struct timeval *val1,
 ssize_t qemu_write_full(int fd, const void *buf, size_t count)
     G_GNUC_WARN_UNUSED_RESULT;
 
-#ifndef _WIN32
-int qemu_pipe(int pipefd[2]);
-#endif
-
 void qemu_set_cloexec(int fd);
 
 void fips_set_state(bool requested);
diff --git a/qemu-nbd.c b/qemu-nbd.c
index 397ffa64d768..a184c6b9992f 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -902,13 +902,14 @@ int main(int argc, char **argv)
 
     if ((device && !verbose) || fork_process) {
 #ifndef WIN32
+        g_autoptr(GError) err = NULL;
         int stderr_fd[2];
         pid_t pid;
         int ret;
 
-        if (qemu_pipe(stderr_fd) < 0) {
+        if (!g_unix_open_pipe(stderr_fd, FD_CLOEXEC, &err)) {
             error_report("Error setting up communication pipe: %s",
-                         strerror(errno));
+                         err->message);
             exit(EXIT_FAILURE);
         }
 
diff --git a/util/event_notifier-posix.c b/util/event_notifier-posix.c
index 8dc30c51414d..df21c2583e1f 100644
--- a/util/event_notifier-posix.c
+++ b/util/event_notifier-posix.c
@@ -49,7 +49,7 @@ int event_notifier_init(EventNotifier *e, int active)
         if (errno != ENOSYS) {
             return -errno;
         }
-        if (qemu_pipe(fds) < 0) {
+        if (!g_unix_open_pipe(fds, FD_CLOEXEC, NULL)) {
             return -errno;
         }
         ret = fcntl_setfl(fds[0], O_NONBLOCK);
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 03d97741562c..543c9944b083 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -274,28 +274,6 @@ void qemu_set_cloexec(int fd)
     assert(f != -1);
 }
 
-/*
- * Creates a pipe with FD_CLOEXEC set on both file descriptors
- */
-int qemu_pipe(int pipefd[2])
-{
-    int ret;
-
-#ifdef CONFIG_PIPE2
-    ret = pipe2(pipefd, O_CLOEXEC);
-    if (ret != -1 || errno != ENOSYS) {
-        return ret;
-    }
-#endif
-    ret = pipe(pipefd);
-    if (ret == 0) {
-        qemu_set_cloexec(pipefd[0]);
-        qemu_set_cloexec(pipefd[1]);
-    }
-
-    return ret;
-}
-
 char *
 qemu_get_local_state_dir(void)
 {
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 07/10] tests: make libqmp buildable for win32
  2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
                   ` (5 preceding siblings ...)
  2022-04-22  8:36 ` [PATCH 06/10] Replace qemu_pipe() with g_unix_open_pipe() marcandre.lureau
@ 2022-04-22  8:36 ` marcandre.lureau
  2022-04-22  8:36 ` [PATCH 08/10] Use g_unix_set_fd_nonblocking() marcandre.lureau
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel
  Cc: Laurent Vivier, Marc-André Lureau, Thomas Huth, Paolo Bonzini

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

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/qtest/libqmp.h |  2 ++
 tests/qtest/libqmp.c | 37 +++++++++++++++++++++++++++++++------
 2 files changed, 33 insertions(+), 6 deletions(-)

diff --git a/tests/qtest/libqmp.h b/tests/qtest/libqmp.h
index 94aa97328a17..772f18b73ba3 100644
--- a/tests/qtest/libqmp.h
+++ b/tests/qtest/libqmp.h
@@ -20,8 +20,10 @@
 #include "qapi/qmp/qdict.h"
 
 QDict *qmp_fd_receive(int fd);
+#ifndef G_OS_WIN32
 void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
                       const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
+#endif
 void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
 void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
 void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
diff --git a/tests/qtest/libqmp.c b/tests/qtest/libqmp.c
index 0358b8313dc4..5f451ebee796 100644
--- a/tests/qtest/libqmp.c
+++ b/tests/qtest/libqmp.c
@@ -15,9 +15,15 @@
  */
 
 #include "qemu/osdep.h"
-
 #include "libqmp.h"
 
+#include <unistd.h>
+#include <stdlib.h>
+#ifndef G_OS_WIN32
+#include <sys/socket.h>
+#endif
+
+#include "qemu/cutils.h"
 #include "qapi/error.h"
 #include "qapi/qmp/json-parser.h"
 #include "qapi/qmp/qjson.h"
@@ -87,6 +93,7 @@ QDict *qmp_fd_receive(int fd)
     return qmp.response;
 }
 
+#ifndef G_OS_WIN32
 /* Sends a message and file descriptors to the socket.
  * It's needed for qmp-commands like getfd/add-fd */
 static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
@@ -120,17 +127,23 @@ static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
     } while (ret < 0 && errno == EINTR);
     g_assert_cmpint(ret, >, 0);
 }
+#endif
 
 /**
  * Allow users to send a message without waiting for the reply,
  * in the case that they choose to discard all replies up until
  * a particular EVENT is received.
  */
-void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
-                      const char *fmt, va_list ap)
+static void
+_qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
+                  const char *fmt, va_list ap)
 {
     QObject *qobj;
 
+#ifdef G_OS_WIN32
+    assert(fds_num == 0);
+#endif
+
     /* Going through qobject ensures we escape strings properly */
     qobj = qobject_from_vjsonf_nofail(fmt, ap);
 
@@ -148,10 +161,14 @@ void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
         if (log) {
             fprintf(stderr, "%s", str->str);
         }
+
+#ifndef G_OS_WIN32
         /* Send QMP request */
         if (fds && fds_num > 0) {
             socket_send_fds(fd, fds, fds_num, str->str, str->len);
-        } else {
+        } else
+#endif
+        {
             socket_send(fd, str->str, str->len);
         }
 
@@ -160,15 +177,23 @@ void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
     }
 }
 
+#ifndef G_OS_WIN32
+void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
+                      const char *fmt, va_list ap)
+{
+    _qmp_fd_vsend_fds(fd, fds, fds_num, fmt, ap);
+}
+#endif
+
 void qmp_fd_vsend(int fd, const char *fmt, va_list ap)
 {
-    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
+    _qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
 }
 
 
 QDict *qmp_fdv(int fd, const char *fmt, va_list ap)
 {
-    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
+    _qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
 
     return qmp_fd_receive(fd);
 }
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 08/10] Use g_unix_set_fd_nonblocking()
  2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
                   ` (6 preceding siblings ...)
  2022-04-22  8:36 ` [PATCH 07/10] tests: make libqmp buildable for win32 marcandre.lureau
@ 2022-04-22  8:36 ` marcandre.lureau
  2022-04-22  8:56   ` Daniel P. Berrangé
  2022-04-22 14:24   ` Eric Blake
  2022-04-22  8:36 ` [PATCH 09/10] block: move fcntl_setfl() marcandre.lureau
  2022-04-22  8:36 ` [PATCH 10/10] util/win32: simplify qemu_get_local_state_dir() marcandre.lureau
  9 siblings, 2 replies; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Paolo Bonzini

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

API available since glib 2.30. It also preserves errno.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 hw/misc/ivshmem.c           | 2 +-
 util/event_notifier-posix.c | 6 ++----
 util/main-loop.c            | 2 +-
 3 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index e7c0099bdaf6..a1cd3dcc51cf 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -537,7 +537,7 @@ static void process_msg_connect(IVShmemState *s, uint16_t posn, int fd,
 
     IVSHMEM_DPRINTF("eventfds[%d][%d] = %d\n", posn, vector, fd);
     event_notifier_init_fd(&peer->eventfds[vector], fd);
-    fcntl_setfl(fd, O_NONBLOCK); /* msix/irqfd poll non block */
+    g_unix_set_fd_nonblocking(fd, TRUE, NULL); /* msix/irqfd poll non block */
 
     if (posn == s->vm_id) {
         setup_interrupt(s, vector, errp);
diff --git a/util/event_notifier-posix.c b/util/event_notifier-posix.c
index df21c2583e1f..21d40b2f1154 100644
--- a/util/event_notifier-posix.c
+++ b/util/event_notifier-posix.c
@@ -52,13 +52,11 @@ int event_notifier_init(EventNotifier *e, int active)
         if (!g_unix_open_pipe(fds, FD_CLOEXEC, NULL)) {
             return -errno;
         }
-        ret = fcntl_setfl(fds[0], O_NONBLOCK);
-        if (ret < 0) {
+        if (!g_unix_set_fd_nonblocking(fds[0], TRUE, NULL)) {
             ret = -errno;
             goto fail;
         }
-        ret = fcntl_setfl(fds[1], O_NONBLOCK);
-        if (ret < 0) {
+        if (!g_unix_set_fd_nonblocking(fds[1], TRUE, NULL)) {
             ret = -errno;
             goto fail;
         }
diff --git a/util/main-loop.c b/util/main-loop.c
index b7b0ce4ca087..60ac77602bbb 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -114,7 +114,7 @@ static int qemu_signal_init(Error **errp)
         return -errno;
     }
 
-    fcntl_setfl(sigfd, O_NONBLOCK);
+    g_unix_set_fd_nonblocking(sigfd, TRUE, NULL);
 
     qemu_set_fd_handler(sigfd, sigfd_handler, NULL, (void *)(intptr_t)sigfd);
 
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 09/10] block: move fcntl_setfl()
  2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
                   ` (7 preceding siblings ...)
  2022-04-22  8:36 ` [PATCH 08/10] Use g_unix_set_fd_nonblocking() marcandre.lureau
@ 2022-04-22  8:36 ` marcandre.lureau
  2022-04-22 12:20   ` Richard Henderson
  2022-04-22  8:36 ` [PATCH 10/10] util/win32: simplify qemu_get_local_state_dir() marcandre.lureau
  9 siblings, 1 reply; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Marc-André Lureau, Hanna Reitz, open list:raw,
	Paolo Bonzini

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

It is only used by block/file-posix.c, move it there.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/sysemu/os-posix.h |  2 --
 block/file-posix.c        | 15 +++++++++++++++
 util/oslib-posix.c        | 15 ---------------
 3 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h
index adbe19d3e468..58de7c994d85 100644
--- a/include/sysemu/os-posix.h
+++ b/include/sysemu/os-posix.h
@@ -96,8 +96,6 @@ static inline void qemu_funlockfile(FILE *f)
     funlockfile(f);
 }
 
-int fcntl_setfl(int fd, int flag);
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/block/file-posix.c b/block/file-posix.c
index bfd9b2111143..1164ca9e1c6d 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -1022,6 +1022,21 @@ static int raw_handle_perm_lock(BlockDriverState *bs,
     return ret;
 }
 
+/* Sets a specific flag */
+static int fcntl_setfl(int fd, int flag)
+{
+    int flags;
+
+    flags = fcntl(fd, F_GETFL);
+    if (flags == -1)
+        return -errno;
+
+    if (fcntl(fd, F_SETFL, flags | flag) == -1)
+        return -errno;
+
+    return 0;
+}
+
 static int raw_reconfigure_getfd(BlockDriverState *bs, int flags,
                                  int *open_flags, uint64_t perm, bool force_dup,
                                  Error **errp)
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 543c9944b083..1c231087408f 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -794,21 +794,6 @@ size_t qemu_get_host_physmem(void)
     return 0;
 }
 
-/* Sets a specific flag */
-int fcntl_setfl(int fd, int flag)
-{
-    int flags;
-
-    flags = fcntl(fd, F_GETFL);
-    if (flags == -1) {
-        return -errno;
-    }
-    if (fcntl(fd, F_SETFL, flags | flag) == -1) {
-        return -errno;
-    }
-    return 0;
-}
-
 int qemu_msync(void *addr, size_t length, int fd)
 {
     size_t align_mask = ~(qemu_real_host_page_size() - 1);
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 10/10] util/win32: simplify qemu_get_local_state_dir()
  2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
                   ` (8 preceding siblings ...)
  2022-04-22  8:36 ` [PATCH 09/10] block: move fcntl_setfl() marcandre.lureau
@ 2022-04-22  8:36 ` marcandre.lureau
  9 siblings, 0 replies; 20+ messages in thread
From: marcandre.lureau @ 2022-04-22  8:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Stefan Weil

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

SHGetFolderPath() is a deprecated API:
https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpatha

It is a wrapper for SHGetKnownFolderPath() and CSIDL_COMMON_PATH is
mapped to FOLDERID_ProgramData:
https://docs.microsoft.com/en-us/windows/win32/shell/csidl

g_get_system_data_dirs() is a suitable replacement, as it will have
FOLDERID_ProgramData in the returned list. However, it follows the XDG
Base Directory Specification, if `XDG_DATA_DIRS` is defined, it will be
returned instead.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 util/oslib-win32.c | 17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index 9483c4c1d5de..8f8523693c02 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -40,9 +40,6 @@
 #include "qemu/error-report.h"
 #include <malloc.h>
 
-/* this must come after including "trace.h" */
-#include <shlobj.h>
-
 static int get_allocation_granularity(void)
 {
     SYSTEM_INFO system_info;
@@ -237,17 +234,11 @@ int qemu_get_thread_id(void)
 char *
 qemu_get_local_state_dir(void)
 {
-    HRESULT result;
-    char base_path[MAX_PATH+1] = "";
+    const char * const *data_dirs = g_get_system_data_dirs();
 
-    result = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL,
-                             /* SHGFP_TYPE_CURRENT */ 0, base_path);
-    if (result != S_OK) {
-        /* misconfigured environment */
-        g_critical("CSIDL_COMMON_APPDATA unavailable: %ld", (long)result);
-        abort();
-    }
-    return g_strdup(base_path);
+    g_assert(data_dirs && data_dirs[0]);
+
+    return g_strdup(data_dirs[0]);
 }
 
 void qemu_set_tty_echo(int fd, bool echo)
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH 08/10] Use g_unix_set_fd_nonblocking()
  2022-04-22  8:36 ` [PATCH 08/10] Use g_unix_set_fd_nonblocking() marcandre.lureau
@ 2022-04-22  8:56   ` Daniel P. Berrangé
  2022-04-22  9:06     ` Marc-André Lureau
  2022-04-22 14:24   ` Eric Blake
  1 sibling, 1 reply; 20+ messages in thread
From: Daniel P. Berrangé @ 2022-04-22  8:56 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: Paolo Bonzini, qemu-devel

On Fri, Apr 22, 2022 at 12:36:37PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> API available since glib 2.30. It also preserves errno.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  hw/misc/ivshmem.c           | 2 +-
>  util/event_notifier-posix.c | 6 ++----
>  util/main-loop.c            | 2 +-
>  3 files changed, 4 insertions(+), 6 deletions(-)

There are many more places in QEMU setting O_NONBLOCK.

$ git grep '\bO_NONBLOCK' | grep -i setfl
hw/misc/ivshmem.c:    fcntl_setfl(fd, O_NONBLOCK); /* msix/irqfd poll non block */
hw/rdma/rdma_backend.c:    rc = fcntl(backend_dev->channel->fd, F_SETFL, flags | O_NONBLOCK);
linux-user/syscall.c:        if (fcntl(fd, F_SETFL, O_NONBLOCK | flags) == -1) {
net/tap-bsd.c:    fcntl(fd, F_SETFL, O_NONBLOCK);
net/tap-bsd.c:    fcntl(fd, F_SETFL, O_NONBLOCK);
net/tap-linux.c:    fcntl(fd, F_SETFL, O_NONBLOCK);
net/tap-solaris.c:    fcntl(fd, F_SETFL, O_NONBLOCK);
tests/qtest/fuzz/virtio_net_fuzz.c:    fcntl(sockfds[0], F_SETFL, O_NONBLOCK);
tests/tcg/multiarch/linux-test.c:    chk_error(fcntl(fds[0], F_SETFL, O_NONBLOCK));
tests/tcg/multiarch/linux-test.c:    chk_error(fcntl(fds[1], F_SETFL, O_NONBLOCK));
tests/unit/test-iov.c:       fcntl(sv[1], F_SETFL, O_RDWR|O_NONBLOCK);
tests/unit/test-iov.c:       fcntl(sv[0], F_SETFL, O_RDWR|O_NONBLOCK);
util/event_notifier-posix.c:        ret = fcntl_setfl(fds[0], O_NONBLOCK);
util/event_notifier-posix.c:        ret = fcntl_setfl(fds[1], O_NONBLOCK);
util/main-loop.c:    fcntl_setfl(sigfd, O_NONBLOCK);
util/oslib-posix.c:    f = fcntl(fd, F_SETFL, f & ~O_NONBLOCK);
util/oslib-posix.c:    if (fcntl(fd, F_SETFL, f | O_NONBLOCK) == -1) {


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 06/10] Replace qemu_pipe() with g_unix_open_pipe()
  2022-04-22  8:36 ` [PATCH 06/10] Replace qemu_pipe() with g_unix_open_pipe() marcandre.lureau
@ 2022-04-22  8:59   ` Daniel P. Berrangé
  2022-04-22  9:09     ` Marc-André Lureau
  0 siblings, 1 reply; 20+ messages in thread
From: Daniel P. Berrangé @ 2022-04-22  8:59 UTC (permalink / raw)
  To: marcandre.lureau
  Cc: Paolo Bonzini, Vladimir Sementsov-Ogievskiy, Eric Blake,
	qemu-devel, open list:Network Block Dev...

On Fri, Apr 22, 2022 at 12:36:35PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> GLib g_unix_open_pipe() is essentially like qemu_pipe(), available since
> 2.30.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  include/qemu/osdep.h        |  4 ----
>  qemu-nbd.c                  |  5 +++--
>  util/event_notifier-posix.c |  2 +-
>  util/oslib-posix.c          | 22 ----------------------
>  4 files changed, 4 insertions(+), 29 deletions(-)

There are a bunch of places still using 'pipe'instead of 'qemu_pipe'
that should be switched also.


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 08/10] Use g_unix_set_fd_nonblocking()
  2022-04-22  8:56   ` Daniel P. Berrangé
@ 2022-04-22  9:06     ` Marc-André Lureau
  0 siblings, 0 replies; 20+ messages in thread
From: Marc-André Lureau @ 2022-04-22  9:06 UTC (permalink / raw)
  To: Daniel P. Berrangé; +Cc: Paolo Bonzini, QEMU

[-- Attachment #1: Type: text/plain, Size: 2459 bytes --]

Hi

On Fri, Apr 22, 2022 at 12:57 PM Daniel P. Berrangé <berrange@redhat.com>
wrote:

> On Fri, Apr 22, 2022 at 12:36:37PM +0400, marcandre.lureau@redhat.com
> wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > API available since glib 2.30. It also preserves errno.
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  hw/misc/ivshmem.c           | 2 +-
> >  util/event_notifier-posix.c | 6 ++----
> >  util/main-loop.c            | 2 +-
> >  3 files changed, 4 insertions(+), 6 deletions(-)
>
> There are many more places in QEMU setting O_NONBLOCK.
>
> $ git grep '\bO_NONBLOCK' | grep -i setfl
> hw/misc/ivshmem.c:    fcntl_setfl(fd, O_NONBLOCK); /* msix/irqfd poll non
> block */
> hw/rdma/rdma_backend.c:    rc = fcntl(backend_dev->channel->fd, F_SETFL,
> flags | O_NONBLOCK);
> linux-user/syscall.c:        if (fcntl(fd, F_SETFL, O_NONBLOCK | flags) ==
> -1) {
> net/tap-bsd.c:    fcntl(fd, F_SETFL, O_NONBLOCK);
> net/tap-bsd.c:    fcntl(fd, F_SETFL, O_NONBLOCK);
> net/tap-linux.c:    fcntl(fd, F_SETFL, O_NONBLOCK);
> net/tap-solaris.c:    fcntl(fd, F_SETFL, O_NONBLOCK);
> tests/qtest/fuzz/virtio_net_fuzz.c:    fcntl(sockfds[0], F_SETFL,
> O_NONBLOCK);
> tests/tcg/multiarch/linux-test.c:    chk_error(fcntl(fds[0], F_SETFL,
> O_NONBLOCK));
> tests/tcg/multiarch/linux-test.c:    chk_error(fcntl(fds[1], F_SETFL,
> O_NONBLOCK));
> tests/unit/test-iov.c:       fcntl(sv[1], F_SETFL, O_RDWR|O_NONBLOCK);
> tests/unit/test-iov.c:       fcntl(sv[0], F_SETFL, O_RDWR|O_NONBLOCK);
> util/event_notifier-posix.c:        ret = fcntl_setfl(fds[0], O_NONBLOCK);
> util/event_notifier-posix.c:        ret = fcntl_setfl(fds[1], O_NONBLOCK);
> util/main-loop.c:    fcntl_setfl(sigfd, O_NONBLOCK);
> util/oslib-posix.c:    f = fcntl(fd, F_SETFL, f & ~O_NONBLOCK);
> util/oslib-posix.c:    if (fcntl(fd, F_SETFL, f | O_NONBLOCK) == -1) {
>

As you may have guessed, the goal was to move fcntl_setfl() to block/, as
done in next patch.

It looks like other callers generally do more than just setting nonblock,
they need more careful review.


>
> With regards,
> Daniel
> --
> |: https://berrange.com      -o-
> https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-
> https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-
> https://www.instagram.com/dberrange :|
>
>
>

-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 3885 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 06/10] Replace qemu_pipe() with g_unix_open_pipe()
  2022-04-22  8:59   ` Daniel P. Berrangé
@ 2022-04-22  9:09     ` Marc-André Lureau
  0 siblings, 0 replies; 20+ messages in thread
From: Marc-André Lureau @ 2022-04-22  9:09 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: Paolo Bonzini, Vladimir Sementsov-Ogievskiy, Eric Blake,
	qemu-devel, open list:Network Block Dev...

Hi

On Fri, Apr 22, 2022 at 1:00 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Fri, Apr 22, 2022 at 12:36:35PM +0400, marcandre.lureau@redhat.com wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > GLib g_unix_open_pipe() is essentially like qemu_pipe(), available since
> > 2.30.
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  include/qemu/osdep.h        |  4 ----
> >  qemu-nbd.c                  |  5 +++--
> >  util/event_notifier-posix.c |  2 +-
> >  util/oslib-posix.c          | 22 ----------------------
> >  4 files changed, 4 insertions(+), 29 deletions(-)
>
> There are a bunch of places still using 'pipe'instead of 'qemu_pipe'
> that should be switched also.
>

Ok, that would be a different patch though. Can you ack this one for now?

>
> With regards,
> Daniel
> --
> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
>



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 09/10] block: move fcntl_setfl()
  2022-04-22  8:36 ` [PATCH 09/10] block: move fcntl_setfl() marcandre.lureau
@ 2022-04-22 12:20   ` Richard Henderson
  0 siblings, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2022-04-22 12:20 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Kevin Wolf, Paolo Bonzini, Hanna Reitz, open list:raw

On 4/22/22 01:36, marcandre.lureau@redhat.com wrote:
> +/* Sets a specific flag */
> +static int fcntl_setfl(int fd, int flag)
> +{
> +    int flags;
> +
> +    flags = fcntl(fd, F_GETFL);
> +    if (flags == -1)
> +        return -errno;
> +
> +    if (fcntl(fd, F_SETFL, flags | flag) == -1)
> +        return -errno;
> +
> +    return 0;
> +}
> +
>   static int raw_reconfigure_getfd(BlockDriverState *bs, int flags,
>                                    int *open_flags, uint64_t perm, bool force_dup,
>                                    Error **errp)
> diff --git a/util/oslib-posix.c b/util/oslib-posix.c
> index 543c9944b083..1c231087408f 100644
> --- a/util/oslib-posix.c
> +++ b/util/oslib-posix.c
> @@ -794,21 +794,6 @@ size_t qemu_get_host_physmem(void)
>       return 0;
>   }
>   
> -/* Sets a specific flag */
> -int fcntl_setfl(int fd, int flag)
> -{
> -    int flags;
> -
> -    flags = fcntl(fd, F_GETFL);
> -    if (flags == -1) {
> -        return -errno;
> -    }
> -    if (fcntl(fd, F_SETFL, flags | flag) == -1) {
> -        return -errno;
> -    }
> -    return 0;
> -}

Lost braces in the move.

r~


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 08/10] Use g_unix_set_fd_nonblocking()
  2022-04-22  8:36 ` [PATCH 08/10] Use g_unix_set_fd_nonblocking() marcandre.lureau
  2022-04-22  8:56   ` Daniel P. Berrangé
@ 2022-04-22 14:24   ` Eric Blake
  2022-04-22 14:27     ` Marc-André Lureau
  1 sibling, 1 reply; 20+ messages in thread
From: Eric Blake @ 2022-04-22 14:24 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: Paolo Bonzini, qemu-devel

On Fri, Apr 22, 2022 at 12:36:37PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> API available since glib 2.30. It also preserves errno.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  hw/misc/ivshmem.c           | 2 +-
>  util/event_notifier-posix.c | 6 ++----
>  util/main-loop.c            | 2 +-
>  3 files changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
> index e7c0099bdaf6..a1cd3dcc51cf 100644
> --- a/hw/misc/ivshmem.c
> +++ b/hw/misc/ivshmem.c
> @@ -537,7 +537,7 @@ static void process_msg_connect(IVShmemState *s, uint16_t posn, int fd,
>  
>      IVSHMEM_DPRINTF("eventfds[%d][%d] = %d\n", posn, vector, fd);
>      event_notifier_init_fd(&peer->eventfds[vector], fd);
> -    fcntl_setfl(fd, O_NONBLOCK); /* msix/irqfd poll non block */
> +    g_unix_set_fd_nonblocking(fd, TRUE, NULL); /* msix/irqfd poll non block */

Does glib require us to use their non-standard TRUE, or can we merely
pass true and rely on C promotion rules to make the code look nicer?

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 08/10] Use g_unix_set_fd_nonblocking()
  2022-04-22 14:24   ` Eric Blake
@ 2022-04-22 14:27     ` Marc-André Lureau
  0 siblings, 0 replies; 20+ messages in thread
From: Marc-André Lureau @ 2022-04-22 14:27 UTC (permalink / raw)
  To: Eric Blake; +Cc: Paolo Bonzini, QEMU

[-- Attachment #1: Type: text/plain, Size: 1366 bytes --]

Hi

On Fri, Apr 22, 2022 at 6:25 PM Eric Blake <eblake@redhat.com> wrote:

> On Fri, Apr 22, 2022 at 12:36:37PM +0400, marcandre.lureau@redhat.com
> wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > API available since glib 2.30. It also preserves errno.
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  hw/misc/ivshmem.c           | 2 +-
> >  util/event_notifier-posix.c | 6 ++----
> >  util/main-loop.c            | 2 +-
> >  3 files changed, 4 insertions(+), 6 deletions(-)
> >
> > diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
> > index e7c0099bdaf6..a1cd3dcc51cf 100644
> > --- a/hw/misc/ivshmem.c
> > +++ b/hw/misc/ivshmem.c
> > @@ -537,7 +537,7 @@ static void process_msg_connect(IVShmemState *s,
> uint16_t posn, int fd,
> >
> >      IVSHMEM_DPRINTF("eventfds[%d][%d] = %d\n", posn, vector, fd);
> >      event_notifier_init_fd(&peer->eventfds[vector], fd);
> > -    fcntl_setfl(fd, O_NONBLOCK); /* msix/irqfd poll non block */
> > +    g_unix_set_fd_nonblocking(fd, TRUE, NULL); /* msix/irqfd poll non
> block */
>
> Does glib require us to use their non-standard TRUE, or can we merely
> pass true and rely on C promotion rules to make the code look nicer?
>
>
No, type promotion is fine fortunately. Will change it to "true".


-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 2126 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 04/10] tests: move libqtest.h back under qtest/
  2022-04-22  8:36 ` [PATCH 04/10] tests: move libqtest.h back under qtest/ marcandre.lureau
@ 2022-04-25 19:32   ` Thomas Huth
  0 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-04-25 19:32 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Fam Zheng, Peter Maydell, Dmitry Fleytman, Michael S. Tsirkin,
	Bin Meng, Li Zhijian, Havard Skinnemoen, Klaus Jensen, Su Hang,
	Gerd Hoffmann, Zhang Chen, Ani Sinha, Hannes Reinecke,
	Vikram Garhwal, open list:IDE, Juan Quintela,
	Daniel Henrique Barboza, Qiuhao Li, Joel Stanley, Laurent Vivier,
	Amit Shah, Michael Roth, Greg Kurz, Dr. David Alan Gilbert,
	Darren Kenny, Bandan Das, open list:ARM TCG CPUs,
	Cédric Le Goater, Stefan Hajnoczi, Paolo Bonzini,
	Keith Busch, John Snow, David Gibson, Francisco Iglesias,
	Alexander Bulekov, Andrew Jeffery, Markus Armbruster,
	Stefan Berger, Philippe Mathieu-Daudé,
	Coiby Xu, Tyrone Ting, open list:sPAPR (pseries),
	Igor Mammedov

On 22/04/2022 10.36, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Since commit a2ce7dbd917 ("meson: convert tests/qtest to meson"),
> libqtest.h is under libqos/ directory, while libqtest.c is still in
> qtest/. Move back to its original location to avoid mixing with libqos/.
> 
> Suggested-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>   docs/devel/qtest.rst                             | 2 +-
>   tests/qtest/acpi-utils.h                         | 2 +-
>   tests/qtest/boot-sector.h                        | 2 +-
>   tests/qtest/fuzz/fuzz.h                          | 2 +-
>   tests/qtest/libqos/fw_cfg.h                      | 2 +-
>   tests/qtest/libqos/i2c.h                         | 2 +-
>   tests/qtest/libqos/libqos.h                      | 2 +-
>   tests/qtest/libqos/malloc.h                      | 2 +-
>   tests/qtest/libqos/pci.h                         | 2 +-
>   tests/qtest/libqos/sdhci-cmd.h                   | 2 +-
>   tests/qtest/libqtest-single.h                    | 2 +-
>   tests/qtest/{libqos => }/libqtest.h              | 0
>   tests/qtest/migration-helpers.h                  | 2 +-
>   tests/qtest/tpm-emu.h                            | 2 +-
>   tests/qtest/ac97-test.c                          | 2 +-
>   tests/qtest/ahci-test.c                          | 2 +-
>   tests/qtest/am53c974-test.c                      | 2 +-
>   tests/qtest/arm-cpu-features.c                   | 2 +-
>   tests/qtest/aspeed_hace-test.c                   | 2 +-
>   tests/qtest/boot-order-test.c                    | 2 +-
>   tests/qtest/boot-sector.c                        | 2 +-
>   tests/qtest/boot-serial-test.c                   | 2 +-
>   tests/qtest/cdrom-test.c                         | 2 +-
>   tests/qtest/dbus-display-test.c                  | 2 +-
>   tests/qtest/dbus-vmstate-test.c                  | 2 +-
>   tests/qtest/device-introspect-test.c             | 2 +-
>   tests/qtest/device-plug-test.c                   | 2 +-
>   tests/qtest/drive_del-test.c                     | 2 +-
>   tests/qtest/ds1338-test.c                        | 2 +-
>   tests/qtest/e1000-test.c                         | 2 +-
>   tests/qtest/eepro100-test.c                      | 2 +-
>   tests/qtest/endianness-test.c                    | 2 +-
>   tests/qtest/erst-test.c                          | 2 +-
>   tests/qtest/es1370-test.c                        | 2 +-
>   tests/qtest/fuzz-e1000e-test.c                   | 2 +-
>   tests/qtest/fuzz-lsi53c895a-test.c               | 2 +-
>   tests/qtest/fuzz-megasas-test.c                  | 2 +-
>   tests/qtest/fuzz-sb16-test.c                     | 2 +-
>   tests/qtest/fuzz-sdcard-test.c                   | 2 +-
>   tests/qtest/fuzz-virtio-scsi-test.c              | 2 +-
>   tests/qtest/fuzz-xlnx-dp-test.c                  | 2 +-
>   tests/qtest/fuzz/fuzz.c                          | 2 +-
>   tests/qtest/fuzz/generic_fuzz.c                  | 2 +-
>   tests/qtest/fuzz/i440fx_fuzz.c                   | 2 +-
>   tests/qtest/fuzz/qos_fuzz.c                      | 2 +-
>   tests/qtest/fuzz/virtio_blk_fuzz.c               | 2 +-
>   tests/qtest/fuzz/virtio_net_fuzz.c               | 2 +-
>   tests/qtest/fuzz/virtio_scsi_fuzz.c              | 2 +-
>   tests/qtest/fw_cfg-test.c                        | 2 +-
>   tests/qtest/hd-geo-test.c                        | 2 +-
>   tests/qtest/hexloader-test.c                     | 2 +-
>   tests/qtest/ide-test.c                           | 2 +-
>   tests/qtest/ipoctal232-test.c                    | 2 +-
>   tests/qtest/ivshmem-test.c                       | 2 +-
>   tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c | 2 +-
>   tests/qtest/libqos/ahci.c                        | 2 +-
>   tests/qtest/libqos/arm-imx25-pdk-machine.c       | 2 +-
>   tests/qtest/libqos/arm-n800-machine.c            | 2 +-
>   tests/qtest/libqos/arm-raspi2-machine.c          | 2 +-
>   tests/qtest/libqos/arm-sabrelite-machine.c       | 2 +-
>   tests/qtest/libqos/arm-smdkc210-machine.c        | 2 +-
>   tests/qtest/libqos/arm-virt-machine.c            | 2 +-
>   tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c  | 2 +-
>   tests/qtest/libqos/e1000e.c                      | 2 +-
>   tests/qtest/libqos/fw_cfg.c                      | 2 +-
>   tests/qtest/libqos/i2c-imx.c                     | 2 +-
>   tests/qtest/libqos/i2c-omap.c                    | 2 +-
>   tests/qtest/libqos/i2c.c                         | 2 +-
>   tests/qtest/libqos/libqos.c                      | 2 +-
>   tests/qtest/libqos/pci-pc.c                      | 2 +-
>   tests/qtest/libqos/pci-spapr.c                   | 2 +-
>   tests/qtest/libqos/ppc64_pseries-machine.c       | 2 +-
>   tests/qtest/libqos/qgraph.c                      | 2 +-
>   tests/qtest/libqos/qos_external.c                | 2 +-
>   tests/qtest/libqos/rtas.c                        | 2 +-
>   tests/qtest/libqos/sdhci-cmd.c                   | 2 +-
>   tests/qtest/libqos/sdhci.c                       | 2 +-
>   tests/qtest/libqos/tpci200.c                     | 2 +-
>   tests/qtest/libqos/usb.c                         | 2 +-
>   tests/qtest/libqos/vhost-user-blk.c              | 2 +-
>   tests/qtest/libqos/virtio-9p.c                   | 2 +-
>   tests/qtest/libqos/virtio-balloon.c              | 2 +-
>   tests/qtest/libqos/virtio-blk.c                  | 2 +-
>   tests/qtest/libqos/virtio-iommu.c                | 2 +-
>   tests/qtest/libqos/virtio-mmio.c                 | 2 +-
>   tests/qtest/libqos/virtio-net.c                  | 2 +-
>   tests/qtest/libqos/virtio-pci.c                  | 2 +-
>   tests/qtest/libqos/virtio-rng.c                  | 2 +-
>   tests/qtest/libqos/virtio-scsi.c                 | 2 +-
>   tests/qtest/libqos/virtio-serial.c               | 2 +-
>   tests/qtest/libqos/virtio.c                      | 2 +-
>   tests/qtest/libqos/x86_64_pc-machine.c           | 2 +-
>   tests/qtest/libqtest.c                           | 2 +-
>   tests/qtest/lpc-ich9-test.c                      | 2 +-
>   tests/qtest/m48t59-test.c                        | 2 +-
>   tests/qtest/machine-none-test.c                  | 2 +-
>   tests/qtest/megasas-test.c                       | 2 +-
>   tests/qtest/microbit-test.c                      | 2 +-
>   tests/qtest/migration-test.c                     | 2 +-
>   tests/qtest/modules-test.c                       | 2 +-
>   tests/qtest/ne2000-test.c                        | 2 +-
>   tests/qtest/npcm7xx_adc-test.c                   | 2 +-
>   tests/qtest/npcm7xx_pwm-test.c                   | 2 +-
>   tests/qtest/npcm7xx_sdhci-test.c                 | 2 +-
>   tests/qtest/npcm7xx_smbus-test.c                 | 2 +-
>   tests/qtest/npcm7xx_watchdog_timer-test.c        | 2 +-
>   tests/qtest/numa-test.c                          | 2 +-
>   tests/qtest/nvme-test.c                          | 2 +-
>   tests/qtest/pca9552-test.c                       | 2 +-
>   tests/qtest/pci-test.c                           | 2 +-
>   tests/qtest/pcnet-test.c                         | 2 +-
>   tests/qtest/pflash-cfi02-test.c                  | 2 +-
>   tests/qtest/pnv-xscom-test.c                     | 2 +-
>   tests/qtest/prom-env-test.c                      | 2 +-
>   tests/qtest/pvpanic-pci-test.c                   | 2 +-
>   tests/qtest/pvpanic-test.c                       | 2 +-
>   tests/qtest/pxe-test.c                           | 2 +-
>   tests/qtest/q35-test.c                           | 2 +-
>   tests/qtest/qmp-cmd-test.c                       | 2 +-
>   tests/qtest/qmp-test.c                           | 2 +-
>   tests/qtest/qom-test.c                           | 2 +-
>   tests/qtest/rtas-test.c                          | 2 +-
>   tests/qtest/sdhci-test.c                         | 2 +-
>   tests/qtest/spapr-phb-test.c                     | 2 +-
>   tests/qtest/tco-test.c                           | 2 +-
>   tests/qtest/test-filter-mirror.c                 | 2 +-
>   tests/qtest/test-filter-redirector.c             | 2 +-
>   tests/qtest/test-hmp.c                           | 2 +-
>   tests/qtest/tpm-crb-swtpm-test.c                 | 2 +-
>   tests/qtest/tpm-tis-device-swtpm-test.c          | 2 +-
>   tests/qtest/tpm-tis-swtpm-test.c                 | 2 +-
>   tests/qtest/tpm-util.c                           | 2 +-
>   tests/qtest/tulip-test.c                         | 2 +-
>   tests/qtest/virtio-net-failover.c                | 2 +-
>   tests/qtest/virtio-rng-test.c                    | 2 +-
>   tests/qtest/virtio-test.c                        | 2 +-
>   tests/qtest/vmgenid-test.c                       | 2 +-
>   tests/qtest/vmxnet3-test.c                       | 2 +-
>   tests/qtest/wdt_ib700-test.c                     | 2 +-
>   tests/qtest/xlnx-can-test.c                      | 2 +-
>   tests/unit/test-qga.c                            | 2 +-
>   scripts/oss-fuzz/output_reproducer.py            | 2 +-
>   142 files changed, 141 insertions(+), 141 deletions(-)
>   rename tests/qtest/{libqos => }/libqtest.h (100%)
> 
> diff --git a/docs/devel/qtest.rst b/docs/devel/qtest.rst
> index add293d39700..0455aa06ab28 100644
> --- a/docs/devel/qtest.rst
> +++ b/docs/devel/qtest.rst
> @@ -88,4 +88,4 @@ QTest Protocol
>   libqtest API reference
>   ----------------------
>   
> -.. kernel-doc:: tests/qtest/libqos/libqtest.h
> +.. kernel-doc:: tests/qtest/libqtest.h
> diff --git a/tests/qtest/acpi-utils.h b/tests/qtest/acpi-utils.h
> index 261784d25189..0c8678068931 100644
> --- a/tests/qtest/acpi-utils.h
> +++ b/tests/qtest/acpi-utils.h
> @@ -13,7 +13,7 @@
>   #ifndef TEST_ACPI_UTILS_H
>   #define TEST_ACPI_UTILS_H
>   
> -#include "libqos/libqtest.h"
> +#include "libqtest.h"
>   
>   /* DSDT and SSDTs format */
>   typedef struct {
> diff --git a/tests/qtest/boot-sector.h b/tests/qtest/boot-sector.h
> index b339fdee4c84..6ee6bb4d97f4 100644
> --- a/tests/qtest/boot-sector.h
> +++ b/tests/qtest/boot-sector.h
> @@ -14,7 +14,7 @@
>   #ifndef TEST_BOOT_SECTOR_H
>   #define TEST_BOOT_SECTOR_H
>   
> -#include "libqos/libqtest.h"
> +#include "libqtest.h"
>   
>   /* Create boot disk file. fname must be a suitable string for mkstemp() */
>   int boot_sector_init(char *fname);
> diff --git a/tests/qtest/fuzz/fuzz.h b/tests/qtest/fuzz/fuzz.h
> index 3a8570e84c79..c5f0b7227a10 100644
> --- a/tests/qtest/fuzz/fuzz.h
> +++ b/tests/qtest/fuzz/fuzz.h
> @@ -17,7 +17,7 @@
>   #include "qemu/units.h"
>   #include "qapi/error.h"
>   
> -#include "tests/qtest/libqos/libqtest.h"
> +#include "tests/qtest/libqtest.h"
>   
>   /**
>    * A libfuzzer fuzzing target
> diff --git a/tests/qtest/libqos/fw_cfg.h b/tests/qtest/libqos/fw_cfg.h
> index c6a7cf8cf053..b0456a15df19 100644
> --- a/tests/qtest/libqos/fw_cfg.h
> +++ b/tests/qtest/libqos/fw_cfg.h
> @@ -13,7 +13,7 @@
>   #ifndef LIBQOS_FW_CFG_H
>   #define LIBQOS_FW_CFG_H
>   
> -#include "libqtest.h"
> +#include "../libqtest.h"

Thank you very much for tackling this!

For the files in the tests/qtest/libqos/ directory, I think it should also 
be fine if you keep the #include "libqtest.h" there since the tests/qtest/ 
folder is in the header search path already?

Anyway, I'm also fine with spelling out the "../" explicitly.

Reviewed-by: Thomas Huth <thuth@redhat.com>



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 05/10] libqtest: split QMP part in libqmp
  2022-04-22  8:36 ` [PATCH 05/10] libqtest: split QMP part in libqmp marcandre.lureau
@ 2022-04-25 19:39   ` Thomas Huth
  0 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-04-25 19:39 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel; +Cc: Laurent Vivier, Paolo Bonzini

On 22/04/2022 10.36, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> This will help moving QAPI/QMP in a common subproject.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>   tests/qtest/libqmp.h           |  50 +++++++
>   tests/qtest/libqtest.h         |  29 +---
>   tests/qtest/libqmp.c           | 233 +++++++++++++++++++++++++++++++++
>   tests/qtest/libqtest.c         | 205 +----------------------------
>   tests/qtest/libqos/meson.build |   5 +-
>   tests/unit/meson.build         |   2 +-
>   6 files changed, 290 insertions(+), 234 deletions(-)
>   create mode 100644 tests/qtest/libqmp.h
>   create mode 100644 tests/qtest/libqmp.c
[...]
> diff --git a/tests/qtest/libqos/meson.build b/tests/qtest/libqos/meson.build
> index e988d1579172..9f292339f9cf 100644
> --- a/tests/qtest/libqos/meson.build
> +++ b/tests/qtest/libqos/meson.build
> @@ -1,4 +1,7 @@
> -libqos_srcs = files('../libqtest.c',
> +libqos_srcs = files(
> +        '../libqtest.c',
> +        '../libqmp.c',

I just realized that we link libqos to each and every qtest, though we 
should only link it against the qos-test :-/

Anyway, that's not related to your patch and we can fix that later, so for 
this patch here:

Acked-by: Thomas Huth <thuth@redhat.com>



^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2022-04-25 19:41 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-22  8:36 [PATCH 00/10] Misc cleanups marcandre.lureau
2022-04-22  8:36 ` [PATCH 01/10] Use QEMU_SANITIZE_THREAD marcandre.lureau
2022-04-22  8:36 ` [PATCH 02/10] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
2022-04-22  8:36 ` [PATCH 03/10] include: move qemu_*_exec_dir() to cutils marcandre.lureau
2022-04-22  8:36 ` [PATCH 04/10] tests: move libqtest.h back under qtest/ marcandre.lureau
2022-04-25 19:32   ` Thomas Huth
2022-04-22  8:36 ` [PATCH 05/10] libqtest: split QMP part in libqmp marcandre.lureau
2022-04-25 19:39   ` Thomas Huth
2022-04-22  8:36 ` [PATCH 06/10] Replace qemu_pipe() with g_unix_open_pipe() marcandre.lureau
2022-04-22  8:59   ` Daniel P. Berrangé
2022-04-22  9:09     ` Marc-André Lureau
2022-04-22  8:36 ` [PATCH 07/10] tests: make libqmp buildable for win32 marcandre.lureau
2022-04-22  8:36 ` [PATCH 08/10] Use g_unix_set_fd_nonblocking() marcandre.lureau
2022-04-22  8:56   ` Daniel P. Berrangé
2022-04-22  9:06     ` Marc-André Lureau
2022-04-22 14:24   ` Eric Blake
2022-04-22 14:27     ` Marc-André Lureau
2022-04-22  8:36 ` [PATCH 09/10] block: move fcntl_setfl() marcandre.lureau
2022-04-22 12:20   ` Richard Henderson
2022-04-22  8:36 ` [PATCH 10/10] util/win32: simplify qemu_get_local_state_dir() marcandre.lureau

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.