[PATCH v2 07/26] tests: make libqmp buildable for win32

marcandre.lureau@redhat.com posted 26 patches 3 years, 5 months ago
Maintainers: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Jason Wang <jasowang@redhat.com>, Eric Blake <eblake@redhat.com>, Vladimir Sementsov-Ogievskiy <v.sementsov-og@mail.ru>, Michael Roth <michael.roth@amd.com>, Alexander Bulekov <alxndr@bu.edu>, Bandan Das <bsd@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, Thomas Huth <thuth@redhat.com>, Darren Kenny <darren.kenny@oracle.com>, Qiuhao Li <Qiuhao.Li@outlook.com>, Laurent Vivier <lvivier@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <ani@anisinha.ca>, John Snow <jsnow@redhat.com>, Fam Zheng <fam@euphon.net>, Peter Maydell <peter.maydell@linaro.org>, "Cédric Le Goater" <clg@kaod.org>, Andrew Jeffery <andrew@aj.id.au>, Joel Stanley <joel@jms.id.au>, Dmitry Fleytman <dmitry.fleytman@gmail.com>, Hannes Reinecke <hare@suse.com>, "Philippe Mathieu-Daudé" <f4bug@amsat.org>, Bin Meng <bin.meng@windriver.com>, Su Hang <suhang16@mails.ucas.ac.cn>, Daniel Henrique Barboza <danielhb413@gmail.com>, David Gibson <david@gibson.dropbear.id.au>, Greg Kurz <groug@kaod.org>, Coiby Xu <Coiby.Xu@gmail.com>, Juan Quintela <quintela@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Havard Skinnemoen <hskinnemoen@google.com>, Tyrone Ting <kfting@nuvoton.com>, Keith Busch <kbusch@kernel.org>, Klaus Jensen <its@irrelevant.dk>, Markus Armbruster <armbru@redhat.com>, Zhang Chen <chen.zhang@intel.com>, Li Zhijian <lizhijian@fujitsu.com>, Stefan Berger <stefanb@linux.vnet.ibm.com>, Amit Shah <amit@kernel.org>, Vikram Garhwal <fnu.vikram@xilinx.com>, Francisco Iglesias <francisco.iglesias@xilinx.com>, Stefan Weil <sw@weilnetz.de>
There is a newer version of this series
[PATCH v2 07/26] tests: make libqmp buildable for win32
Posted by marcandre.lureau@redhat.com 3 years, 5 months ago
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


Re: [PATCH v2 07/26] tests: make libqmp buildable for win32
Posted by Thomas Huth 3 years, 5 months ago
On 26/04/2022 11.26, marcandre.lureau@redhat.com wrote:
> 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>

unistd.h and stdlib.h should have been added by osdep.h already, so please 
remove these two lines.

  Thomas


Re: [PATCH v2 07/26] tests: make libqmp buildable for win32
Posted by Marc-André Lureau 3 years, 5 months ago
Hi

On Tue, Apr 26, 2022 at 1:32 PM Thomas Huth <thuth@redhat.com> wrote:
>
> On 26/04/2022 11.26, marcandre.lureau@redhat.com wrote:
> > 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>
>
> unistd.h and stdlib.h should have been added by osdep.h already, so please
> remove these two lines.

Right  (it will be part of the follow-up series, moving it to a
standalone project). Ack with that?
Re: [PATCH v2 07/26] tests: make libqmp buildable for win32
Posted by Thomas Huth 3 years, 5 months ago
On 26/04/2022 12.25, Marc-André Lureau wrote:
> Hi
> 
> On Tue, Apr 26, 2022 at 1:32 PM Thomas Huth <thuth@redhat.com> wrote:
>>
>> On 26/04/2022 11.26, marcandre.lureau@redhat.com wrote:
>>> 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>
>>
>> unistd.h and stdlib.h should have been added by osdep.h already, so please
>> remove these two lines.
> 
> Right  (it will be part of the follow-up series, moving it to a
> standalone project). Ack with that?

Sure, the two headers should then be added in the patch where you remove 
osdep.h.

  Thomas