qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH for-3.2 06/41] slirp: add a callback for qemu_chr_fe


From: Marc-André Lureau
Subject: [Qemu-devel] [PATCH for-3.2 06/41] slirp: add a callback for qemu_chr_fe_write_all()
Date: Wed, 14 Nov 2018 16:36:08 +0400

Replace strong dependency on QEMU.

Signed-off-by: Marc-André Lureau <address@hidden>
---
 slirp/libslirp.h | 1 +
 net/slirp.c      | 6 ++++++
 slirp/slirp.c    | 2 +-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/slirp/libslirp.h b/slirp/libslirp.h
index 36d5fb9163..16ced2aa0f 100644
--- a/slirp/libslirp.h
+++ b/slirp/libslirp.h
@@ -7,6 +7,7 @@ typedef struct Slirp Slirp;
 
 typedef struct SlirpCb {
     void (*output)(void *opaque, const uint8_t *pkt, int pkt_len);
+    int (*chr_write_all)(void *chr, const void *buf, size_t len);
 } SlirpCb;
 
 
diff --git a/net/slirp.c b/net/slirp.c
index 233f66b1ef..5c1f676487 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -140,8 +140,14 @@ static NetClientInfo net_slirp_info = {
     .cleanup = net_slirp_cleanup,
 };
 
+static int net_slirp_chr_write_all(void *chr, const void *buf, size_t len)
+{
+    return qemu_chr_fe_write_all(chr, buf, len);
+}
+
 static SlirpCb slirp_cb = {
     .output = net_slirp_output,
+    .chr_write_all = net_slirp_chr_write_all,
 };
 
 static int net_slirp_init(NetClientState *peer, const char *model,
diff --git a/slirp/slirp.c b/slirp/slirp.c
index 7213915bf3..4e809e5d7f 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -1099,7 +1099,7 @@ ssize_t slirp_send(struct socket *so, const void *buf, 
size_t len, int flags)
     if (so->s == -1 && so->chardev) {
         /* XXX this blocks entire thread. Rewrite to use
          * qemu_chr_fe_write and background I/O callbacks */
-        qemu_chr_fe_write_all(so->chardev, buf, len);
+        so->slirp->cb->chr_write_all(so->chardev, buf, len);
         return len;
     }
 
-- 
2.19.1.708.g4ede3d42df




reply via email to

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