[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
- Re: [Qemu-devel] [PATCH for-3.2 03/41] slirp: simplify fork_exec(), (continued)
Re: [Qemu-devel] [PATCH for-3.2 03/41] slirp: simplify fork_exec(), Samuel Thibault, 2018/11/19
[Qemu-devel] [PATCH for-3.2 04/41] slirp: remove unused M_TRAILINGSPACE, Marc-André Lureau, 2018/11/14
[Qemu-devel] [PATCH for-3.2 05/41] slirp: use a callback structure to interface with qemu, Marc-André Lureau, 2018/11/14
[Qemu-devel] [PATCH for-3.2 06/41] slirp: add a callback for qemu_chr_fe_write_all(),
Marc-André Lureau <=
[Qemu-devel] [PATCH for-3.2 07/41] slirp: add clock_get_ns() callback, Marc-André Lureau, 2018/11/14
[Qemu-devel] [PATCH for-3.2 09/41] slirp: add a set_nonblock() callback, Marc-André Lureau, 2018/11/14
[Qemu-devel] [PATCH for-3.2 10/41] slirp: remove PROBE_CONN dead-code, Marc-André Lureau, 2018/11/14