qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v6 11/21] libqtest: make bufwrite rely on the TransportOps


From: Alexander Bulekov
Subject: Re: [PATCH v6 11/21] libqtest: make bufwrite rely on the TransportOps
Date: Wed, 15 Jan 2020 15:38:43 -0500
User-agent: NeoMutt/20180716

On 200103 1745, Philippe Mathieu-Daudé wrote:
> On 11/29/19 10:34 PM, Oleinik, Alexander wrote:
> > When using qtest "in-process" communication, qtest_sendf directly calls
> > a function in the server (qtest.c). Previously, bufwrite used
> > socket_send, which bypasses the TransportOps enabling the call into
> > qtest.c. This change replaces the socket_send calls with ops->send,
> > maintaining the benefits of the direct socket_send call, while adding
> > support for in-process qtest calls.
> > 
> > Signed-off-by: Alexander Bulekov <address@hidden>
> > ---
> >   tests/libqtest.c | 4 ++--
> >   tests/libqtest.h | 3 +++
> >   2 files changed, 5 insertions(+), 2 deletions(-)
> > 
> > diff --git a/tests/libqtest.c b/tests/libqtest.c
> > index ac4b6ab5f0..a7df92319a 100644
> > --- a/tests/libqtest.c
> > +++ b/tests/libqtest.c
> > @@ -1080,8 +1080,8 @@ void qtest_bufwrite(QTestState *s, uint64_t addr, 
> > const void *data, size_t size)
> >       bdata = g_base64_encode(data, size);
> >       qtest_sendf(s, "b64write 0x%" PRIx64 " 0x%zx ", addr, size);
> > -    socket_send(s->fd, bdata, strlen(bdata));
> > -    socket_send(s->fd, "\n", 1);
> > +    s->ops.send(s, bdata);
> > +    s->ops.send(s, "\n");
> 
> Ah, is this the send_line() from patch #5?
> 
> Now it makes sense to move the send("\n") there and call it send_line().
> 
> Moving the send(\n) we get this in patch #5:
> 
>  static void qtest_client_socket_send_line(QTestState *s,
>                                            const char *bufline)
>  {
>      socket_send(s->fd, bufline, strlen(bufline));
>      socket_send(s->fd, "\n", 1);
>  }

Would this also involve changing all of the
qtest_{clock_step,in,out,read,write...} functions to remove the '\n'
from the calls to qtest_sendf? Not that it matters much, but it also
seems to double the number of syscalls needed to send each qtest
command.

> >       qtest_rsp(s, 0);
> >       g_free(bdata);
> >   }
> > diff --git a/tests/libqtest.h b/tests/libqtest.h
> > index c9e21e05b3..0e9b8908ef 100644
> > --- a/tests/libqtest.h
> > +++ b/tests/libqtest.h
> > @@ -729,4 +729,7 @@ bool qtest_probe_child(QTestState *s);
> >    */
> >   void qtest_set_expected_status(QTestState *s, int status);
> > +QTestState *qtest_inproc_init(bool log, const char* arch,
> > +                    void (*send)(void*, const char*));
> > +void qtest_client_inproc_recv(void *opaque, const char *str);
> >   #endif
> > 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]