* [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups
@ 2017-05-29 8:45 Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 01/14] char-win: simplify win_chr_read() Marc-André Lureau
` (14 more replies)
0 siblings, 15 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
Hi,
This is the last batch of patches I have pending for chardev for
now. They are mostly windows and headers related, and various small
improvements.
Comments welcome,
Thanks
v2:
- rename skip_free->keep_open, all->write_all
- add a patch moving char devices to chardev/
- patch reordering to remove chardev/char.h includes earlier
- add various r-b tags
Marc-André Lureau (14):
char-win: simplify win_chr_read()
char-win: remove WinChardev.len
char-win: rename win_chr_init/poll win_chr_serial_init/poll
char-win: rename hcom->file
char-win: close file handle except with console
Remove/replace sysemu/char.h inclusion
chardev: move headers to include/chardev
chardev: serial & parallel declaration to own headers
be-hci: use backend functions
char: generalize qemu_chr_write_all()
char: move CharBackend handling in char-fe unit
char: rename functions that are not part of fe
char: make chr_fe_deinit() optionaly delete backend
char: move char devices to chardev/
{chardev => include/chardev}/char-fd.h | 2 +-
include/chardev/char-fe.h | 251 +++++++++++++
{chardev => include/chardev}/char-io.h | 2 +-
{chardev => include/chardev}/char-mux.h | 3 +-
{chardev => include/chardev}/char-parallel.h | 20 +-
{chardev => include/chardev}/char-serial.h | 22 ++
{chardev => include/chardev}/char-win-stdio.h | 0
{chardev => include/chardev}/char-win.h | 14 +-
include/chardev/char.h | 229 ++++++++++++
include/hw/char/bcm2835_aux.h | 2 +-
include/hw/char/cadence_uart.h | 2 +-
include/hw/char/digic-uart.h | 2 +-
include/hw/char/imx_serial.h | 2 +-
include/hw/char/serial.h | 4 +-
include/hw/char/stm32f2xx_usart.h | 2 +-
include/sysemu/char.h | 499 --------------------------
backends/rng-egd.c | 4 +-
{backends => chardev}/baum.c | 2 +-
chardev/char-console.c | 4 +-
chardev/char-fd.c | 6 +-
chardev/char-fe.c | 361 +++++++++++++++++++
chardev/char-file.c | 8 +-
chardev/char-io.c | 2 +-
chardev/char-mux.c | 6 +-
chardev/char-null.c | 2 +-
chardev/char-parallel.c | 6 +-
chardev/char-pipe.c | 16 +-
chardev/char-pty.c | 4 +-
chardev/char-ringbuf.c | 2 +-
chardev/char-serial.c | 8 +-
chardev/char-socket.c | 4 +-
chardev/char-stdio.c | 8 +-
chardev/char-udp.c | 4 +-
chardev/char-win-stdio.c | 4 +-
chardev/char-win.c | 95 ++---
chardev/char.c | 386 +-------------------
{backends => chardev}/msmouse.c | 2 +-
spice-qemu-char.c => chardev/spice.c | 4 +-
{backends => chardev}/testdev.c | 2 +-
{backends => chardev}/wctablet.c | 2 +-
gdbstub.c | 18 +-
hmp.c | 2 +-
hw/arm/bcm2835_peripherals.c | 1 -
hw/arm/fsl-imx25.c | 2 +-
hw/arm/fsl-imx31.c | 2 +-
hw/arm/fsl-imx6.c | 2 +-
hw/arm/omap2.c | 2 +-
hw/arm/pxa2xx.c | 2 +-
hw/arm/strongarm.c | 3 +-
hw/bt/hci-csr.c | 11 +-
hw/char/cadence_uart.c | 3 +-
hw/char/debugcon.c | 2 +-
hw/char/digic-uart.c | 2 +-
hw/char/escc.c | 3 +-
hw/char/etraxfs_ser.c | 2 +-
hw/char/exynos4210_uart.c | 3 +-
hw/char/grlib_apbuart.c | 2 +-
hw/char/imx_serial.c | 1 -
hw/char/ipoctal232.c | 2 +-
hw/char/lm32_juart.c | 2 +-
hw/char/lm32_uart.c | 2 +-
hw/char/mcf_uart.c | 2 +-
hw/char/milkymist-uart.c | 2 +-
hw/char/omap_uart.c | 2 +-
hw/char/parallel.c | 3 +-
hw/char/pl011.c | 2 +-
hw/char/sclpconsole-lm.c | 2 +-
hw/char/sclpconsole.c | 2 +-
hw/char/serial.c | 4 +-
hw/char/sh_serial.c | 2 +-
hw/char/spapr_vty.c | 2 +-
hw/char/terminal3270.c | 2 +-
hw/char/virtio-console.c | 2 +-
hw/char/xen_console.c | 4 +-
hw/char/xilinx_uartlite.c | 2 +-
hw/core/qdev-properties-system.c | 4 +-
hw/core/qdev-properties.c | 2 +-
hw/display/xenfb.c | 1 -
hw/i386/xen/xen-hvm.c | 1 -
hw/ipmi/ipmi_bmc_extern.c | 2 +-
hw/isa/pc87312.c | 2 +-
hw/mips/boston.c | 2 +-
hw/mips/mips_fulong2e.c | 1 -
hw/mips/mips_malta.c | 1 -
hw/misc/ivshmem.c | 2 +-
hw/net/xgmac.c | 1 -
hw/ppc/spapr_events.c | 1 -
hw/ppc/spapr_rtas.c | 1 -
hw/sparc/leon3.c | 1 -
hw/usb/ccid-card-emulated.c | 2 +-
hw/usb/ccid-card-passthru.c | 7 +-
hw/usb/dev-serial.c | 3 +-
hw/usb/redirect.c | 6 +-
hw/virtio/vhost-user.c | 2 +-
hw/xen/xen-common.c | 2 +-
hw/xen/xen_backend.c | 1 -
hw/xtensa/xtfpga.c | 2 +-
monitor.c | 4 +-
net/colo-compare.c | 10 +-
net/filter-mirror.c | 8 +-
net/slirp.c | 2 +-
net/vhost-user.c | 7 +-
qmp.c | 2 +-
qtest.c | 2 +-
replay/replay-char.c | 2 +-
slirp/slirp.c | 2 +-
tests/postcopy-test.c | 2 +-
tests/test-char.c | 24 +-
tests/vhost-user-test.c | 6 +-
ui/console.c | 2 +-
ui/gtk.c | 2 +-
util/event_notifier-posix.c | 1 -
vl.c | 2 +-
MAINTAINERS | 5 +-
Makefile.objs | 4 +-
backends/Makefile.objs | 4 -
backends/trace-events | 10 -
chardev/Makefile.objs | 7 +
chardev/trace-events | 18 +
trace-events | 7 -
120 files changed, 1124 insertions(+), 1156 deletions(-)
rename {chardev => include/chardev}/char-fd.h (98%)
create mode 100644 include/chardev/char-fe.h
rename {chardev => include/chardev}/char-io.h (98%)
rename {chardev => include/chardev}/char-mux.h (97%)
rename {chardev => include/chardev}/char-parallel.h (70%)
rename {chardev => include/chardev}/char-serial.h (75%)
rename {chardev => include/chardev}/char-win-stdio.h (100%)
rename {chardev => include/chardev}/char-win.h (84%)
create mode 100644 include/chardev/char.h
delete mode 100644 include/sysemu/char.h
rename {backends => chardev}/baum.c (99%)
create mode 100644 chardev/char-fe.c
rename {backends => chardev}/msmouse.c (99%)
rename spice-qemu-char.c => chardev/spice.c (99%)
rename {backends => chardev}/testdev.c (99%)
rename {backends => chardev}/wctablet.c (99%)
create mode 100644 chardev/trace-events
--
2.13.0.91.g00982b8dd
^ permalink raw reply [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 01/14] char-win: simplify win_chr_read()
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 02/14] char-win: remove WinChardev.len Marc-André Lureau
` (13 subsequent siblings)
14 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
win_chr_read_poll() is always used before win_chr_read().
We can easily fold win_chr_readfile() too.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
chardev/char-win.h | 2 +-
chardev/char-win.c | 35 +++++++++--------------------------
2 files changed, 10 insertions(+), 27 deletions(-)
diff --git a/chardev/char-win.h b/chardev/char-win.h
index d78a7d7972..73a0e3caef 100644
--- a/chardev/char-win.h
+++ b/chardev/char-win.h
@@ -28,7 +28,7 @@
typedef struct {
Chardev parent;
- int max_size;
+
HANDLE hcom, hrecv, hsend;
OVERLAPPED orecv;
BOOL fpipe;
diff --git a/chardev/char-win.c b/chardev/char-win.c
index e4b6957ded..a46d878ef8 100644
--- a/chardev/char-win.c
+++ b/chardev/char-win.c
@@ -26,14 +26,21 @@
#include "qapi/error.h"
#include "char-win.h"
-static void win_chr_readfile(Chardev *chr)
+static void win_chr_read(Chardev *chr)
{
WinChardev *s = WIN_CHARDEV(chr);
-
+ int max_size = qemu_chr_be_can_write(chr);
int ret, err;
uint8_t buf[CHR_READ_BUF_LEN];
DWORD size;
+ if (s->len > max_size) {
+ s->len = max_size;
+ }
+ if (s->len == 0) {
+ return;
+ }
+
ZeroMemory(&s->orecv, sizeof(s->orecv));
s->orecv.hEvent = s->hrecv;
ret = ReadFile(s->hcom, buf, s->len, &size, &s->orecv);
@@ -49,28 +56,6 @@ static void win_chr_readfile(Chardev *chr)
}
}
-static void win_chr_read(Chardev *chr)
-{
- WinChardev *s = WIN_CHARDEV(chr);
-
- if (s->len > s->max_size) {
- s->len = s->max_size;
- }
- if (s->len == 0) {
- return;
- }
-
- win_chr_readfile(chr);
-}
-
-static int win_chr_read_poll(Chardev *chr)
-{
- WinChardev *s = WIN_CHARDEV(chr);
-
- s->max_size = qemu_chr_be_can_write(chr);
- return s->max_size;
-}
-
static int win_chr_poll(void *opaque)
{
Chardev *chr = CHARDEV(opaque);
@@ -81,7 +66,6 @@ static int win_chr_poll(void *opaque)
ClearCommError(s->hcom, &comerr, &status);
if (status.cbInQue > 0) {
s->len = status.cbInQue;
- win_chr_read_poll(chr);
win_chr_read(chr);
return 1;
}
@@ -163,7 +147,6 @@ int win_chr_pipe_poll(void *opaque)
PeekNamedPipe(s->hcom, NULL, 0, NULL, &size, NULL);
if (size > 0) {
s->len = size;
- win_chr_read_poll(chr);
win_chr_read(chr);
return 1;
}
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 02/14] char-win: remove WinChardev.len
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 01/14] char-win: simplify win_chr_read() Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 03/14] char-win: rename win_chr_init/poll win_chr_serial_init/poll Marc-André Lureau
` (12 subsequent siblings)
14 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
The "len" argument can be passed directly to win_chr_read()
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
chardev/char-win.h | 1 -
chardev/char-win.c | 16 +++++++---------
2 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/chardev/char-win.h b/chardev/char-win.h
index 73a0e3caef..70215e04c2 100644
--- a/chardev/char-win.h
+++ b/chardev/char-win.h
@@ -32,7 +32,6 @@ typedef struct {
HANDLE hcom, hrecv, hsend;
OVERLAPPED orecv;
BOOL fpipe;
- DWORD len;
/* Protected by the Chardev chr_write_lock. */
OVERLAPPED osend;
diff --git a/chardev/char-win.c b/chardev/char-win.c
index a46d878ef8..5e7daeeae1 100644
--- a/chardev/char-win.c
+++ b/chardev/char-win.c
@@ -26,7 +26,7 @@
#include "qapi/error.h"
#include "char-win.h"
-static void win_chr_read(Chardev *chr)
+static void win_chr_read(Chardev *chr, DWORD len)
{
WinChardev *s = WIN_CHARDEV(chr);
int max_size = qemu_chr_be_can_write(chr);
@@ -34,16 +34,16 @@ static void win_chr_read(Chardev *chr)
uint8_t buf[CHR_READ_BUF_LEN];
DWORD size;
- if (s->len > max_size) {
- s->len = max_size;
+ if (len > max_size) {
+ len = max_size;
}
- if (s->len == 0) {
+ if (len == 0) {
return;
}
ZeroMemory(&s->orecv, sizeof(s->orecv));
s->orecv.hEvent = s->hrecv;
- ret = ReadFile(s->hcom, buf, s->len, &size, &s->orecv);
+ ret = ReadFile(s->hcom, buf, len, &size, &s->orecv);
if (!ret) {
err = GetLastError();
if (err == ERROR_IO_PENDING) {
@@ -65,8 +65,7 @@ static int win_chr_poll(void *opaque)
ClearCommError(s->hcom, &comerr, &status);
if (status.cbInQue > 0) {
- s->len = status.cbInQue;
- win_chr_read(chr);
+ win_chr_read(chr, status.cbInQue);
return 1;
}
return 0;
@@ -146,8 +145,7 @@ int win_chr_pipe_poll(void *opaque)
PeekNamedPipe(s->hcom, NULL, 0, NULL, &size, NULL);
if (size > 0) {
- s->len = size;
- win_chr_read(chr);
+ win_chr_read(chr, size);
return 1;
}
return 0;
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 03/14] char-win: rename win_chr_init/poll win_chr_serial_init/poll
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 01/14] char-win: simplify win_chr_read() Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 02/14] char-win: remove WinChardev.len Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 04/14] char-win: rename hcom->file Marc-André Lureau
` (11 subsequent siblings)
14 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
Those 2 functions are specific to serial chardev, make it more clear.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
chardev/char-win.h | 2 +-
chardev/char-serial.c | 2 +-
chardev/char-win.c | 8 ++++----
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/chardev/char-win.h b/chardev/char-win.h
index 70215e04c2..e0b3839a77 100644
--- a/chardev/char-win.h
+++ b/chardev/char-win.h
@@ -46,7 +46,7 @@ typedef struct {
#define WIN_CHARDEV(obj) OBJECT_CHECK(WinChardev, (obj), TYPE_CHARDEV_WIN)
void qemu_chr_open_win_file(Chardev *chr, HANDLE fd_out);
-int win_chr_init(Chardev *chr, const char *filename, Error **errp);
+int win_chr_serial_init(Chardev *chr, const char *filename, Error **errp);
int win_chr_pipe_poll(void *opaque);
#endif /* CHAR_WIN_H */
diff --git a/chardev/char-serial.c b/chardev/char-serial.c
index 094e08dca5..fef3a91c77 100644
--- a/chardev/char-serial.c
+++ b/chardev/char-serial.c
@@ -45,7 +45,7 @@ static void qmp_chardev_open_serial(Chardev *chr,
{
ChardevHostdev *serial = backend->u.serial.data;
- win_chr_init(chr, serial->device, errp);
+ win_chr_serial_init(chr, serial->device, errp);
}
#elif defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
diff --git a/chardev/char-win.c b/chardev/char-win.c
index 5e7daeeae1..11abad1521 100644
--- a/chardev/char-win.c
+++ b/chardev/char-win.c
@@ -56,7 +56,7 @@ static void win_chr_read(Chardev *chr, DWORD len)
}
}
-static int win_chr_poll(void *opaque)
+static int win_chr_serial_poll(void *opaque)
{
Chardev *chr = CHARDEV(opaque);
WinChardev *s = WIN_CHARDEV(opaque);
@@ -71,7 +71,7 @@ static int win_chr_poll(void *opaque)
return 0;
}
-int win_chr_init(Chardev *chr, const char *filename, Error **errp)
+int win_chr_serial_init(Chardev *chr, const char *filename, Error **errp)
{
WinChardev *s = WIN_CHARDEV(chr);
COMMCONFIG comcfg;
@@ -130,7 +130,7 @@ int win_chr_init(Chardev *chr, const char *filename, Error **errp)
error_setg(errp, "Failed ClearCommError");
goto fail;
}
- qemu_add_polling_cb(win_chr_poll, chr);
+ qemu_add_polling_cb(win_chr_serial_poll, chr);
return 0;
fail:
@@ -208,7 +208,7 @@ static void char_win_finalize(Object *obj)
if (s->fpipe) {
qemu_del_polling_cb(win_chr_pipe_poll, chr);
} else {
- qemu_del_polling_cb(win_chr_poll, chr);
+ qemu_del_polling_cb(win_chr_serial_poll, chr);
}
qemu_chr_be_event(chr, CHR_EVENT_CLOSED);
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 04/14] char-win: rename hcom->file
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (2 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 03/14] char-win: rename win_chr_init/poll win_chr_serial_init/poll Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 05/14] char-win: close file handle except with console Marc-André Lureau
` (10 subsequent siblings)
14 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
hcom is the name of the file handle, regardless of the actual chardev
driver (serial, file, console etc..). Rename it to be more explicit.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
chardev/char-win.h | 2 +-
chardev/char-pipe.c | 10 +++++-----
chardev/char-win.c | 36 ++++++++++++++++++------------------
3 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/chardev/char-win.h b/chardev/char-win.h
index e0b3839a77..888be2b3ca 100644
--- a/chardev/char-win.h
+++ b/chardev/char-win.h
@@ -29,7 +29,7 @@
typedef struct {
Chardev parent;
- HANDLE hcom, hrecv, hsend;
+ HANDLE file, hrecv, hsend;
OVERLAPPED orecv;
BOOL fpipe;
diff --git a/chardev/char-pipe.c b/chardev/char-pipe.c
index 54240c863d..aae950a22b 100644
--- a/chardev/char-pipe.c
+++ b/chardev/char-pipe.c
@@ -58,27 +58,27 @@ static int win_chr_pipe_init(Chardev *chr, const char *filename,
}
openname = g_strdup_printf("\\\\.\\pipe\\%s", filename);
- s->hcom = CreateNamedPipe(openname,
+ s->file = CreateNamedPipe(openname,
PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE |
PIPE_WAIT,
MAXCONNECT, NSENDBUF, NRECVBUF, NTIMEOUT, NULL);
g_free(openname);
- if (s->hcom == INVALID_HANDLE_VALUE) {
+ if (s->file == INVALID_HANDLE_VALUE) {
error_setg(errp, "Failed CreateNamedPipe (%lu)", GetLastError());
- s->hcom = NULL;
+ s->file = NULL;
goto fail;
}
ZeroMemory(&ov, sizeof(ov));
ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
- ret = ConnectNamedPipe(s->hcom, &ov);
+ ret = ConnectNamedPipe(s->file, &ov);
if (ret) {
error_setg(errp, "Failed ConnectNamedPipe");
goto fail;
}
- ret = GetOverlappedResult(s->hcom, &ov, &size, TRUE);
+ ret = GetOverlappedResult(s->file, &ov, &size, TRUE);
if (!ret) {
error_setg(errp, "Failed GetOverlappedResult");
if (ov.hEvent) {
diff --git a/chardev/char-win.c b/chardev/char-win.c
index 11abad1521..a7e3296909 100644
--- a/chardev/char-win.c
+++ b/chardev/char-win.c
@@ -43,11 +43,11 @@ static void win_chr_read(Chardev *chr, DWORD len)
ZeroMemory(&s->orecv, sizeof(s->orecv));
s->orecv.hEvent = s->hrecv;
- ret = ReadFile(s->hcom, buf, len, &size, &s->orecv);
+ ret = ReadFile(s->file, buf, len, &size, &s->orecv);
if (!ret) {
err = GetLastError();
if (err == ERROR_IO_PENDING) {
- ret = GetOverlappedResult(s->hcom, &s->orecv, &size, TRUE);
+ ret = GetOverlappedResult(s->file, &s->orecv, &size, TRUE);
}
}
@@ -63,7 +63,7 @@ static int win_chr_serial_poll(void *opaque)
COMSTAT status;
DWORD comerr;
- ClearCommError(s->hcom, &comerr, &status);
+ ClearCommError(s->file, &comerr, &status);
if (status.cbInQue > 0) {
win_chr_read(chr, status.cbInQue);
return 1;
@@ -91,15 +91,15 @@ int win_chr_serial_init(Chardev *chr, const char *filename, Error **errp)
goto fail;
}
- s->hcom = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, 0, NULL,
+ s->file = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
- if (s->hcom == INVALID_HANDLE_VALUE) {
+ if (s->file == INVALID_HANDLE_VALUE) {
error_setg(errp, "Failed CreateFile (%lu)", GetLastError());
- s->hcom = NULL;
+ s->file = NULL;
goto fail;
}
- if (!SetupComm(s->hcom, NRECVBUF, NSENDBUF)) {
+ if (!SetupComm(s->file, NRECVBUF, NSENDBUF)) {
error_setg(errp, "Failed SetupComm");
goto fail;
}
@@ -110,23 +110,23 @@ int win_chr_serial_init(Chardev *chr, const char *filename, Error **errp)
comcfg.dcb.DCBlength = sizeof(DCB);
CommConfigDialog(filename, NULL, &comcfg);
- if (!SetCommState(s->hcom, &comcfg.dcb)) {
+ if (!SetCommState(s->file, &comcfg.dcb)) {
error_setg(errp, "Failed SetCommState");
goto fail;
}
- if (!SetCommMask(s->hcom, EV_ERR)) {
+ if (!SetCommMask(s->file, EV_ERR)) {
error_setg(errp, "Failed SetCommMask");
goto fail;
}
cto.ReadIntervalTimeout = MAXDWORD;
- if (!SetCommTimeouts(s->hcom, &cto)) {
+ if (!SetCommTimeouts(s->file, &cto)) {
error_setg(errp, "Failed SetCommTimeouts");
goto fail;
}
- if (!ClearCommError(s->hcom, &err, &comstat)) {
+ if (!ClearCommError(s->file, &err, &comstat)) {
error_setg(errp, "Failed ClearCommError");
goto fail;
}
@@ -143,7 +143,7 @@ int win_chr_pipe_poll(void *opaque)
WinChardev *s = WIN_CHARDEV(opaque);
DWORD size;
- PeekNamedPipe(s->hcom, NULL, 0, NULL, &size, NULL);
+ PeekNamedPipe(s->file, NULL, 0, NULL, &size, NULL);
if (size > 0) {
win_chr_read(chr, size);
return 1;
@@ -162,14 +162,14 @@ static int win_chr_write(Chardev *chr, const uint8_t *buf, int len1)
s->osend.hEvent = s->hsend;
while (len > 0) {
if (s->hsend) {
- ret = WriteFile(s->hcom, buf, len, &size, &s->osend);
+ ret = WriteFile(s->file, buf, len, &size, &s->osend);
} else {
- ret = WriteFile(s->hcom, buf, len, &size, NULL);
+ ret = WriteFile(s->file, buf, len, &size, NULL);
}
if (!ret) {
err = GetLastError();
if (err == ERROR_IO_PENDING) {
- ret = GetOverlappedResult(s->hcom, &s->osend, &size, TRUE);
+ ret = GetOverlappedResult(s->file, &s->osend, &size, TRUE);
if (ret) {
buf += size;
len -= size;
@@ -202,8 +202,8 @@ static void char_win_finalize(Object *obj)
if (s->hrecv) {
CloseHandle(s->hrecv);
}
- if (s->hcom) {
- CloseHandle(s->hcom);
+ if (s->file) {
+ CloseHandle(s->file);
}
if (s->fpipe) {
qemu_del_polling_cb(win_chr_pipe_poll, chr);
@@ -219,7 +219,7 @@ void qemu_chr_open_win_file(Chardev *chr, HANDLE fd_out)
WinChardev *s = WIN_CHARDEV(chr);
s->skip_free = true;
- s->hcom = fd_out;
+ s->file = fd_out;
}
static void char_win_class_init(ObjectClass *oc, void *data)
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 05/14] char-win: close file handle except with console
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (3 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 04/14] char-win: rename hcom->file Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 06/14] Remove/replace sysemu/char.h inclusion Marc-André Lureau
` (9 subsequent siblings)
14 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
Only the console handle shouldn't be closed, however, the "file" handle
should.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
chardev/char-win.h | 5 ++---
chardev/char-console.c | 2 +-
chardev/char-file.c | 2 +-
chardev/char-win.c | 12 ++++--------
4 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/chardev/char-win.h b/chardev/char-win.h
index 888be2b3ca..4994425e9e 100644
--- a/chardev/char-win.h
+++ b/chardev/char-win.h
@@ -29,14 +29,13 @@
typedef struct {
Chardev parent;
+ bool keep_open; /* console do not close file */
HANDLE file, hrecv, hsend;
OVERLAPPED orecv;
BOOL fpipe;
/* Protected by the Chardev chr_write_lock. */
OVERLAPPED osend;
- /* FIXME: file/console do not finalize */
- bool skip_free;
} WinChardev;
#define NSENDBUF 2048
@@ -45,7 +44,7 @@ typedef struct {
#define TYPE_CHARDEV_WIN "chardev-win"
#define WIN_CHARDEV(obj) OBJECT_CHECK(WinChardev, (obj), TYPE_CHARDEV_WIN)
-void qemu_chr_open_win_file(Chardev *chr, HANDLE fd_out);
+void win_chr_set_file(Chardev *chr, HANDLE file, bool keep_open);
int win_chr_serial_init(Chardev *chr, const char *filename, Error **errp);
int win_chr_pipe_poll(void *opaque);
diff --git a/chardev/char-console.c b/chardev/char-console.c
index c824937fe6..8d972c1506 100644
--- a/chardev/char-console.c
+++ b/chardev/char-console.c
@@ -29,7 +29,7 @@ static void qemu_chr_open_win_con(Chardev *chr,
bool *be_opened,
Error **errp)
{
- qemu_chr_open_win_file(chr, GetStdHandle(STD_OUTPUT_HANDLE));
+ win_chr_set_file(chr, GetStdHandle(STD_OUTPUT_HANDLE), true);
}
static void char_console_class_init(ObjectClass *oc, void *data)
diff --git a/chardev/char-file.c b/chardev/char-file.c
index 8bae25350d..aed4ae1569 100644
--- a/chardev/char-file.c
+++ b/chardev/char-file.c
@@ -65,7 +65,7 @@ static void qmp_chardev_open_file(Chardev *chr,
return;
}
- qemu_chr_open_win_file(chr, out);
+ win_chr_set_file(chr, out, false);
#else
int flags, in = -1, out;
diff --git a/chardev/char-win.c b/chardev/char-win.c
index a7e3296909..ec9a731be9 100644
--- a/chardev/char-win.c
+++ b/chardev/char-win.c
@@ -192,17 +192,13 @@ static void char_win_finalize(Object *obj)
Chardev *chr = CHARDEV(obj);
WinChardev *s = WIN_CHARDEV(chr);
- if (s->skip_free) {
- return;
- }
-
if (s->hsend) {
CloseHandle(s->hsend);
}
if (s->hrecv) {
CloseHandle(s->hrecv);
}
- if (s->file) {
+ if (!s->keep_open && s->file) {
CloseHandle(s->file);
}
if (s->fpipe) {
@@ -214,12 +210,12 @@ static void char_win_finalize(Object *obj)
qemu_chr_be_event(chr, CHR_EVENT_CLOSED);
}
-void qemu_chr_open_win_file(Chardev *chr, HANDLE fd_out)
+void win_chr_set_file(Chardev *chr, HANDLE file, bool keep_open)
{
WinChardev *s = WIN_CHARDEV(chr);
- s->skip_free = true;
- s->file = fd_out;
+ s->keep_open = keep_open;
+ s->file = file;
}
static void char_win_class_init(ObjectClass *oc, void *data)
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 06/14] Remove/replace sysemu/char.h inclusion
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (4 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 05/14] char-win: close file handle except with console Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 20:57 ` Philippe Mathieu-Daudé
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 07/14] chardev: move headers to include/chardev Marc-André Lureau
` (8 subsequent siblings)
14 siblings, 1 reply; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
Those are apparently unnecessary includes.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
hw/arm/bcm2835_peripherals.c | 1 -
hw/char/imx_serial.c | 1 -
hw/display/xenfb.c | 1 -
hw/i386/xen/xen-hvm.c | 1 -
hw/mips/mips_fulong2e.c | 1 -
hw/mips/mips_malta.c | 1 -
hw/net/xgmac.c | 1 -
hw/ppc/spapr_events.c | 1 -
hw/ppc/spapr_rtas.c | 1 -
hw/sparc/leon3.c | 1 -
hw/usb/ccid-card-emulated.c | 2 +-
hw/xen/xen_backend.c | 1 -
util/event_notifier-posix.c | 1 -
13 files changed, 1 insertion(+), 13 deletions(-)
diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c
index 369ef1e3bd..502f04c02a 100644
--- a/hw/arm/bcm2835_peripherals.c
+++ b/hw/arm/bcm2835_peripherals.c
@@ -13,7 +13,6 @@
#include "hw/arm/bcm2835_peripherals.h"
#include "hw/misc/bcm2835_mbox_defs.h"
#include "hw/arm/raspi_platform.h"
-#include "sysemu/char.h"
#include "sysemu/sysemu.h"
/* Peripheral base address on the VC (GPU) system bus */
diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c
index 52e67f8dc9..af250305be 100644
--- a/hw/char/imx_serial.c
+++ b/hw/char/imx_serial.c
@@ -21,7 +21,6 @@
#include "qemu/osdep.h"
#include "hw/char/imx_serial.h"
#include "sysemu/sysemu.h"
-#include "sysemu/char.h"
#include "qemu/log.h"
#ifndef DEBUG_IMX_UART
diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c
index 7a8727aa21..e76c0d805c 100644
--- a/hw/display/xenfb.c
+++ b/hw/display/xenfb.c
@@ -28,7 +28,6 @@
#include "hw/hw.h"
#include "ui/console.h"
-#include "sysemu/char.h"
#include "hw/xen/xen_backend.h"
#include <xen/event_channel.h>
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index b1c05ffb86..321cf36b67 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -18,7 +18,6 @@
#include "hw/xen/xen_backend.h"
#include "qmp-commands.h"
-#include "sysemu/char.h"
#include "qemu/error-report.h"
#include "qemu/range.h"
#include "sysemu/xen-mapcache.h"
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index e636c3abaa..dbe2805acb 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -32,7 +32,6 @@
#include "hw/mips/mips.h"
#include "hw/mips/cpudevs.h"
#include "hw/pci/pci.h"
-#include "sysemu/char.h"
#include "sysemu/sysemu.h"
#include "audio/audio.h"
#include "qemu/log.h"
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 5dd177e961..6fcdd9c6c1 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -37,7 +37,6 @@
#include "hw/mips/mips.h"
#include "hw/mips/cpudevs.h"
#include "hw/pci/pci.h"
-#include "sysemu/char.h"
#include "sysemu/sysemu.h"
#include "sysemu/arch_init.h"
#include "qemu/log.h"
diff --git a/hw/net/xgmac.c b/hw/net/xgmac.c
index 46b1aa17fa..0843bf185c 100644
--- a/hw/net/xgmac.c
+++ b/hw/net/xgmac.c
@@ -26,7 +26,6 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "sysemu/char.h"
#include "qemu/log.h"
#include "net/net.h"
#include "net/checksum.h"
diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
index f0b28d8112..8a5f1d321a 100644
--- a/hw/ppc/spapr_events.c
+++ b/hw/ppc/spapr_events.c
@@ -28,7 +28,6 @@
#include "qapi/error.h"
#include "cpu.h"
#include "sysemu/sysemu.h"
-#include "sysemu/char.h"
#include "hw/qdev.h"
#include "sysemu/device_tree.h"
diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
index 619f32c054..dd1633a104 100644
--- a/hw/ppc/spapr_rtas.c
+++ b/hw/ppc/spapr_rtas.c
@@ -29,7 +29,6 @@
#include "qemu/log.h"
#include "qemu/error-report.h"
#include "sysemu/sysemu.h"
-#include "sysemu/char.h"
#include "hw/qdev.h"
#include "sysemu/device_tree.h"
#include "sysemu/cpus.h"
diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
index 6e16478413..f415997649 100644
--- a/hw/sparc/leon3.c
+++ b/hw/sparc/leon3.c
@@ -28,7 +28,6 @@
#include "hw/hw.h"
#include "qemu/timer.h"
#include "hw/ptimer.h"
-#include "sysemu/char.h"
#include "sysemu/sysemu.h"
#include "sysemu/qtest.h"
#include "hw/boards.h"
diff --git a/hw/usb/ccid-card-emulated.c b/hw/usb/ccid-card-emulated.c
index 99627860a3..e646eb243b 100644
--- a/hw/usb/ccid-card-emulated.c
+++ b/hw/usb/ccid-card-emulated.c
@@ -33,7 +33,7 @@
#include <vcard_emul.h>
#include "qemu/thread.h"
-#include "sysemu/char.h"
+#include "qemu/main-loop.h"
#include "ccid.h"
#define DPRINTF(card, lvl, fmt, ...) \
diff --git a/hw/xen/xen_backend.c b/hw/xen/xen_backend.c
index 3570f37e56..c46cbb0759 100644
--- a/hw/xen/xen_backend.c
+++ b/hw/xen/xen_backend.c
@@ -28,7 +28,6 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "hw/boards.h"
-#include "sysemu/char.h"
#include "qemu/log.h"
#include "qapi/error.h"
#include "hw/xen/xen_backend.h"
diff --git a/util/event_notifier-posix.c b/util/event_notifier-posix.c
index acdbe3b483..73c4046b58 100644
--- a/util/event_notifier-posix.c
+++ b/util/event_notifier-posix.c
@@ -14,7 +14,6 @@
#include "qemu-common.h"
#include "qemu/cutils.h"
#include "qemu/event_notifier.h"
-#include "sysemu/char.h"
#include "qemu/main-loop.h"
#ifdef CONFIG_EVENTFD
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 07/14] chardev: move headers to include/chardev
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (5 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 06/14] Remove/replace sysemu/char.h inclusion Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 21:02 ` Philippe Mathieu-Daudé
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 08/14] chardev: serial & parallel declaration to own headers Marc-André Lureau
` (7 subsequent siblings)
14 siblings, 1 reply; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
So they are all in one place. The following patch will move serial &
parallel declarations to the respective headers.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
{chardev => include/chardev}/char-fd.h | 2 +-
{chardev => include/chardev}/char-io.h | 2 +-
{chardev => include/chardev}/char-mux.h | 2 +-
{chardev => include/chardev}/char-parallel.h | 0
{chardev => include/chardev}/char-serial.h | 0
{chardev => include/chardev}/char-win-stdio.h | 0
{chardev => include/chardev}/char-win.h | 2 +-
include/{sysemu => chardev}/char.h | 0
include/hw/char/bcm2835_aux.h | 2 +-
include/hw/char/cadence_uart.h | 2 +-
include/hw/char/digic-uart.h | 2 +-
include/hw/char/imx_serial.h | 2 +-
include/hw/char/serial.h | 4 ++--
include/hw/char/stm32f2xx_usart.h | 2 +-
backends/baum.c | 2 +-
backends/msmouse.c | 2 +-
backends/rng-egd.c | 2 +-
backends/testdev.c | 2 +-
backends/wctablet.c | 2 +-
chardev/char-console.c | 2 +-
chardev/char-fd.c | 6 +++---
chardev/char-file.c | 6 +++---
chardev/char-io.c | 2 +-
chardev/char-mux.c | 4 ++--
chardev/char-null.c | 2 +-
chardev/char-parallel.c | 6 +++---
chardev/char-pipe.c | 6 +++---
chardev/char-pty.c | 4 ++--
chardev/char-ringbuf.c | 2 +-
chardev/char-serial.c | 6 +++---
chardev/char-socket.c | 4 ++--
chardev/char-stdio.c | 8 ++++----
chardev/char-udp.c | 4 ++--
chardev/char-win-stdio.c | 4 ++--
chardev/char-win.c | 2 +-
chardev/char.c | 10 +++++-----
gdbstub.c | 2 +-
hmp.c | 2 +-
hw/arm/fsl-imx25.c | 2 +-
hw/arm/fsl-imx31.c | 2 +-
hw/arm/fsl-imx6.c | 2 +-
hw/arm/omap2.c | 2 +-
hw/arm/pxa2xx.c | 2 +-
hw/arm/strongarm.c | 2 +-
hw/bt/hci-csr.c | 2 +-
hw/char/cadence_uart.c | 2 +-
hw/char/debugcon.c | 2 +-
hw/char/digic-uart.c | 2 +-
hw/char/escc.c | 2 +-
hw/char/etraxfs_ser.c | 2 +-
hw/char/exynos4210_uart.c | 2 +-
hw/char/grlib_apbuart.c | 2 +-
hw/char/ipoctal232.c | 2 +-
hw/char/lm32_juart.c | 2 +-
hw/char/lm32_uart.c | 2 +-
hw/char/mcf_uart.c | 2 +-
hw/char/milkymist-uart.c | 2 +-
hw/char/omap_uart.c | 2 +-
hw/char/parallel.c | 2 +-
hw/char/pl011.c | 2 +-
hw/char/sclpconsole-lm.c | 2 +-
hw/char/sclpconsole.c | 2 +-
hw/char/serial.c | 2 +-
hw/char/sh_serial.c | 2 +-
hw/char/spapr_vty.c | 2 +-
hw/char/terminal3270.c | 2 +-
hw/char/virtio-console.c | 2 +-
hw/char/xen_console.c | 2 +-
hw/char/xilinx_uartlite.c | 2 +-
hw/core/qdev-properties-system.c | 2 +-
hw/core/qdev-properties.c | 2 +-
hw/ipmi/ipmi_bmc_extern.c | 2 +-
hw/isa/pc87312.c | 2 +-
hw/mips/boston.c | 2 +-
hw/misc/ivshmem.c | 2 +-
hw/usb/ccid-card-passthru.c | 2 +-
hw/usb/dev-serial.c | 2 +-
hw/usb/redirect.c | 2 +-
hw/virtio/vhost-user.c | 2 +-
hw/xen/xen-common.c | 2 +-
hw/xtensa/xtfpga.c | 2 +-
monitor.c | 2 +-
net/colo-compare.c | 2 +-
net/filter-mirror.c | 2 +-
net/slirp.c | 2 +-
net/vhost-user.c | 2 +-
qmp.c | 2 +-
qtest.c | 2 +-
replay/replay-char.c | 2 +-
slirp/slirp.c | 2 +-
spice-qemu-char.c | 2 +-
tests/postcopy-test.c | 2 +-
tests/test-char.c | 2 +-
tests/vhost-user-test.c | 2 +-
ui/console.c | 2 +-
ui/gtk.c | 2 +-
vl.c | 2 +-
MAINTAINERS | 1 +
98 files changed, 117 insertions(+), 116 deletions(-)
rename {chardev => include/chardev}/char-fd.h (98%)
rename {chardev => include/chardev}/char-io.h (98%)
rename {chardev => include/chardev}/char-mux.h (98%)
rename {chardev => include/chardev}/char-parallel.h (100%)
rename {chardev => include/chardev}/char-serial.h (100%)
rename {chardev => include/chardev}/char-win-stdio.h (100%)
rename {chardev => include/chardev}/char-win.h (98%)
rename include/{sysemu => chardev}/char.h (100%)
diff --git a/chardev/char-fd.h b/include/chardev/char-fd.h
similarity index 98%
rename from chardev/char-fd.h
rename to include/chardev/char-fd.h
index d8327982fb..55ae5b47b0 100644
--- a/chardev/char-fd.h
+++ b/include/chardev/char-fd.h
@@ -25,7 +25,7 @@
#define CHAR_FD_H
#include "io/channel.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
typedef struct FDChardev {
Chardev parent;
diff --git a/chardev/char-io.h b/include/chardev/char-io.h
similarity index 98%
rename from chardev/char-io.h
rename to include/chardev/char-io.h
index 55973a7671..9638da5100 100644
--- a/chardev/char-io.h
+++ b/include/chardev/char-io.h
@@ -26,7 +26,7 @@
#include "qemu-common.h"
#include "io/channel.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
/* Can only be used for read */
GSource *io_add_watch_poll(Chardev *chr,
diff --git a/chardev/char-mux.h b/include/chardev/char-mux.h
similarity index 98%
rename from chardev/char-mux.h
rename to include/chardev/char-mux.h
index 3f41dfcfd2..45cdfc7e67 100644
--- a/chardev/char-mux.h
+++ b/include/chardev/char-mux.h
@@ -24,7 +24,7 @@
#ifndef CHAR_MUX_H
#define CHAR_MUX_H
-#include "sysemu/char.h"
+#include "chardev/char.h"
extern bool muxes_realized;
diff --git a/chardev/char-parallel.h b/include/chardev/char-parallel.h
similarity index 100%
rename from chardev/char-parallel.h
rename to include/chardev/char-parallel.h
diff --git a/chardev/char-serial.h b/include/chardev/char-serial.h
similarity index 100%
rename from chardev/char-serial.h
rename to include/chardev/char-serial.h
diff --git a/chardev/char-win-stdio.h b/include/chardev/char-win-stdio.h
similarity index 100%
rename from chardev/char-win-stdio.h
rename to include/chardev/char-win-stdio.h
diff --git a/chardev/char-win.h b/include/chardev/char-win.h
similarity index 98%
rename from chardev/char-win.h
rename to include/chardev/char-win.h
index 4994425e9e..fa59e9e423 100644
--- a/chardev/char-win.h
+++ b/include/chardev/char-win.h
@@ -24,7 +24,7 @@
#ifndef CHAR_WIN_H
#define CHAR_WIN_H
-#include "sysemu/char.h"
+#include "chardev/char.h"
typedef struct {
Chardev parent;
diff --git a/include/sysemu/char.h b/include/chardev/char.h
similarity index 100%
rename from include/sysemu/char.h
rename to include/chardev/char.h
diff --git a/include/hw/char/bcm2835_aux.h b/include/hw/char/bcm2835_aux.h
index 6865f154bc..2a051c5646 100644
--- a/include/hw/char/bcm2835_aux.h
+++ b/include/hw/char/bcm2835_aux.h
@@ -9,7 +9,7 @@
#define BCM2835_AUX_H
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#define TYPE_BCM2835_AUX "bcm2835-aux"
#define BCM2835_AUX(obj) OBJECT_CHECK(BCM2835AuxState, (obj), TYPE_BCM2835_AUX)
diff --git a/include/hw/char/cadence_uart.h b/include/hw/char/cadence_uart.h
index c836db4b74..eed7d8d358 100644
--- a/include/hw/char/cadence_uart.h
+++ b/include/hw/char/cadence_uart.h
@@ -19,7 +19,7 @@
#ifndef CADENCE_UART_H
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/timer.h"
#define CADENCE_UART_RX_FIFO_SIZE 16
diff --git a/include/hw/char/digic-uart.h b/include/hw/char/digic-uart.h
index 340c8e1111..370b48a6c5 100644
--- a/include/hw/char/digic-uart.h
+++ b/include/hw/char/digic-uart.h
@@ -19,7 +19,7 @@
#define HW_CHAR_DIGIC_UART_H
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#define TYPE_DIGIC_UART "digic-uart"
#define DIGIC_UART(obj) \
diff --git a/include/hw/char/imx_serial.h b/include/hw/char/imx_serial.h
index 4cc3fbc395..05500f5346 100644
--- a/include/hw/char/imx_serial.h
+++ b/include/hw/char/imx_serial.h
@@ -19,7 +19,7 @@
#define IMX_SERIAL_H
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#define TYPE_IMX_SERIAL "imx.serial"
#define IMX_SERIAL(obj) OBJECT_CHECK(IMXSerialState, (obj), TYPE_IMX_SERIAL)
diff --git a/include/hw/char/serial.h b/include/hw/char/serial.h
index daebb076c2..01dcd2a8d2 100644
--- a/include/hw/char/serial.h
+++ b/include/hw/char/serial.h
@@ -28,10 +28,10 @@
#include "hw/hw.h"
#include "sysemu/sysemu.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "exec/memory.h"
#include "qemu/fifo8.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#define UART_FIFO_LENGTH 16 /* 16550A Fifo Length */
diff --git a/include/hw/char/stm32f2xx_usart.h b/include/hw/char/stm32f2xx_usart.h
index 3267523270..4259dbeb1e 100644
--- a/include/hw/char/stm32f2xx_usart.h
+++ b/include/hw/char/stm32f2xx_usart.h
@@ -26,7 +26,7 @@
#define HW_STM32F2XX_USART_H
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/hw.h"
#define USART_SR 0x00
diff --git a/backends/baum.c b/backends/baum.c
index 2eddcae119..302dd9666c 100644
--- a/backends/baum.c
+++ b/backends/baum.c
@@ -24,7 +24,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qemu-common.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/timer.h"
#include "hw/usb.h"
#include "ui/console.h"
diff --git a/backends/msmouse.c b/backends/msmouse.c
index d2c3162f1e..0ffd137ce8 100644
--- a/backends/msmouse.c
+++ b/backends/msmouse.c
@@ -23,7 +23,7 @@
*/
#include "qemu/osdep.h"
#include "qemu-common.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "ui/console.h"
#include "ui/input.h"
diff --git a/backends/rng-egd.c b/backends/rng-egd.c
index 380b19a0a1..5448f6e5f5 100644
--- a/backends/rng-egd.c
+++ b/backends/rng-egd.c
@@ -12,7 +12,7 @@
#include "qemu/osdep.h"
#include "sysemu/rng.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qapi/error.h"
#include "qapi/qmp/qerror.h"
diff --git a/backends/testdev.c b/backends/testdev.c
index 7df9248a13..031e9a23e8 100644
--- a/backends/testdev.c
+++ b/backends/testdev.c
@@ -25,7 +25,7 @@
*/
#include "qemu/osdep.h"
#include "qemu-common.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#define BUF_SIZE 32
diff --git a/backends/wctablet.c b/backends/wctablet.c
index a4d3ae098a..07a4cde956 100644
--- a/backends/wctablet.c
+++ b/backends/wctablet.c
@@ -32,7 +32,7 @@
#include "qemu/osdep.h"
#include "qemu-common.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "ui/console.h"
#include "ui/input.h"
#include "trace.h"
diff --git a/chardev/char-console.c b/chardev/char-console.c
index 8d972c1506..535ed65136 100644
--- a/chardev/char-console.c
+++ b/chardev/char-console.c
@@ -22,7 +22,7 @@
* THE SOFTWARE.
*/
#include "qemu/osdep.h"
-#include "char-win.h"
+#include "chardev/char-win.h"
static void qemu_chr_open_win_con(Chardev *chr,
ChardevBackend *backend,
diff --git a/chardev/char-fd.c b/chardev/char-fd.c
index 0b182c552c..1584a3de20 100644
--- a/chardev/char-fd.c
+++ b/chardev/char-fd.c
@@ -25,11 +25,11 @@
#include "qemu/sockets.h"
#include "qapi/error.h"
#include "qemu-common.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "io/channel-file.h"
-#include "char-fd.h"
-#include "char-io.h"
+#include "chardev/char-fd.h"
+#include "chardev/char-io.h"
/* Called with chr_write_lock held. */
static int fd_chr_write(Chardev *chr, const uint8_t *buf, int len)
diff --git a/chardev/char-file.c b/chardev/char-file.c
index aed4ae1569..a57b88aaf2 100644
--- a/chardev/char-file.c
+++ b/chardev/char-file.c
@@ -24,12 +24,12 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qemu-common.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#ifdef _WIN32
-#include "char-win.h"
+#include "chardev/char-win.h"
#else
-#include "char-fd.h"
+#include "chardev/char-fd.h"
#endif
static void qmp_chardev_open_file(Chardev *chr,
diff --git a/chardev/char-io.c b/chardev/char-io.c
index b5708eef45..f81052481a 100644
--- a/chardev/char-io.c
+++ b/chardev/char-io.c
@@ -22,7 +22,7 @@
* THE SOFTWARE.
*/
#include "qemu/osdep.h"
-#include "char-io.h"
+#include "chardev/char-io.h"
typedef struct IOWatchPoll {
GSource parent;
diff --git a/chardev/char-mux.c b/chardev/char-mux.c
index 37d42c65c6..106c682e7f 100644
--- a/chardev/char-mux.c
+++ b/chardev/char-mux.c
@@ -24,9 +24,9 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qemu-common.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/block-backend.h"
-#include "char-mux.h"
+#include "chardev/char-mux.h"
/* MUX driver for serial I/O splitting */
diff --git a/chardev/char-null.c b/chardev/char-null.c
index dc0d68ab2d..90bafe76f4 100644
--- a/chardev/char-null.c
+++ b/chardev/char-null.c
@@ -22,7 +22,7 @@
* THE SOFTWARE.
*/
#include "qemu/osdep.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
static void null_chr_open(Chardev *chr,
ChardevBackend *backend,
diff --git a/chardev/char-parallel.c b/chardev/char-parallel.c
index 3fa22ce29d..bce89f8c36 100644
--- a/chardev/char-parallel.c
+++ b/chardev/char-parallel.c
@@ -22,7 +22,7 @@
* THE SOFTWARE.
*/
#include "qemu/osdep.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qapi/error.h"
#include <sys/ioctl.h>
@@ -41,8 +41,8 @@
#endif
#endif
-#include "char-fd.h"
-#include "char-parallel.h"
+#include "chardev/char-fd.h"
+#include "chardev/char-parallel.h"
#if defined(__linux__)
diff --git a/chardev/char-pipe.c b/chardev/char-pipe.c
index aae950a22b..3a95e4c1b2 100644
--- a/chardev/char-pipe.c
+++ b/chardev/char-pipe.c
@@ -23,12 +23,12 @@
*/
#include "qemu/osdep.h"
#include "qapi/error.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#ifdef _WIN32
-#include "char-win.h"
+#include "chardev/char-win.h"
#else
-#include "char-fd.h"
+#include "chardev/char-fd.h"
#endif
#ifdef _WIN32
diff --git a/chardev/char-pty.c b/chardev/char-pty.c
index 35a175d796..e5d20a0e6a 100644
--- a/chardev/char-pty.c
+++ b/chardev/char-pty.c
@@ -24,12 +24,12 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qemu-common.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "io/channel-file.h"
#include "qemu/sockets.h"
#include "qemu/error-report.h"
-#include "char-io.h"
+#include "chardev/char-io.h"
#if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
|| defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) \
diff --git a/chardev/char-ringbuf.c b/chardev/char-ringbuf.c
index d130069e88..df52b04d22 100644
--- a/chardev/char-ringbuf.c
+++ b/chardev/char-ringbuf.c
@@ -22,7 +22,7 @@
* THE SOFTWARE.
*/
#include "qemu/osdep.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qmp-commands.h"
#include "qemu/base64.h"
diff --git a/chardev/char-serial.c b/chardev/char-serial.c
index fef3a91c77..2f8f83821d 100644
--- a/chardev/char-serial.c
+++ b/chardev/char-serial.c
@@ -27,14 +27,14 @@
#include "qapi/error.h"
#ifdef _WIN32
-#include "char-win.h"
+#include "chardev/char-win.h"
#else
#include <sys/ioctl.h>
#include <termios.h>
-#include "char-fd.h"
+#include "chardev/char-fd.h"
#endif
-#include "char-serial.h"
+#include "chardev/char-serial.h"
#ifdef _WIN32
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index e2fb7f7cd5..ccc499cfa1 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -22,14 +22,14 @@
* THE SOFTWARE.
*/
#include "qemu/osdep.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "io/channel-socket.h"
#include "io/channel-tls.h"
#include "qemu/error-report.h"
#include "qapi/error.h"
#include "qapi/clone-visitor.h"
-#include "char-io.h"
+#include "chardev/char-io.h"
/***********************************************************/
/* TCP Net console */
diff --git a/chardev/char-stdio.c b/chardev/char-stdio.c
index be4a65962c..6f5d798d7b 100644
--- a/chardev/char-stdio.c
+++ b/chardev/char-stdio.c
@@ -25,14 +25,14 @@
#include "qemu/sockets.h"
#include "qapi/error.h"
#include "qemu-common.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#ifdef _WIN32
-#include "char-win.h"
-#include "char-win-stdio.h"
+#include "chardev/char-win.h"
+#include "chardev/char-win-stdio.h"
#else
#include <termios.h>
-#include "char-fd.h"
+#include "chardev/char-fd.h"
#endif
#ifndef _WIN32
diff --git a/chardev/char-udp.c b/chardev/char-udp.c
index 607647642a..4ee11d3ebf 100644
--- a/chardev/char-udp.c
+++ b/chardev/char-udp.c
@@ -22,11 +22,11 @@
* THE SOFTWARE.
*/
#include "qemu/osdep.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "io/channel-socket.h"
#include "qapi/error.h"
-#include "char-io.h"
+#include "chardev/char-io.h"
/***********************************************************/
/* UDP Net console */
diff --git a/chardev/char-win-stdio.c b/chardev/char-win-stdio.c
index eb44afc17a..efcf7827eb 100644
--- a/chardev/char-win-stdio.c
+++ b/chardev/char-win-stdio.c
@@ -23,8 +23,8 @@
*/
#include "qemu/osdep.h"
#include "qapi/error.h"
-#include "char-win.h"
-#include "char-win-stdio.h"
+#include "chardev/char-win.h"
+#include "chardev/char-win-stdio.h"
typedef struct {
Chardev parent;
diff --git a/chardev/char-win.c b/chardev/char-win.c
index ec9a731be9..05518e0958 100644
--- a/chardev/char-win.c
+++ b/chardev/char-win.c
@@ -24,7 +24,7 @@
#include "qemu/osdep.h"
#include "qemu-common.h"
#include "qapi/error.h"
-#include "char-win.h"
+#include "chardev/char-win.h"
static void win_chr_read(Chardev *chr, DWORD len)
{
diff --git a/chardev/char.c b/chardev/char.c
index 4e24dc39af..a747e0279a 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -28,16 +28,16 @@
#include "sysemu/sysemu.h"
#include "qemu/config-file.h"
#include "qemu/error-report.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qmp-commands.h"
#include "qapi-visit.h"
#include "sysemu/replay.h"
#include "qemu/help_option.h"
-#include "char-mux.h"
-#include "char-io.h"
-#include "char-parallel.h"
-#include "char-serial.h"
+#include "chardev/char-mux.h"
+#include "chardev/char-io.h"
+#include "chardev/char-parallel.h"
+#include "chardev/char-serial.h"
/***********************************************************/
/* character device */
diff --git a/gdbstub.c b/gdbstub.c
index 86eed4f97c..6515c635dc 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -25,7 +25,7 @@
#include "qemu.h"
#else
#include "monitor/monitor.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/sysemu.h"
#include "exec/gdbstub.h"
#endif
diff --git a/hmp.c b/hmp.c
index 20f5daba5e..97d4822e52 100644
--- a/hmp.c
+++ b/hmp.c
@@ -17,7 +17,7 @@
#include "hmp.h"
#include "net/net.h"
#include "net/eth.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/block-backend.h"
#include "sysemu/sysemu.h"
#include "qemu/config-file.h"
diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
index 9056f27bf8..40666b68a3 100644
--- a/hw/arm/fsl-imx25.c
+++ b/hw/arm/fsl-imx25.c
@@ -30,7 +30,7 @@
#include "sysemu/sysemu.h"
#include "exec/address-spaces.h"
#include "hw/boards.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
static void fsl_imx25_init(Object *obj)
{
diff --git a/hw/arm/fsl-imx31.c b/hw/arm/fsl-imx31.c
index d7e2d832b2..c30130667e 100644
--- a/hw/arm/fsl-imx31.c
+++ b/hw/arm/fsl-imx31.c
@@ -27,7 +27,7 @@
#include "sysemu/sysemu.h"
#include "exec/address-spaces.h"
#include "hw/boards.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
static void fsl_imx31_init(Object *obj)
{
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index 6969e734ad..27773c9c47 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -24,7 +24,7 @@
#include "qemu-common.h"
#include "hw/arm/fsl-imx6.h"
#include "sysemu/sysemu.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/error-report.h"
#define NAME_SIZE 20
diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
index cf1b4ba58f..566749a9eb 100644
--- a/hw/arm/omap2.c
+++ b/hw/arm/omap2.c
@@ -30,7 +30,7 @@
#include "hw/arm/omap.h"
#include "sysemu/sysemu.h"
#include "qemu/timer.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/block/flash.h"
#include "hw/arm/soc_dma.h"
#include "hw/sysbus.h"
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index eea551dc16..0d43cc707c 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -17,7 +17,7 @@
#include "hw/char/serial.h"
#include "hw/i2c/i2c.h"
#include "hw/ssi/ssi.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/block-backend.h"
#include "sysemu/blockdev.h"
#include "qemu/cutils.h"
diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
index 3311cc38a4..66cad198d4 100644
--- a/hw/arm/strongarm.c
+++ b/hw/arm/strongarm.c
@@ -34,7 +34,7 @@
#include "strongarm.h"
#include "qemu/error-report.h"
#include "hw/arm/arm.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/sysemu.h"
#include "hw/ssi/ssi.h"
#include "qemu/cutils.h"
diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c
index 3c193848fc..cc2087392e 100644
--- a/hw/bt/hci-csr.c
+++ b/hw/bt/hci-csr.c
@@ -20,7 +20,7 @@
#include "qemu/osdep.h"
#include "qemu-common.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/timer.h"
#include "qemu/bswap.h"
#include "hw/irq.h"
diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
index 4dcee571c0..cf4c1d56ff 100644
--- a/hw/char/cadence_uart.c
+++ b/hw/char/cadence_uart.c
@@ -23,7 +23,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/timer.h"
#include "qemu/log.h"
#include "hw/char/cadence_uart.h"
diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c
index 80dce07e7f..77d91c8558 100644
--- a/hw/char/debugcon.c
+++ b/hw/char/debugcon.c
@@ -27,7 +27,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "hw/hw.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/isa/isa.h"
#include "hw/i386/pc.h"
diff --git a/hw/char/digic-uart.c b/hw/char/digic-uart.c
index 029f5bbf5e..4f1dec7f1d 100644
--- a/hw/char/digic-uart.c
+++ b/hw/char/digic-uart.c
@@ -29,7 +29,7 @@
#include "qemu/osdep.h"
#include "hw/hw.h"
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/log.h"
#include "hw/char/digic-uart.h"
diff --git a/hw/char/escc.c b/hw/char/escc.c
index 9228091cec..df89d58eed 100644
--- a/hw/char/escc.c
+++ b/hw/char/escc.c
@@ -26,7 +26,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "hw/char/escc.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "ui/console.h"
#include "ui/input.h"
#include "trace.h"
diff --git a/hw/char/etraxfs_ser.c b/hw/char/etraxfs_ser.c
index 54383878e0..33e3e16397 100644
--- a/hw/char/etraxfs_ser.c
+++ b/hw/char/etraxfs_ser.c
@@ -24,7 +24,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/log.h"
#define D(x)
diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index bff706ab3a..94952fb90f 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -23,7 +23,7 @@
#include "hw/sysbus.h"
#include "qemu/error-report.h"
#include "sysemu/sysemu.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/arm/exynos4210.h"
diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c
index db686e6a6f..39d1133c61 100644
--- a/hw/char/grlib_apbuart.c
+++ b/hw/char/grlib_apbuart.c
@@ -24,7 +24,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "trace.h"
diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c
index 93929c2880..b8a3c92c9e 100644
--- a/hw/char/ipoctal232.c
+++ b/hw/char/ipoctal232.c
@@ -11,7 +11,7 @@
#include "qemu/osdep.h"
#include "hw/ipack/ipack.h"
#include "qemu/bitops.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
/* #define DEBUG_IPOCTAL */
diff --git a/hw/char/lm32_juart.c b/hw/char/lm32_juart.c
index f8c1e0d076..6b0633e518 100644
--- a/hw/char/lm32_juart.c
+++ b/hw/char/lm32_juart.c
@@ -21,7 +21,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "trace.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/char/lm32_juart.h"
diff --git a/hw/char/lm32_uart.c b/hw/char/lm32_uart.c
index 7f3597c4b0..a7610c28ce 100644
--- a/hw/char/lm32_uart.c
+++ b/hw/char/lm32_uart.c
@@ -26,7 +26,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "trace.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/error-report.h"
enum {
diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c
index e69672f4e9..b639b53c83 100644
--- a/hw/char/mcf_uart.c
+++ b/hw/char/mcf_uart.c
@@ -9,7 +9,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "hw/m68k/mcf.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "exec/address-spaces.h"
#include "qapi/error.h"
diff --git a/hw/char/milkymist-uart.c b/hw/char/milkymist-uart.c
index ae8e2f3554..5ef847c5eb 100644
--- a/hw/char/milkymist-uart.c
+++ b/hw/char/milkymist-uart.c
@@ -25,7 +25,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "trace.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/error-report.h"
enum {
diff --git a/hw/char/omap_uart.c b/hw/char/omap_uart.c
index 31ebb1592c..6fd1b9cf6b 100644
--- a/hw/char/omap_uart.c
+++ b/hw/char/omap_uart.c
@@ -18,7 +18,7 @@
* with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#include "qemu/osdep.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/hw.h"
#include "hw/arm/omap.h"
#include "hw/char/serial.h"
diff --git a/hw/char/parallel.c b/hw/char/parallel.c
index c71a4a0f4f..c926df0bee 100644
--- a/hw/char/parallel.c
+++ b/hw/char/parallel.c
@@ -25,7 +25,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "hw/hw.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/isa/isa.h"
#include "hw/i386/pc.h"
#include "sysemu/sysemu.h"
diff --git a/hw/char/pl011.c b/hw/char/pl011.c
index 24ea9738b6..1757035bb3 100644
--- a/hw/char/pl011.c
+++ b/hw/char/pl011.c
@@ -9,7 +9,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/log.h"
#include "trace.h"
diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c
index 07d6ebd112..755d514188 100644
--- a/hw/char/sclpconsole-lm.c
+++ b/hw/char/sclpconsole-lm.c
@@ -17,7 +17,7 @@
#include "hw/qdev.h"
#include "qemu/thread.h"
#include "qemu/error-report.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/s390x/sclp.h"
#include "hw/s390x/event-facility.h"
diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c
index b78f240a73..0fd3cb4887 100644
--- a/hw/char/sclpconsole.c
+++ b/hw/char/sclpconsole.c
@@ -19,7 +19,7 @@
#include "hw/s390x/sclp.h"
#include "hw/s390x/event-facility.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
typedef struct ASCIIConsoleData {
EventBufferHeader ebh;
diff --git a/hw/char/serial.c b/hw/char/serial.c
index 03d890ca24..aa336333be 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -25,7 +25,7 @@
#include "qemu/osdep.h"
#include "hw/char/serial.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qapi/error.h"
#include "qemu/timer.h"
#include "exec/address-spaces.h"
diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c
index 303eb0a678..80c7696d8d 100644
--- a/hw/char/sh_serial.c
+++ b/hw/char/sh_serial.c
@@ -27,7 +27,7 @@
#include "qemu/osdep.h"
#include "hw/hw.h"
#include "hw/sh4/sh.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "exec/address-spaces.h"
#include "qapi/error.h"
diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c
index e30c8da57c..2317e45404 100644
--- a/hw/char/spapr_vty.c
+++ b/hw/char/spapr_vty.c
@@ -4,7 +4,7 @@
#include "qemu-common.h"
#include "cpu.h"
#include "hw/qdev.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/ppc/spapr.h"
#include "hw/ppc/spapr_vio.h"
diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c
index b2dda01baa..c043104185 100644
--- a/hw/char/terminal3270.c
+++ b/hw/char/terminal3270.c
@@ -13,7 +13,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/s390x/3270-ccw.h"
/* Enough spaces for different window sizes. */
diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c
index 798d9b69fd..8418db6a07 100644
--- a/hw/char/virtio-console.c
+++ b/hw/char/virtio-console.c
@@ -11,7 +11,7 @@
*/
#include "qemu/osdep.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/error-report.h"
#include "trace.h"
#include "hw/virtio/virtio-serial.h"
diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c
index c01f41090e..1cdbe59f8a 100644
--- a/hw/char/xen_console.c
+++ b/hw/char/xen_console.c
@@ -25,7 +25,7 @@
#include "qapi/error.h"
#include "hw/hw.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "hw/xen/xen_backend.h"
#include "qapi/error.h"
diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c
index 37d313b429..bcebdae3da 100644
--- a/hw/char/xilinx_uartlite.c
+++ b/hw/char/xilinx_uartlite.c
@@ -24,7 +24,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#define DUART(x)
diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
index 79c2014135..4da0c6a24e 100644
--- a/hw/core/qdev-properties-system.c
+++ b/hw/core/qdev-properties-system.c
@@ -20,7 +20,7 @@
#include "hw/block/block.h"
#include "net/hub.h"
#include "qapi/visitor.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/iothread.h"
static void get_pointer(Object *obj, Visitor *v, Property *prop,
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index fa3617db2d..9f1a497322 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -9,7 +9,7 @@
#include "hw/block/block.h"
#include "net/hub.h"
#include "qapi/visitor.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
void qdev_prop_set_after_realize(DeviceState *dev, const char *name,
Error **errp)
diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
index e8e3d250b6..35285383fd 100644
--- a/hw/ipmi/ipmi_bmc_extern.c
+++ b/hw/ipmi/ipmi_bmc_extern.c
@@ -30,7 +30,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qemu/timer.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/sysemu.h"
#include "hw/ipmi/ipmi.h"
diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index c707d24db4..5ce9f0a062 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -30,7 +30,7 @@
#include "sysemu/block-backend.h"
#include "sysemu/blockdev.h"
#include "sysemu/sysemu.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "trace.h"
diff --git a/hw/mips/boston.c b/hw/mips/boston.c
index 83f7b82386..56d22fe49b 100644
--- a/hw/mips/boston.c
+++ b/hw/mips/boston.c
@@ -35,7 +35,7 @@
#include "qemu/cutils.h"
#include "qemu/error-report.h"
#include "qemu/log.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/device_tree.h"
#include "sysemu/sysemu.h"
#include "sysemu/qtest.h"
diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index 475e36a4c7..cd064dcf8c 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -29,7 +29,7 @@
#include "qemu/error-report.h"
#include "qemu/event_notifier.h"
#include "qom/object_interfaces.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/hostmem.h"
#include "sysemu/qtest.h"
#include "qapi/visitor.h"
diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c
index a41b0d6ec5..c2096b25ab 100644
--- a/hw/usb/ccid-card-passthru.c
+++ b/hw/usb/ccid-card-passthru.c
@@ -9,7 +9,7 @@
*/
#include "qemu/osdep.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/error-report.h"
#include "qemu/sockets.h"
#include "ccid.h"
diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
index 83a4f0e6fb..578760e1b3 100644
--- a/hw/usb/dev-serial.c
+++ b/hw/usb/dev-serial.c
@@ -15,7 +15,7 @@
#include "qemu/error-report.h"
#include "hw/usb.h"
#include "hw/usb/desc.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
//#define DEBUG_Serial
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index ad5ef783a6..c862c1adea 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -33,7 +33,7 @@
#include "qapi/qmp/qerror.h"
#include "qemu/error-report.h"
#include "qemu/iov.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include <usbredirparser.h>
#include <usbredirfilter.h>
diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
index b87a176770..ff4cee82e6 100644
--- a/hw/virtio/vhost-user.c
+++ b/hw/virtio/vhost-user.c
@@ -13,7 +13,7 @@
#include "hw/virtio/vhost.h"
#include "hw/virtio/vhost-backend.h"
#include "hw/virtio/virtio-net.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/kvm.h"
#include "qemu/error-report.h"
#include "qemu/sockets.h"
diff --git a/hw/xen/xen-common.c b/hw/xen/xen-common.c
index a9055e9eba..0bed5770c9 100644
--- a/hw/xen/xen-common.c
+++ b/hw/xen/xen-common.c
@@ -11,7 +11,7 @@
#include "qemu/osdep.h"
#include "hw/xen/xen_backend.h"
#include "qmp-commands.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/accel.h"
#include "migration/migration.h"
diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
index 11176e26bd..5b31cdc566 100644
--- a/hw/xtensa/xtfpga.c
+++ b/hw/xtensa/xtfpga.c
@@ -40,7 +40,7 @@
#include "hw/sysbus.h"
#include "hw/block/flash.h"
#include "sysemu/block-backend.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/device_tree.h"
#include "qemu/error-report.h"
#include "bootparam.h"
diff --git a/monitor.c b/monitor.c
index baa73c98b7..29b71ff2bc 100644
--- a/monitor.c
+++ b/monitor.c
@@ -35,7 +35,7 @@
#include "exec/gdbstub.h"
#include "net/net.h"
#include "net/slirp.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "ui/qemu-spice.h"
#include "sysemu/numa.h"
#include "monitor/monitor.h"
diff --git a/net/colo-compare.c b/net/colo-compare.c
index 2639c7f0a2..619335d5e8 100644
--- a/net/colo-compare.c
+++ b/net/colo-compare.c
@@ -25,7 +25,7 @@
#include "qom/object.h"
#include "qemu/typedefs.h"
#include "net/queue.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/sockets.h"
#include "qapi-visit.h"
#include "net/colo.h"
diff --git a/net/filter-mirror.c b/net/filter-mirror.c
index 8b1b06977d..7adc2c10d2 100644
--- a/net/filter-mirror.c
+++ b/net/filter-mirror.c
@@ -20,7 +20,7 @@
#include "qemu/main-loop.h"
#include "qemu/error-report.h"
#include "trace.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/iov.h"
#include "qemu/sockets.h"
diff --git a/net/slirp.c b/net/slirp.c
index c705a60b62..af3e8b22ac 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -37,7 +37,7 @@
#include "qemu/sockets.h"
#include "slirp/libslirp.h"
#include "slirp/ip6.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/sysemu.h"
#include "qemu/cutils.h"
#include "qapi/error.h"
diff --git a/net/vhost-user.c b/net/vhost-user.c
index 00a0c1cbc5..77d2ce22a6 100644
--- a/net/vhost-user.c
+++ b/net/vhost-user.c
@@ -12,7 +12,7 @@
#include "clients.h"
#include "net/vhost_net.h"
#include "net/vhost-user.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/config-file.h"
#include "qemu/error-report.h"
#include "qmp-commands.h"
diff --git a/qmp.c b/qmp.c
index f656940769..59448dcd16 100644
--- a/qmp.c
+++ b/qmp.c
@@ -21,7 +21,7 @@
#include "qemu/config-file.h"
#include "qemu/uuid.h"
#include "qmp-commands.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "ui/qemu-spice.h"
#include "ui/vnc.h"
#include "sysemu/kvm.h"
diff --git a/qtest.c b/qtest.c
index 5aa6636ca8..dbf70a7018 100644
--- a/qtest.c
+++ b/qtest.c
@@ -17,7 +17,7 @@
#include "cpu.h"
#include "sysemu/qtest.h"
#include "hw/qdev.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "exec/ioport.h"
#include "exec/memory.h"
#include "hw/irq.h"
diff --git a/replay/replay-char.c b/replay/replay-char.c
index aa65955942..cbf7c04a9f 100755
--- a/replay/replay-char.c
+++ b/replay/replay-char.c
@@ -14,7 +14,7 @@
#include "sysemu/replay.h"
#include "replay-internal.h"
#include "sysemu/sysemu.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
/* Char drivers that generate qemu_chr_be_write events
that should be saved into the log. */
diff --git a/slirp/slirp.c b/slirp/slirp.c
index 2f2ec2c1b3..3b92cb54ce 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -25,7 +25,7 @@
#include "qemu-common.h"
#include "qemu/timer.h"
#include "qemu/error-report.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "slirp.h"
#include "hw/hw.h"
#include "qemu/cutils.h"
diff --git a/spice-qemu-char.c b/spice-qemu-char.c
index 4d1c76e8a4..1c6c2e3969 100644
--- a/spice-qemu-char.c
+++ b/spice-qemu-char.c
@@ -1,7 +1,7 @@
#include "qemu/osdep.h"
#include "trace-root.h"
#include "ui/qemu-spice.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/error-report.h"
#include <spice.h>
#include <spice/protocol.h>
diff --git a/tests/postcopy-test.c b/tests/postcopy-test.c
index e86f87656a..8142f2ab90 100644
--- a/tests/postcopy-test.c
+++ b/tests/postcopy-test.c
@@ -16,7 +16,7 @@
#include "qemu/option.h"
#include "qemu/range.h"
#include "qemu/sockets.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/sysemu.h"
#include "hw/nvram/chrp_nvram.h"
diff --git a/tests/test-char.c b/tests/test-char.c
index 124d0c5439..9340c55058 100644
--- a/tests/test-char.c
+++ b/tests/test-char.c
@@ -4,7 +4,7 @@
#include "qemu-common.h"
#include "qemu/config-file.h"
#include "qemu/sockets.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/sysemu.h"
#include "qapi/error.h"
#include "qom/qom-qobject.h"
diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
index 9095af267e..acc392d046 100644
--- a/tests/vhost-user-test.c
+++ b/tests/vhost-user-test.c
@@ -16,7 +16,7 @@
#include "qemu/option.h"
#include "qemu/range.h"
#include "qemu/sockets.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "sysemu/sysemu.h"
#include "libqos/libqos.h"
#include "libqos/pci-pc.h"
diff --git a/ui/console.c b/ui/console.c
index ac66b3c910..6cf795a23d 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -27,7 +27,7 @@
#include "hw/qdev-core.h"
#include "qemu/timer.h"
#include "qmp-commands.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "trace.h"
#include "exec/memory.h"
diff --git a/ui/gtk.c b/ui/gtk.c
index 0213ad0efc..5bd87c265a 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -54,7 +54,7 @@
#include "qmp-commands.h"
#include "x_keymap.h"
#include "keymaps.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qom/object.h"
#define MAX_VCS 10
diff --git a/vl.c b/vl.c
index 3465121217..009dfa58b4 100644
--- a/vl.c
+++ b/vl.c
@@ -81,7 +81,7 @@ int main(int argc, char **argv)
#include "sysemu/numa.h"
#include "exec/gdbstub.h"
#include "qemu/timer.h"
-#include "sysemu/char.h"
+#include "chardev/char.h"
#include "qemu/bitmap.h"
#include "qemu/log.h"
#include "sysemu/blockdev.h"
diff --git a/MAINTAINERS b/MAINTAINERS
index ef2ec58a94..59e03436ad 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1230,6 +1230,7 @@ M: Paolo Bonzini <pbonzini@redhat.com>
M: Marc-André Lureau <marcandre.lureau@redhat.com>
S: Maintained
F: chardev/
+F: include/chardev/
F: backends/msmouse.c
F: backends/testdev.c
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 08/14] chardev: serial & parallel declaration to own headers
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (6 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 07/14] chardev: move headers to include/chardev Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 21:03 ` Philippe Mathieu-Daudé
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 09/14] be-hci: use backend functions Marc-André Lureau
` (6 subsequent siblings)
14 siblings, 1 reply; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
include/chardev/char-parallel.h | 20 +++++++++++++++++++-
include/chardev/char-serial.h | 22 ++++++++++++++++++++++
include/chardev/char.h | 36 ------------------------------------
backends/wctablet.c | 2 +-
hw/arm/strongarm.c | 2 +-
hw/bt/hci-csr.c | 2 +-
hw/char/cadence_uart.c | 2 +-
hw/char/escc.c | 2 +-
hw/char/exynos4210_uart.c | 2 +-
hw/char/parallel.c | 2 +-
hw/char/serial.c | 2 +-
hw/usb/dev-serial.c | 2 +-
12 files changed, 50 insertions(+), 46 deletions(-)
diff --git a/include/chardev/char-parallel.h b/include/chardev/char-parallel.h
index 26742f9d5c..3284a1b96b 100644
--- a/include/chardev/char-parallel.h
+++ b/include/chardev/char-parallel.h
@@ -24,9 +24,27 @@
#ifndef CHAR_PARALLEL_H
#define CHAR_PARALLEL_H
-#if defined(__linux__) || defined(__FreeBSD__) || \
+#include "chardev/char.h"
+
+#if defined(__linux__) || defined(__FreeBSD__) || \
defined(__FreeBSD_kernel__) || defined(__DragonFly__)
#define HAVE_CHARDEV_PARPORT 1
#endif
+#define CHR_IOCTL_PP_READ_DATA 3
+#define CHR_IOCTL_PP_WRITE_DATA 4
+#define CHR_IOCTL_PP_READ_CONTROL 5
+#define CHR_IOCTL_PP_WRITE_CONTROL 6
+#define CHR_IOCTL_PP_READ_STATUS 7
+#define CHR_IOCTL_PP_EPP_READ_ADDR 8
+#define CHR_IOCTL_PP_EPP_READ 9
+#define CHR_IOCTL_PP_EPP_WRITE_ADDR 10
+#define CHR_IOCTL_PP_EPP_WRITE 11
+#define CHR_IOCTL_PP_DATA_DIR 12
+
+struct ParallelIOArg {
+ void *buffer;
+ int count;
+};
+
#endif /* CHAR_PARALLEL_H */
diff --git a/include/chardev/char-serial.h b/include/chardev/char-serial.h
index 64a27f63b1..cb2e59e82a 100644
--- a/include/chardev/char-serial.h
+++ b/include/chardev/char-serial.h
@@ -24,6 +24,8 @@
#ifndef CHAR_SERIAL_H
#define CHAR_SERIAL_H
+#include "chardev/char.h"
+
#ifdef _WIN32
#define HAVE_CHARDEV_SERIAL 1
#elif defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
@@ -32,4 +34,24 @@
#define HAVE_CHARDEV_SERIAL 1
#endif
+#define CHR_IOCTL_SERIAL_SET_PARAMS 1
+typedef struct {
+ int speed;
+ int parity;
+ int data_bits;
+ int stop_bits;
+} QEMUSerialSetParams;
+
+#define CHR_IOCTL_SERIAL_SET_BREAK 2
+
+#define CHR_IOCTL_SERIAL_SET_TIOCM 13
+#define CHR_IOCTL_SERIAL_GET_TIOCM 14
+
+#define CHR_TIOCM_CTS 0x020
+#define CHR_TIOCM_CAR 0x040
+#define CHR_TIOCM_DSR 0x100
+#define CHR_TIOCM_RI 0x080
+#define CHR_TIOCM_DTR 0x002
+#define CHR_TIOCM_RTS 0x004
+
#endif
diff --git a/include/chardev/char.h b/include/chardev/char.h
index fffc0f40d4..95273e10ae 100644
--- a/include/chardev/char.h
+++ b/include/chardev/char.h
@@ -27,42 +27,6 @@ typedef enum {
#define CHR_READ_BUF_LEN 4096
-#define CHR_IOCTL_SERIAL_SET_PARAMS 1
-typedef struct {
- int speed;
- int parity;
- int data_bits;
- int stop_bits;
-} QEMUSerialSetParams;
-
-#define CHR_IOCTL_SERIAL_SET_BREAK 2
-
-#define CHR_IOCTL_PP_READ_DATA 3
-#define CHR_IOCTL_PP_WRITE_DATA 4
-#define CHR_IOCTL_PP_READ_CONTROL 5
-#define CHR_IOCTL_PP_WRITE_CONTROL 6
-#define CHR_IOCTL_PP_READ_STATUS 7
-#define CHR_IOCTL_PP_EPP_READ_ADDR 8
-#define CHR_IOCTL_PP_EPP_READ 9
-#define CHR_IOCTL_PP_EPP_WRITE_ADDR 10
-#define CHR_IOCTL_PP_EPP_WRITE 11
-#define CHR_IOCTL_PP_DATA_DIR 12
-
-struct ParallelIOArg {
- void *buffer;
- int count;
-};
-
-#define CHR_IOCTL_SERIAL_SET_TIOCM 13
-#define CHR_IOCTL_SERIAL_GET_TIOCM 14
-
-#define CHR_TIOCM_CTS 0x020
-#define CHR_TIOCM_CAR 0x040
-#define CHR_TIOCM_DSR 0x100
-#define CHR_TIOCM_RI 0x080
-#define CHR_TIOCM_DTR 0x002
-#define CHR_TIOCM_RTS 0x004
-
typedef void IOEventHandler(void *opaque, int event);
typedef enum {
diff --git a/backends/wctablet.c b/backends/wctablet.c
index 07a4cde956..6c13c2c58a 100644
--- a/backends/wctablet.c
+++ b/backends/wctablet.c
@@ -32,7 +32,7 @@
#include "qemu/osdep.h"
#include "qemu-common.h"
-#include "chardev/char.h"
+#include "chardev/char-serial.h"
#include "ui/console.h"
#include "ui/input.h"
#include "trace.h"
diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
index 66cad198d4..967caea749 100644
--- a/hw/arm/strongarm.c
+++ b/hw/arm/strongarm.c
@@ -34,7 +34,7 @@
#include "strongarm.h"
#include "qemu/error-report.h"
#include "hw/arm/arm.h"
-#include "chardev/char.h"
+#include "chardev/char-serial.h"
#include "sysemu/sysemu.h"
#include "hw/ssi/ssi.h"
#include "qemu/cutils.h"
diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c
index cc2087392e..0f2021086d 100644
--- a/hw/bt/hci-csr.c
+++ b/hw/bt/hci-csr.c
@@ -20,7 +20,7 @@
#include "qemu/osdep.h"
#include "qemu-common.h"
-#include "chardev/char.h"
+#include "chardev/char-serial.h"
#include "qemu/timer.h"
#include "qemu/bswap.h"
#include "hw/irq.h"
diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
index cf4c1d56ff..4bfc185376 100644
--- a/hw/char/cadence_uart.c
+++ b/hw/char/cadence_uart.c
@@ -23,7 +23,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-serial.h"
#include "qemu/timer.h"
#include "qemu/log.h"
#include "hw/char/cadence_uart.h"
diff --git a/hw/char/escc.c b/hw/char/escc.c
index df89d58eed..81d792cb47 100644
--- a/hw/char/escc.c
+++ b/hw/char/escc.c
@@ -26,7 +26,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "hw/char/escc.h"
-#include "chardev/char.h"
+#include "chardev/char-serial.h"
#include "ui/console.h"
#include "ui/input.h"
#include "trace.h"
diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index 94952fb90f..d93125645a 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -23,7 +23,7 @@
#include "hw/sysbus.h"
#include "qemu/error-report.h"
#include "sysemu/sysemu.h"
-#include "chardev/char.h"
+#include "chardev/char-serial.h"
#include "hw/arm/exynos4210.h"
diff --git a/hw/char/parallel.c b/hw/char/parallel.c
index c926df0bee..1d6c6e9f33 100644
--- a/hw/char/parallel.c
+++ b/hw/char/parallel.c
@@ -25,7 +25,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "hw/hw.h"
-#include "chardev/char.h"
+#include "chardev/char-parallel.h"
#include "hw/isa/isa.h"
#include "hw/i386/pc.h"
#include "sysemu/sysemu.h"
diff --git a/hw/char/serial.c b/hw/char/serial.c
index aa336333be..23e5fe9d18 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -25,7 +25,7 @@
#include "qemu/osdep.h"
#include "hw/char/serial.h"
-#include "chardev/char.h"
+#include "chardev/char-serial.h"
#include "qapi/error.h"
#include "qemu/timer.h"
#include "exec/address-spaces.h"
diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
index 578760e1b3..a145c919e9 100644
--- a/hw/usb/dev-serial.c
+++ b/hw/usb/dev-serial.c
@@ -15,7 +15,7 @@
#include "qemu/error-report.h"
#include "hw/usb.h"
#include "hw/usb/desc.h"
-#include "chardev/char.h"
+#include "chardev/char-serial.h"
//#define DEBUG_Serial
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 09/14] be-hci: use backend functions
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (7 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 08/14] chardev: serial & parallel declaration to own headers Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 10/14] char: generalize qemu_chr_write_all() Marc-André Lureau
` (5 subsequent siblings)
14 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
Avoid accessing CharBackend directly, use qemu_chr_be_* methods instead.
be->chr_read should exists if qemu_chr_be_can_write() is true.
(use qemu_chr_be_write(), _impl() bypasses replay)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Andrzej Zaborowski <balrogg@gmail.com>
---
hw/bt/hci-csr.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c
index 0f2021086d..d13192b9b5 100644
--- a/hw/bt/hci-csr.c
+++ b/hw/bt/hci-csr.c
@@ -82,17 +82,14 @@ enum {
static inline void csrhci_fifo_wake(struct csrhci_s *s)
{
- Chardev *chr = (Chardev *)s;
- CharBackend *be = chr->be;
+ Chardev *chr = CHARDEV(s);
if (!s->enable || !s->out_len)
return;
/* XXX: Should wait for s->modem_state & CHR_TIOCM_RTS? */
- if (be && be->chr_can_read && be->chr_can_read(be->opaque) &&
- be->chr_read) {
- be->chr_read(be->opaque,
- s->outfifo + s->out_start++, 1);
+ if (qemu_chr_be_can_write(chr)) {
+ qemu_chr_be_write(chr, s->outfifo + s->out_start++, 1);
s->out_len--;
if (s->out_start >= s->out_size) {
s->out_start = 0;
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 10/14] char: generalize qemu_chr_write_all()
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (8 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 09/14] be-hci: use backend functions Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 21:09 ` Philippe Mathieu-Daudé
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit Marc-André Lureau
` (4 subsequent siblings)
14 siblings, 1 reply; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
qemu_chr_fe_write() is similar to qemu_chr_write_all(): the later write
all with a chardev backend.
Make qemu_chr_write() and qemu_chr_fe_write_buffer() take an 'all'
argument. If false, handle 'partial' write the way qemu_chr_fe_write()
use to, and call qemu_chr_write() from qemu_chr_fe_write().
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
chardev/char.c | 70 +++++++++++++++++++++++-----------------------------------
1 file changed, 28 insertions(+), 42 deletions(-)
diff --git a/chardev/char.c b/chardev/char.c
index a747e0279a..9a7c70c7aa 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -96,7 +96,8 @@ static void qemu_chr_fe_write_log(Chardev *s,
}
static int qemu_chr_fe_write_buffer(Chardev *s,
- const uint8_t *buf, int len, int *offset)
+ const uint8_t *buf, int len,
+ int *offset, bool write_all)
{
ChardevClass *cc = CHARDEV_GET_CLASS(s);
int res = 0;
@@ -106,7 +107,7 @@ static int qemu_chr_fe_write_buffer(Chardev *s,
while (*offset < len) {
retry:
res = cc->chr_write(s, buf + *offset, len - *offset);
- if (res < 0 && errno == EAGAIN) {
+ if (res < 0 && errno == EAGAIN && write_all) {
g_usleep(100);
goto retry;
}
@@ -116,6 +117,9 @@ static int qemu_chr_fe_write_buffer(Chardev *s,
}
*offset += res;
+ if (!write_all) {
+ break;
+ }
}
if (*offset > 0) {
qemu_chr_fe_write_log(s, buf, *offset);
@@ -130,54 +134,20 @@ static bool qemu_chr_replay(Chardev *chr)
return qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_REPLAY);
}
-int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)
+static int qemu_chr_write(Chardev *s, const uint8_t *buf, int len,
+ bool write_all)
{
- Chardev *s = be->chr;
- ChardevClass *cc;
- int ret;
-
- if (!s) {
- return 0;
- }
-
- if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
- int offset;
- replay_char_write_event_load(&ret, &offset);
- assert(offset <= len);
- qemu_chr_fe_write_buffer(s, buf, offset, &offset);
- return ret;
- }
-
- cc = CHARDEV_GET_CLASS(s);
- qemu_mutex_lock(&s->chr_write_lock);
- ret = cc->chr_write(s, buf, len);
-
- if (ret > 0) {
- qemu_chr_fe_write_log(s, buf, ret);
- }
-
- qemu_mutex_unlock(&s->chr_write_lock);
-
- if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
- replay_char_write_event_save(ret, ret < 0 ? 0 : ret);
- }
-
- return ret;
-}
-
-int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len)
-{
- int offset;
+ int offset = 0;
int res;
if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
replay_char_write_event_load(&res, &offset);
assert(offset <= len);
- qemu_chr_fe_write_buffer(s, buf, offset, &offset);
+ qemu_chr_fe_write_buffer(s, buf, offset, &offset, true);
return res;
}
- res = qemu_chr_fe_write_buffer(s, buf, len, &offset);
+ res = qemu_chr_fe_write_buffer(s, buf, len, &offset, write_all);
if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
replay_char_write_event_save(res, offset);
@@ -189,6 +159,22 @@ int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len)
return offset;
}
+int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len)
+{
+ return qemu_chr_write(s, buf, len, true);
+}
+
+int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)
+{
+ Chardev *s = be->chr;
+
+ if (!s) {
+ return 0;
+ }
+
+ return qemu_chr_write(s, buf, len, false);
+}
+
int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len)
{
Chardev *s = be->chr;
@@ -197,7 +183,7 @@ int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len)
return 0;
}
- return qemu_chr_write_all(s, buf, len);
+ return qemu_chr_write(s, buf, len, true);
}
int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len)
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (9 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 10/14] char: generalize qemu_chr_write_all() Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 21:25 ` Philippe Mathieu-Daudé
2017-06-07 16:41 ` Anthony PERARD
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 12/14] char: rename functions that are not part of fe Marc-André Lureau
` (3 subsequent siblings)
14 siblings, 2 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
Move all the fronted struct and methods to a seperate unit. This avoids
accidentally mixing backend and frontend calls, and helps with readibilty.
Make qemu_chr_replay() a macro shared by both char and char-fe.
Export qemu_chr_write(), and use a macro for qemu_chr_write_all()
(nb: yes, CharBackend is for char frontend :)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
include/chardev/char-fe.h | 249 ++++++++++++++++++++++++++
include/chardev/char-mux.h | 1 +
include/chardev/char.h | 242 +-------------------------
include/hw/char/bcm2835_aux.h | 2 +-
include/hw/char/cadence_uart.h | 2 +-
include/hw/char/digic-uart.h | 2 +-
include/hw/char/imx_serial.h | 2 +-
include/hw/char/serial.h | 2 +-
include/hw/char/stm32f2xx_usart.h | 2 +-
backends/rng-egd.c | 2 +-
chardev/char-fe.c | 358 ++++++++++++++++++++++++++++++++++++++
chardev/char.c | 343 +-----------------------------------
gdbstub.c | 1 +
hw/arm/omap2.c | 2 +-
hw/arm/pxa2xx.c | 2 +-
hw/arm/strongarm.c | 1 +
hw/char/cadence_uart.c | 1 +
hw/char/debugcon.c | 2 +-
hw/char/digic-uart.c | 2 +-
hw/char/escc.c | 1 +
hw/char/etraxfs_ser.c | 2 +-
hw/char/exynos4210_uart.c | 1 +
hw/char/grlib_apbuart.c | 2 +-
hw/char/ipoctal232.c | 2 +-
hw/char/lm32_juart.c | 2 +-
hw/char/lm32_uart.c | 2 +-
hw/char/mcf_uart.c | 2 +-
hw/char/milkymist-uart.c | 2 +-
hw/char/parallel.c | 1 +
hw/char/pl011.c | 2 +-
hw/char/sclpconsole-lm.c | 2 +-
hw/char/sclpconsole.c | 2 +-
hw/char/sh_serial.c | 2 +-
hw/char/spapr_vty.c | 2 +-
hw/char/terminal3270.c | 2 +-
hw/char/virtio-console.c | 2 +-
hw/char/xen_console.c | 2 +-
hw/char/xilinx_uartlite.c | 2 +-
hw/core/qdev-properties-system.c | 2 +-
hw/ipmi/ipmi_bmc_extern.c | 2 +-
hw/misc/ivshmem.c | 2 +-
hw/usb/ccid-card-passthru.c | 2 +-
hw/usb/dev-serial.c | 1 +
hw/usb/redirect.c | 2 +-
hw/virtio/vhost-user.c | 2 +-
monitor.c | 2 +-
net/colo-compare.c | 2 +-
net/filter-mirror.c | 2 +-
net/slirp.c | 2 +-
net/vhost-user.c | 2 +-
qtest.c | 2 +-
slirp/slirp.c | 2 +-
tests/test-char.c | 2 +-
tests/vhost-user-test.c | 2 +-
ui/console.c | 2 +-
chardev/Makefile.objs | 1 +
56 files changed, 664 insertions(+), 623 deletions(-)
create mode 100644 include/chardev/char-fe.h
create mode 100644 chardev/char-fe.c
diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h
new file mode 100644
index 0000000000..bd82093218
--- /dev/null
+++ b/include/chardev/char-fe.h
@@ -0,0 +1,249 @@
+#ifndef QEMU_CHAR_FE_H
+#define QEMU_CHAR_FE_H
+
+#include "chardev/char.h"
+
+typedef void IOEventHandler(void *opaque, int event);
+
+/* This is the backend as seen by frontend, the actual backend is
+ * Chardev */
+struct CharBackend {
+ Chardev *chr;
+ IOEventHandler *chr_event;
+ IOCanReadHandler *chr_can_read;
+ IOReadHandler *chr_read;
+ void *opaque;
+ int tag;
+ int fe_open;
+};
+
+/**
+ * @qemu_chr_fe_init:
+ *
+ * Initializes a front end for the given CharBackend and
+ * Chardev. Call qemu_chr_fe_deinit() to remove the association and
+ * release the driver.
+ *
+ * Returns: false on error.
+ */
+bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp);
+
+/**
+ * @qemu_chr_fe_deinit:
+ *
+ * Dissociate the CharBackend from the Chardev.
+ *
+ * Safe to call without associated Chardev.
+ */
+void qemu_chr_fe_deinit(CharBackend *b);
+
+/**
+ * @qemu_chr_fe_get_driver:
+ *
+ * Returns the driver associated with a CharBackend or NULL if no
+ * associated Chardev.
+ */
+Chardev *qemu_chr_fe_get_driver(CharBackend *be);
+
+/**
+ * @qemu_chr_fe_set_handlers:
+ * @b: a CharBackend
+ * @fd_can_read: callback to get the amount of data the frontend may
+ * receive
+ * @fd_read: callback to receive data from char
+ * @fd_event: event callback
+ * @opaque: an opaque pointer for the callbacks
+ * @context: a main loop context or NULL for the default
+ * @set_open: whether to call qemu_chr_fe_set_open() implicitely when
+ * any of the handler is non-NULL
+ *
+ * Set the front end char handlers. The front end takes the focus if
+ * any of the handler is non-NULL.
+ *
+ * Without associated Chardev, nothing is changed.
+ */
+void qemu_chr_fe_set_handlers(CharBackend *b,
+ IOCanReadHandler *fd_can_read,
+ IOReadHandler *fd_read,
+ IOEventHandler *fd_event,
+ void *opaque,
+ GMainContext *context,
+ bool set_open);
+
+/**
+ * @qemu_chr_fe_take_focus:
+ *
+ * Take the focus (if the front end is muxed).
+ *
+ * Without associated Chardev, nothing is changed.
+ */
+void qemu_chr_fe_take_focus(CharBackend *b);
+
+/**
+ * @qemu_chr_fe_accept_input:
+ *
+ * Notify that the frontend is ready to receive data
+ */
+void qemu_chr_fe_accept_input(CharBackend *be);
+
+/**
+ * @qemu_chr_fe_disconnect:
+ *
+ * Close a fd accpeted by character backend.
+ * Without associated Chardev, do nothing.
+ */
+void qemu_chr_fe_disconnect(CharBackend *be);
+
+/**
+ * @qemu_chr_fe_wait_connected:
+ *
+ * Wait for characted backend to be connected, return < 0 on error or
+ * if no assicated Chardev.
+ */
+int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp);
+
+/**
+ * @qemu_chr_fe_set_echo:
+ *
+ * Ask the backend to override its normal echo setting. This only really
+ * applies to the stdio backend and is used by the QMP server such that you
+ * can see what you type if you try to type QMP commands.
+ * Without associated Chardev, do nothing.
+ *
+ * @echo true to enable echo, false to disable echo
+ */
+void qemu_chr_fe_set_echo(CharBackend *be, bool echo);
+
+/**
+ * @qemu_chr_fe_set_open:
+ *
+ * Set character frontend open status. This is an indication that the
+ * front end is ready (or not) to begin doing I/O.
+ * Without associated Chardev, do nothing.
+ */
+void qemu_chr_fe_set_open(CharBackend *be, int fe_open);
+
+/**
+ * @qemu_chr_fe_printf:
+ *
+ * Write to a character backend using a printf style interface. This
+ * function is thread-safe. It does nothing without associated
+ * Chardev.
+ *
+ * @fmt see #printf
+ */
+void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...)
+ GCC_FMT_ATTR(2, 3);
+
+/**
+ * @qemu_chr_fe_add_watch:
+ *
+ * If the backend is connected, create and add a #GSource that fires
+ * when the given condition (typically G_IO_OUT|G_IO_HUP or G_IO_HUP)
+ * is active; return the #GSource's tag. If it is disconnected,
+ * or without associated Chardev, return 0.
+ *
+ * @cond the condition to poll for
+ * @func the function to call when the condition happens
+ * @user_data the opaque pointer to pass to @func
+ *
+ * Returns: the source tag
+ */
+guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond,
+ GIOFunc func, void *user_data);
+
+/**
+ * @qemu_chr_fe_write:
+ *
+ * Write data to a character backend from the front end. This function
+ * will send data from the front end to the back end. This function
+ * is thread-safe.
+ *
+ * @buf the data
+ * @len the number of bytes to send
+ *
+ * Returns: the number of bytes consumed (0 if no assicated Chardev)
+ */
+int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len);
+
+/**
+ * @qemu_chr_fe_write_all:
+ *
+ * Write data to a character backend from the front end. This function will
+ * send data from the front end to the back end. Unlike @qemu_chr_fe_write,
+ * this function will block if the back end cannot consume all of the data
+ * attempted to be written. This function is thread-safe.
+ *
+ * @buf the data
+ * @len the number of bytes to send
+ *
+ * Returns: the number of bytes consumed (0 if no assicated Chardev)
+ */
+int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len);
+
+/**
+ * @qemu_chr_fe_read_all:
+ *
+ * Read data to a buffer from the back end.
+ *
+ * @buf the data buffer
+ * @len the number of bytes to read
+ *
+ * Returns: the number of bytes read (0 if no assicated Chardev)
+ */
+int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len);
+
+/**
+ * @qemu_chr_fe_ioctl:
+ *
+ * Issue a device specific ioctl to a backend. This function is thread-safe.
+ *
+ * @cmd see CHR_IOCTL_*
+ * @arg the data associated with @cmd
+ *
+ * Returns: if @cmd is not supported by the backend or there is no
+ * associated Chardev, -ENOTSUP, otherwise the return
+ * value depends on the semantics of @cmd
+ */
+int qemu_chr_fe_ioctl(CharBackend *be, int cmd, void *arg);
+
+/**
+ * @qemu_chr_fe_get_msgfd:
+ *
+ * For backends capable of fd passing, return the latest file descriptor passed
+ * by a client.
+ *
+ * Returns: -1 if fd passing isn't supported or there is no pending file
+ * descriptor. If a file descriptor is returned, subsequent calls to
+ * this function will return -1 until a client sends a new file
+ * descriptor.
+ */
+int qemu_chr_fe_get_msgfd(CharBackend *be);
+
+/**
+ * @qemu_chr_fe_get_msgfds:
+ *
+ * For backends capable of fd passing, return the number of file received
+ * descriptors and fills the fds array up to num elements
+ *
+ * Returns: -1 if fd passing isn't supported or there are no pending file
+ * descriptors. If file descriptors are returned, subsequent calls to
+ * this function will return -1 until a client sends a new set of file
+ * descriptors.
+ */
+int qemu_chr_fe_get_msgfds(CharBackend *be, int *fds, int num);
+
+/**
+ * @qemu_chr_fe_set_msgfds:
+ *
+ * For backends capable of fd passing, set an array of fds to be passed with
+ * the next send operation.
+ * A subsequent call to this function before calling a write function will
+ * result in overwriting the fd array with the new value without being send.
+ * Upon writing the message the fd array is freed.
+ *
+ * Returns: -1 if fd passing isn't supported or no associated Chardev.
+ */
+int qemu_chr_fe_set_msgfds(CharBackend *be, int *fds, int num);
+
+#endif /* QEMU_CHAR_FE_H */
diff --git a/include/chardev/char-mux.h b/include/chardev/char-mux.h
index 45cdfc7e67..8928977897 100644
--- a/include/chardev/char-mux.h
+++ b/include/chardev/char-mux.h
@@ -25,6 +25,7 @@
#define CHAR_MUX_H
#include "chardev/char.h"
+#include "chardev/char-fe.h"
extern bool muxes_realized;
diff --git a/include/chardev/char.h b/include/chardev/char.h
index 95273e10ae..8a9ade4931 100644
--- a/include/chardev/char.h
+++ b/include/chardev/char.h
@@ -16,6 +16,7 @@
#define IAC 255
/* character device */
+typedef struct CharBackend CharBackend;
typedef enum {
CHR_EVENT_BREAK, /* serial break char */
@@ -27,8 +28,6 @@ typedef enum {
#define CHR_READ_BUF_LEN 4096
-typedef void IOEventHandler(void *opaque, int event);
-
typedef enum {
/* Whether the chardev peer is able to close and
* reopen the data channel, thus requiring support
@@ -44,17 +43,7 @@ typedef enum {
QEMU_CHAR_FEATURE_LAST,
} ChardevFeature;
-/* This is the backend as seen by frontend, the actual backend is
- * Chardev */
-typedef struct CharBackend {
- Chardev *chr;
- IOEventHandler *chr_event;
- IOCanReadHandler *chr_can_read;
- IOReadHandler *chr_read;
- void *opaque;
- int tag;
- int fe_open;
-} CharBackend;
+#define qemu_chr_replay(chr) qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_REPLAY)
struct Chardev {
Object parent_obj;
@@ -103,15 +92,6 @@ void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend);
*/
Chardev *qemu_chr_new(const char *label, const char *filename);
-
-/**
- * @qemu_chr_fe_disconnect:
- *
- * Close a fd accpeted by character backend.
- * Without associated Chardev, do nothing.
- */
-void qemu_chr_fe_disconnect(CharBackend *be);
-
/**
* @qemu_chr_cleanup:
*
@@ -120,14 +100,6 @@ void qemu_chr_fe_disconnect(CharBackend *be);
void qemu_chr_cleanup(void);
/**
- * @qemu_chr_fe_wait_connected:
- *
- * Wait for characted backend to be connected, return < 0 on error or
- * if no assicated Chardev.
- */
-int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp);
-
-/**
* @qemu_chr_new_noreplay:
*
* Create a new character backend from a URI.
@@ -142,150 +114,6 @@ int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp);
Chardev *qemu_chr_new_noreplay(const char *label, const char *filename);
/**
- * @qemu_chr_fe_set_echo:
- *
- * Ask the backend to override its normal echo setting. This only really
- * applies to the stdio backend and is used by the QMP server such that you
- * can see what you type if you try to type QMP commands.
- * Without associated Chardev, do nothing.
- *
- * @echo true to enable echo, false to disable echo
- */
-void qemu_chr_fe_set_echo(CharBackend *be, bool echo);
-
-/**
- * @qemu_chr_fe_set_open:
- *
- * Set character frontend open status. This is an indication that the
- * front end is ready (or not) to begin doing I/O.
- * Without associated Chardev, do nothing.
- */
-void qemu_chr_fe_set_open(CharBackend *be, int fe_open);
-
-/**
- * @qemu_chr_fe_printf:
- *
- * Write to a character backend using a printf style interface. This
- * function is thread-safe. It does nothing without associated
- * Chardev.
- *
- * @fmt see #printf
- */
-void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...)
- GCC_FMT_ATTR(2, 3);
-
-/**
- * @qemu_chr_fe_add_watch:
- *
- * If the backend is connected, create and add a #GSource that fires
- * when the given condition (typically G_IO_OUT|G_IO_HUP or G_IO_HUP)
- * is active; return the #GSource's tag. If it is disconnected,
- * or without associated Chardev, return 0.
- *
- * @cond the condition to poll for
- * @func the function to call when the condition happens
- * @user_data the opaque pointer to pass to @func
- *
- * Returns: the source tag
- */
-guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond,
- GIOFunc func, void *user_data);
-
-/**
- * @qemu_chr_fe_write:
- *
- * Write data to a character backend from the front end. This function
- * will send data from the front end to the back end. This function
- * is thread-safe.
- *
- * @buf the data
- * @len the number of bytes to send
- *
- * Returns: the number of bytes consumed (0 if no assicated Chardev)
- */
-int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len);
-
-/**
- * @qemu_chr_fe_write_all:
- *
- * Write data to a character backend from the front end. This function will
- * send data from the front end to the back end. Unlike @qemu_chr_fe_write,
- * this function will block if the back end cannot consume all of the data
- * attempted to be written. This function is thread-safe.
- *
- * @buf the data
- * @len the number of bytes to send
- *
- * Returns: the number of bytes consumed (0 if no assicated Chardev)
- */
-int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len);
-
-/**
- * @qemu_chr_fe_read_all:
- *
- * Read data to a buffer from the back end.
- *
- * @buf the data buffer
- * @len the number of bytes to read
- *
- * Returns: the number of bytes read (0 if no assicated Chardev)
- */
-int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len);
-
-/**
- * @qemu_chr_fe_ioctl:
- *
- * Issue a device specific ioctl to a backend. This function is thread-safe.
- *
- * @cmd see CHR_IOCTL_*
- * @arg the data associated with @cmd
- *
- * Returns: if @cmd is not supported by the backend or there is no
- * associated Chardev, -ENOTSUP, otherwise the return
- * value depends on the semantics of @cmd
- */
-int qemu_chr_fe_ioctl(CharBackend *be, int cmd, void *arg);
-
-/**
- * @qemu_chr_fe_get_msgfd:
- *
- * For backends capable of fd passing, return the latest file descriptor passed
- * by a client.
- *
- * Returns: -1 if fd passing isn't supported or there is no pending file
- * descriptor. If a file descriptor is returned, subsequent calls to
- * this function will return -1 until a client sends a new file
- * descriptor.
- */
-int qemu_chr_fe_get_msgfd(CharBackend *be);
-
-/**
- * @qemu_chr_fe_get_msgfds:
- *
- * For backends capable of fd passing, return the number of file received
- * descriptors and fills the fds array up to num elements
- *
- * Returns: -1 if fd passing isn't supported or there are no pending file
- * descriptors. If file descriptors are returned, subsequent calls to
- * this function will return -1 until a client sends a new set of file
- * descriptors.
- */
-int qemu_chr_fe_get_msgfds(CharBackend *be, int *fds, int num);
-
-/**
- * @qemu_chr_fe_set_msgfds:
- *
- * For backends capable of fd passing, set an array of fds to be passed with
- * the next send operation.
- * A subsequent call to this function before calling a write function will
- * result in overwriting the fd array with the new value without being send.
- * Upon writing the message the fd array is freed.
- *
- * Returns: -1 if fd passing isn't supported or no associated Chardev.
- */
-int qemu_chr_fe_set_msgfds(CharBackend *be, int *fds, int num);
-
-/**
* @qemu_chr_be_can_write:
*
* Determine how much data the front end can currently accept. This function
@@ -328,69 +156,6 @@ void qemu_chr_be_write_impl(Chardev *s, uint8_t *buf, int len);
*/
void qemu_chr_be_event(Chardev *s, int event);
-/**
- * @qemu_chr_fe_init:
- *
- * Initializes a front end for the given CharBackend and
- * Chardev. Call qemu_chr_fe_deinit() to remove the association and
- * release the driver.
- *
- * Returns: false on error.
- */
-bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp);
-
-/**
- * @qemu_chr_fe_get_driver:
- *
- * Returns the driver associated with a CharBackend or NULL if no
- * associated Chardev.
- */
-Chardev *qemu_chr_fe_get_driver(CharBackend *be);
-
-/**
- * @qemu_chr_fe_deinit:
- *
- * Dissociate the CharBackend from the Chardev.
- *
- * Safe to call without associated Chardev.
- */
-void qemu_chr_fe_deinit(CharBackend *b);
-
-/**
- * @qemu_chr_fe_set_handlers:
- * @b: a CharBackend
- * @fd_can_read: callback to get the amount of data the frontend may
- * receive
- * @fd_read: callback to receive data from char
- * @fd_event: event callback
- * @opaque: an opaque pointer for the callbacks
- * @context: a main loop context or NULL for the default
- * @set_open: whether to call qemu_chr_fe_set_open() implicitely when
- * any of the handler is non-NULL
- *
- * Set the front end char handlers. The front end takes the focus if
- * any of the handler is non-NULL.
- *
- * Without associated Chardev, nothing is changed.
- */
-void qemu_chr_fe_set_handlers(CharBackend *b,
- IOCanReadHandler *fd_can_read,
- IOReadHandler *fd_read,
- IOEventHandler *fd_event,
- void *opaque,
- GMainContext *context,
- bool set_open);
-
-/**
- * @qemu_chr_fe_take_focus:
- *
- * Take the focus (if the front end is muxed).
- *
- * Without associated Chardev, nothing is changed.
- */
-void qemu_chr_fe_take_focus(CharBackend *b);
-
-void qemu_chr_fe_accept_input(CharBackend *be);
int qemu_chr_add_client(Chardev *s, int fd);
Chardev *qemu_chr_find(const char *name);
@@ -399,7 +164,8 @@ bool qemu_chr_has_feature(Chardev *chr,
void qemu_chr_set_feature(Chardev *chr,
ChardevFeature feature);
QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename);
-int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len);
+int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all);
+#define qemu_chr_write_all(s, buf, len) qemu_chr_write(s, buf, len, true)
int qemu_chr_wait_connected(Chardev *chr, Error **errp);
#define TYPE_CHARDEV "chardev"
diff --git a/include/hw/char/bcm2835_aux.h b/include/hw/char/bcm2835_aux.h
index 2a051c5646..cdbf7e3e37 100644
--- a/include/hw/char/bcm2835_aux.h
+++ b/include/hw/char/bcm2835_aux.h
@@ -9,7 +9,7 @@
#define BCM2835_AUX_H
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#define TYPE_BCM2835_AUX "bcm2835-aux"
#define BCM2835_AUX(obj) OBJECT_CHECK(BCM2835AuxState, (obj), TYPE_BCM2835_AUX)
diff --git a/include/hw/char/cadence_uart.h b/include/hw/char/cadence_uart.h
index eed7d8d358..118e3f10de 100644
--- a/include/hw/char/cadence_uart.h
+++ b/include/hw/char/cadence_uart.h
@@ -19,7 +19,7 @@
#ifndef CADENCE_UART_H
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/timer.h"
#define CADENCE_UART_RX_FIFO_SIZE 16
diff --git a/include/hw/char/digic-uart.h b/include/hw/char/digic-uart.h
index 370b48a6c5..de9a3e3551 100644
--- a/include/hw/char/digic-uart.h
+++ b/include/hw/char/digic-uart.h
@@ -19,7 +19,7 @@
#define HW_CHAR_DIGIC_UART_H
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#define TYPE_DIGIC_UART "digic-uart"
#define DIGIC_UART(obj) \
diff --git a/include/hw/char/imx_serial.h b/include/hw/char/imx_serial.h
index 05500f5346..baeec3183f 100644
--- a/include/hw/char/imx_serial.h
+++ b/include/hw/char/imx_serial.h
@@ -19,7 +19,7 @@
#define IMX_SERIAL_H
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#define TYPE_IMX_SERIAL "imx.serial"
#define IMX_SERIAL(obj) OBJECT_CHECK(IMXSerialState, (obj), TYPE_IMX_SERIAL)
diff --git a/include/hw/char/serial.h b/include/hw/char/serial.h
index 01dcd2a8d2..c4daf11a14 100644
--- a/include/hw/char/serial.h
+++ b/include/hw/char/serial.h
@@ -28,7 +28,7 @@
#include "hw/hw.h"
#include "sysemu/sysemu.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "exec/memory.h"
#include "qemu/fifo8.h"
#include "chardev/char.h"
diff --git a/include/hw/char/stm32f2xx_usart.h b/include/hw/char/stm32f2xx_usart.h
index 4259dbeb1e..9d03a7527c 100644
--- a/include/hw/char/stm32f2xx_usart.h
+++ b/include/hw/char/stm32f2xx_usart.h
@@ -26,7 +26,7 @@
#define HW_STM32F2XX_USART_H
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "hw/hw.h"
#define USART_SR 0x00
diff --git a/backends/rng-egd.c b/backends/rng-egd.c
index 5448f6e5f5..ad3e1e5edf 100644
--- a/backends/rng-egd.c
+++ b/backends/rng-egd.c
@@ -12,7 +12,7 @@
#include "qemu/osdep.h"
#include "sysemu/rng.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qapi/error.h"
#include "qapi/qmp/qerror.h"
diff --git a/chardev/char-fe.c b/chardev/char-fe.c
new file mode 100644
index 0000000000..341221d029
--- /dev/null
+++ b/chardev/char-fe.c
@@ -0,0 +1,358 @@
+/*
+ * QEMU System Emulator
+ *
+ * Copyright (c) 2003-2008 Fabrice Bellard
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+#include "qemu/osdep.h"
+#include "qemu/error-report.h"
+#include "qapi/error.h"
+#include "qapi-visit.h"
+#include "sysemu/replay.h"
+
+#include "chardev/char-fe.h"
+#include "chardev/char-io.h"
+#include "chardev/char-mux.h"
+
+int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)
+{
+ Chardev *s = be->chr;
+
+ if (!s) {
+ return 0;
+ }
+
+ return qemu_chr_write(s, buf, len, false);
+}
+
+int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len)
+{
+ Chardev *s = be->chr;
+
+ if (!s) {
+ return 0;
+ }
+
+ return qemu_chr_write(s, buf, len, true);
+}
+
+int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len)
+{
+ Chardev *s = be->chr;
+ int offset = 0, counter = 10;
+ int res;
+
+ if (!s || !CHARDEV_GET_CLASS(s)->chr_sync_read) {
+ return 0;
+ }
+
+ if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
+ return replay_char_read_all_load(buf);
+ }
+
+ while (offset < len) {
+ retry:
+ res = CHARDEV_GET_CLASS(s)->chr_sync_read(s, buf + offset,
+ len - offset);
+ if (res == -1 && errno == EAGAIN) {
+ g_usleep(100);
+ goto retry;
+ }
+
+ if (res == 0) {
+ break;
+ }
+
+ if (res < 0) {
+ if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
+ replay_char_read_all_save_error(res);
+ }
+ return res;
+ }
+
+ offset += res;
+
+ if (!counter--) {
+ break;
+ }
+ }
+
+ if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
+ replay_char_read_all_save_buf(buf, offset);
+ }
+ return offset;
+}
+
+int qemu_chr_fe_ioctl(CharBackend *be, int cmd, void *arg)
+{
+ Chardev *s = be->chr;
+ int res;
+
+ if (!s || !CHARDEV_GET_CLASS(s)->chr_ioctl || qemu_chr_replay(s)) {
+ res = -ENOTSUP;
+ } else {
+ res = CHARDEV_GET_CLASS(s)->chr_ioctl(s, cmd, arg);
+ }
+
+ return res;
+}
+
+int qemu_chr_fe_get_msgfd(CharBackend *be)
+{
+ Chardev *s = be->chr;
+ int fd;
+ int res = (qemu_chr_fe_get_msgfds(be, &fd, 1) == 1) ? fd : -1;
+ if (s && qemu_chr_replay(s)) {
+ error_report("Replay: get msgfd is not supported "
+ "for serial devices yet");
+ exit(1);
+ }
+ return res;
+}
+
+int qemu_chr_fe_get_msgfds(CharBackend *be, int *fds, int len)
+{
+ Chardev *s = be->chr;
+
+ if (!s) {
+ return -1;
+ }
+
+ return CHARDEV_GET_CLASS(s)->get_msgfds ?
+ CHARDEV_GET_CLASS(s)->get_msgfds(s, fds, len) : -1;
+}
+
+int qemu_chr_fe_set_msgfds(CharBackend *be, int *fds, int num)
+{
+ Chardev *s = be->chr;
+
+ if (!s) {
+ return -1;
+ }
+
+ return CHARDEV_GET_CLASS(s)->set_msgfds ?
+ CHARDEV_GET_CLASS(s)->set_msgfds(s, fds, num) : -1;
+}
+
+void qemu_chr_fe_accept_input(CharBackend *be)
+{
+ Chardev *s = be->chr;
+
+ if (!s) {
+ return;
+ }
+
+ if (CHARDEV_GET_CLASS(s)->chr_accept_input) {
+ CHARDEV_GET_CLASS(s)->chr_accept_input(s);
+ }
+ qemu_notify_event();
+}
+
+void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...)
+{
+ char buf[CHR_READ_BUF_LEN];
+ va_list ap;
+ va_start(ap, fmt);
+ vsnprintf(buf, sizeof(buf), fmt, ap);
+ /* XXX this blocks entire thread. Rewrite to use
+ * qemu_chr_fe_write and background I/O callbacks */
+ qemu_chr_fe_write_all(be, (uint8_t *)buf, strlen(buf));
+ va_end(ap);
+}
+
+Chardev *qemu_chr_fe_get_driver(CharBackend *be)
+{
+ return be->chr;
+}
+
+bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp)
+{
+ int tag = 0;
+
+ if (CHARDEV_IS_MUX(s)) {
+ MuxChardev *d = MUX_CHARDEV(s);
+
+ if (d->mux_cnt >= MAX_MUX) {
+ goto unavailable;
+ }
+
+ d->backends[d->mux_cnt] = b;
+ tag = d->mux_cnt++;
+ } else if (s->be) {
+ goto unavailable;
+ } else {
+ s->be = b;
+ }
+
+ b->fe_open = false;
+ b->tag = tag;
+ b->chr = s;
+ return true;
+
+unavailable:
+ error_setg(errp, QERR_DEVICE_IN_USE, s->label);
+ return false;
+}
+
+void qemu_chr_fe_deinit(CharBackend *b)
+{
+ assert(b);
+
+ if (b->chr) {
+ qemu_chr_fe_set_handlers(b, NULL, NULL, NULL, NULL, NULL, true);
+ if (b->chr->be == b) {
+ b->chr->be = NULL;
+ }
+ if (CHARDEV_IS_MUX(b->chr)) {
+ MuxChardev *d = MUX_CHARDEV(b->chr);
+ d->backends[b->tag] = NULL;
+ }
+ b->chr = NULL;
+ }
+}
+
+void qemu_chr_fe_set_handlers(CharBackend *b,
+ IOCanReadHandler *fd_can_read,
+ IOReadHandler *fd_read,
+ IOEventHandler *fd_event,
+ void *opaque,
+ GMainContext *context,
+ bool set_open)
+{
+ Chardev *s;
+ ChardevClass *cc;
+ int fe_open;
+
+ s = b->chr;
+ if (!s) {
+ return;
+ }
+
+ cc = CHARDEV_GET_CLASS(s);
+ if (!opaque && !fd_can_read && !fd_read && !fd_event) {
+ fe_open = 0;
+ remove_fd_in_watch(s);
+ } else {
+ fe_open = 1;
+ }
+ b->chr_can_read = fd_can_read;
+ b->chr_read = fd_read;
+ b->chr_event = fd_event;
+ b->opaque = opaque;
+ if (cc->chr_update_read_handler) {
+ cc->chr_update_read_handler(s, context);
+ }
+
+ if (set_open) {
+ qemu_chr_fe_set_open(b, fe_open);
+ }
+
+ if (fe_open) {
+ qemu_chr_fe_take_focus(b);
+ /* We're connecting to an already opened device, so let's make sure we
+ also get the open event */
+ if (s->be_open) {
+ qemu_chr_be_event(s, CHR_EVENT_OPENED);
+ }
+ }
+
+ if (CHARDEV_IS_MUX(s)) {
+ mux_chr_set_handlers(s, context);
+ }
+}
+
+void qemu_chr_fe_take_focus(CharBackend *b)
+{
+ if (!b->chr) {
+ return;
+ }
+
+ if (CHARDEV_IS_MUX(b->chr)) {
+ mux_set_focus(b->chr, b->tag);
+ }
+}
+
+int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp)
+{
+ if (!be->chr) {
+ error_setg(errp, "missing associated backend");
+ return -1;
+ }
+
+ return qemu_chr_wait_connected(be->chr, errp);
+}
+
+void qemu_chr_fe_set_echo(CharBackend *be, bool echo)
+{
+ Chardev *chr = be->chr;
+
+ if (chr && CHARDEV_GET_CLASS(chr)->chr_set_echo) {
+ CHARDEV_GET_CLASS(chr)->chr_set_echo(chr, echo);
+ }
+}
+
+void qemu_chr_fe_set_open(CharBackend *be, int fe_open)
+{
+ Chardev *chr = be->chr;
+
+ if (!chr) {
+ return;
+ }
+
+ if (be->fe_open == fe_open) {
+ return;
+ }
+ be->fe_open = fe_open;
+ if (CHARDEV_GET_CLASS(chr)->chr_set_fe_open) {
+ CHARDEV_GET_CLASS(chr)->chr_set_fe_open(chr, fe_open);
+ }
+}
+
+guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond,
+ GIOFunc func, void *user_data)
+{
+ Chardev *s = be->chr;
+ GSource *src;
+ guint tag;
+
+ if (!s || CHARDEV_GET_CLASS(s)->chr_add_watch == NULL) {
+ return 0;
+ }
+
+ src = CHARDEV_GET_CLASS(s)->chr_add_watch(s, cond);
+ if (!src) {
+ return 0;
+ }
+
+ g_source_set_callback(src, (GSourceFunc)func, user_data, NULL);
+ tag = g_source_attach(src, NULL);
+ g_source_unref(src);
+
+ return tag;
+}
+
+void qemu_chr_fe_disconnect(CharBackend *be)
+{
+ Chardev *chr = be->chr;
+
+ if (chr && CHARDEV_GET_CLASS(chr)->chr_disconnect) {
+ CHARDEV_GET_CLASS(chr)->chr_disconnect(chr);
+ }
+}
diff --git a/chardev/char.c b/chardev/char.c
index 9a7c70c7aa..3d5316166e 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -22,7 +22,6 @@
* THE SOFTWARE.
*/
#include "qemu/osdep.h"
-#include "qemu-common.h"
#include "qemu/cutils.h"
#include "monitor/monitor.h"
#include "sysemu/sysemu.h"
@@ -35,9 +34,6 @@
#include "qemu/help_option.h"
#include "chardev/char-mux.h"
-#include "chardev/char-io.h"
-#include "chardev/char-parallel.h"
-#include "chardev/char-serial.h"
/***********************************************************/
/* character device */
@@ -129,13 +125,7 @@ static int qemu_chr_fe_write_buffer(Chardev *s,
return res;
}
-static bool qemu_chr_replay(Chardev *chr)
-{
- return qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_REPLAY);
-}
-
-static int qemu_chr_write(Chardev *s, const uint8_t *buf, int len,
- bool write_all)
+int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all)
{
int offset = 0;
int res;
@@ -159,94 +149,6 @@ static int qemu_chr_write(Chardev *s, const uint8_t *buf, int len,
return offset;
}
-int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len)
-{
- return qemu_chr_write(s, buf, len, true);
-}
-
-int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)
-{
- Chardev *s = be->chr;
-
- if (!s) {
- return 0;
- }
-
- return qemu_chr_write(s, buf, len, false);
-}
-
-int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len)
-{
- Chardev *s = be->chr;
-
- if (!s) {
- return 0;
- }
-
- return qemu_chr_write(s, buf, len, true);
-}
-
-int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len)
-{
- Chardev *s = be->chr;
- int offset = 0, counter = 10;
- int res;
-
- if (!s || !CHARDEV_GET_CLASS(s)->chr_sync_read) {
- return 0;
- }
-
- if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
- return replay_char_read_all_load(buf);
- }
-
- while (offset < len) {
- retry:
- res = CHARDEV_GET_CLASS(s)->chr_sync_read(s, buf + offset,
- len - offset);
- if (res == -1 && errno == EAGAIN) {
- g_usleep(100);
- goto retry;
- }
-
- if (res == 0) {
- break;
- }
-
- if (res < 0) {
- if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
- replay_char_read_all_save_error(res);
- }
- return res;
- }
-
- offset += res;
-
- if (!counter--) {
- break;
- }
- }
-
- if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
- replay_char_read_all_save_buf(buf, offset);
- }
- return offset;
-}
-
-int qemu_chr_fe_ioctl(CharBackend *be, int cmd, void *arg)
-{
- Chardev *s = be->chr;
- int res;
-
- if (!s || !CHARDEV_GET_CLASS(s)->chr_ioctl || qemu_chr_replay(s)) {
- res = -ENOTSUP;
- } else {
- res = CHARDEV_GET_CLASS(s)->chr_ioctl(s, cmd, arg);
- }
-
- return res;
-}
-
int qemu_chr_be_can_write(Chardev *s)
{
CharBackend *be = s->be;
@@ -279,75 +181,12 @@ void qemu_chr_be_write(Chardev *s, uint8_t *buf, int len)
}
}
-int qemu_chr_fe_get_msgfd(CharBackend *be)
-{
- Chardev *s = be->chr;
- int fd;
- int res = (qemu_chr_fe_get_msgfds(be, &fd, 1) == 1) ? fd : -1;
- if (s && qemu_chr_replay(s)) {
- error_report("Replay: get msgfd is not supported "
- "for serial devices yet");
- exit(1);
- }
- return res;
-}
-
-int qemu_chr_fe_get_msgfds(CharBackend *be, int *fds, int len)
-{
- Chardev *s = be->chr;
-
- if (!s) {
- return -1;
- }
-
- return CHARDEV_GET_CLASS(s)->get_msgfds ?
- CHARDEV_GET_CLASS(s)->get_msgfds(s, fds, len) : -1;
-}
-
-int qemu_chr_fe_set_msgfds(CharBackend *be, int *fds, int num)
-{
- Chardev *s = be->chr;
-
- if (!s) {
- return -1;
- }
-
- return CHARDEV_GET_CLASS(s)->set_msgfds ?
- CHARDEV_GET_CLASS(s)->set_msgfds(s, fds, num) : -1;
-}
-
int qemu_chr_add_client(Chardev *s, int fd)
{
return CHARDEV_GET_CLASS(s)->chr_add_client ?
CHARDEV_GET_CLASS(s)->chr_add_client(s, fd) : -1;
}
-void qemu_chr_fe_accept_input(CharBackend *be)
-{
- Chardev *s = be->chr;
-
- if (!s) {
- return;
- }
-
- if (CHARDEV_GET_CLASS(s)->chr_accept_input) {
- CHARDEV_GET_CLASS(s)->chr_accept_input(s);
- }
- qemu_notify_event();
-}
-
-void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...)
-{
- char buf[CHR_READ_BUF_LEN];
- va_list ap;
- va_start(ap, fmt);
- vsnprintf(buf, sizeof(buf), fmt, ap);
- /* XXX this blocks entire thread. Rewrite to use
- * qemu_chr_fe_write and background I/O callbacks */
- qemu_chr_fe_write_all(be, (uint8_t *)buf, strlen(buf));
- va_end(ap);
-}
-
static void qemu_char_open(Chardev *chr, ChardevBackend *backend,
bool *be_opened, Error **errp)
{
@@ -459,40 +298,6 @@ static Notifier muxes_realize_notify = {
.notify = muxes_realize_done,
};
-Chardev *qemu_chr_fe_get_driver(CharBackend *be)
-{
- return be->chr;
-}
-
-bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp)
-{
- int tag = 0;
-
- if (CHARDEV_IS_MUX(s)) {
- MuxChardev *d = MUX_CHARDEV(s);
-
- if (d->mux_cnt >= MAX_MUX) {
- goto unavailable;
- }
-
- d->backends[d->mux_cnt] = b;
- tag = d->mux_cnt++;
- } else if (s->be) {
- goto unavailable;
- } else {
- s->be = b;
- }
-
- b->fe_open = false;
- b->tag = tag;
- b->chr = s;
- return true;
-
-unavailable:
- error_setg(errp, QERR_DEVICE_IN_USE, s->label);
- return false;
-}
-
static bool qemu_chr_is_busy(Chardev *s)
{
if (CHARDEV_IS_MUX(s)) {
@@ -503,84 +308,6 @@ static bool qemu_chr_is_busy(Chardev *s)
}
}
-void qemu_chr_fe_deinit(CharBackend *b)
-{
- assert(b);
-
- if (b->chr) {
- qemu_chr_fe_set_handlers(b, NULL, NULL, NULL, NULL, NULL, true);
- if (b->chr->be == b) {
- b->chr->be = NULL;
- }
- if (CHARDEV_IS_MUX(b->chr)) {
- MuxChardev *d = MUX_CHARDEV(b->chr);
- d->backends[b->tag] = NULL;
- }
- b->chr = NULL;
- }
-}
-
-void qemu_chr_fe_set_handlers(CharBackend *b,
- IOCanReadHandler *fd_can_read,
- IOReadHandler *fd_read,
- IOEventHandler *fd_event,
- void *opaque,
- GMainContext *context,
- bool set_open)
-{
- Chardev *s;
- ChardevClass *cc;
- int fe_open;
-
- s = b->chr;
- if (!s) {
- return;
- }
-
- cc = CHARDEV_GET_CLASS(s);
- if (!opaque && !fd_can_read && !fd_read && !fd_event) {
- fe_open = 0;
- remove_fd_in_watch(s);
- } else {
- fe_open = 1;
- }
- b->chr_can_read = fd_can_read;
- b->chr_read = fd_read;
- b->chr_event = fd_event;
- b->opaque = opaque;
- if (cc->chr_update_read_handler) {
- cc->chr_update_read_handler(s, context);
- }
-
- if (set_open) {
- qemu_chr_fe_set_open(b, fe_open);
- }
-
- if (fe_open) {
- qemu_chr_fe_take_focus(b);
- /* We're connecting to an already opened device, so let's make sure we
- also get the open event */
- if (s->be_open) {
- qemu_chr_be_event(s, CHR_EVENT_OPENED);
- }
- }
-
- if (CHARDEV_IS_MUX(s)) {
- mux_chr_set_handlers(s, context);
- }
-}
-
-void qemu_chr_fe_take_focus(CharBackend *b)
-{
- if (!b->chr) {
- return;
- }
-
- if (CHARDEV_IS_MUX(b->chr)) {
- mux_set_focus(b->chr, b->tag);
- }
-}
-
int qemu_chr_wait_connected(Chardev *chr, Error **errp)
{
ChardevClass *cc = CHARDEV_GET_CLASS(chr);
@@ -592,16 +319,6 @@ int qemu_chr_wait_connected(Chardev *chr, Error **errp)
return 0;
}
-int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp)
-{
- if (!be->chr) {
- error_setg(errp, "missing associated backend");
- return -1;
- }
-
- return qemu_chr_wait_connected(be->chr, errp);
-}
-
QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
{
char host[65], port[33], width[8], height[8];
@@ -978,64 +695,6 @@ Chardev *qemu_chr_new(const char *label, const char *filename)
return chr;
}
-void qemu_chr_fe_set_echo(CharBackend *be, bool echo)
-{
- Chardev *chr = be->chr;
-
- if (chr && CHARDEV_GET_CLASS(chr)->chr_set_echo) {
- CHARDEV_GET_CLASS(chr)->chr_set_echo(chr, echo);
- }
-}
-
-void qemu_chr_fe_set_open(CharBackend *be, int fe_open)
-{
- Chardev *chr = be->chr;
-
- if (!chr) {
- return;
- }
-
- if (be->fe_open == fe_open) {
- return;
- }
- be->fe_open = fe_open;
- if (CHARDEV_GET_CLASS(chr)->chr_set_fe_open) {
- CHARDEV_GET_CLASS(chr)->chr_set_fe_open(chr, fe_open);
- }
-}
-
-guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond,
- GIOFunc func, void *user_data)
-{
- Chardev *s = be->chr;
- GSource *src;
- guint tag;
-
- if (!s || CHARDEV_GET_CLASS(s)->chr_add_watch == NULL) {
- return 0;
- }
-
- src = CHARDEV_GET_CLASS(s)->chr_add_watch(s, cond);
- if (!src) {
- return 0;
- }
-
- g_source_set_callback(src, (GSourceFunc)func, user_data, NULL);
- tag = g_source_attach(src, NULL);
- g_source_unref(src);
-
- return tag;
-}
-
-void qemu_chr_fe_disconnect(CharBackend *be)
-{
- Chardev *chr = be->chr;
-
- if (chr && CHARDEV_GET_CLASS(chr)->chr_disconnect) {
- CHARDEV_GET_CLASS(chr)->chr_disconnect(chr);
- }
-}
-
static int qmp_query_chardev_foreach(Object *obj, void *data)
{
Chardev *chr = CHARDEV(obj);
diff --git a/gdbstub.c b/gdbstub.c
index 6515c635dc..4251d23898 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -26,6 +26,7 @@
#else
#include "monitor/monitor.h"
#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "sysemu/sysemu.h"
#include "exec/gdbstub.h"
#endif
diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
index 566749a9eb..4b4c024693 100644
--- a/hw/arm/omap2.c
+++ b/hw/arm/omap2.c
@@ -30,7 +30,7 @@
#include "hw/arm/omap.h"
#include "sysemu/sysemu.h"
#include "qemu/timer.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "hw/block/flash.h"
#include "hw/arm/soc_dma.h"
#include "hw/sysbus.h"
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index 0d43cc707c..629e6c64e6 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -17,7 +17,7 @@
#include "hw/char/serial.h"
#include "hw/i2c/i2c.h"
#include "hw/ssi/ssi.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "sysemu/block-backend.h"
#include "sysemu/blockdev.h"
#include "qemu/cutils.h"
diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
index 967caea749..7683edc9e5 100644
--- a/hw/arm/strongarm.c
+++ b/hw/arm/strongarm.c
@@ -34,6 +34,7 @@
#include "strongarm.h"
#include "qemu/error-report.h"
#include "hw/arm/arm.h"
+#include "chardev/char-fe.h"
#include "chardev/char-serial.h"
#include "sysemu/sysemu.h"
#include "hw/ssi/ssi.h"
diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
index 4bfc185376..4a2c124104 100644
--- a/hw/char/cadence_uart.c
+++ b/hw/char/cadence_uart.c
@@ -23,6 +23,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
+#include "chardev/char-fe.h"
#include "chardev/char-serial.h"
#include "qemu/timer.h"
#include "qemu/log.h"
diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c
index 77d91c8558..762e3d8ada 100644
--- a/hw/char/debugcon.c
+++ b/hw/char/debugcon.c
@@ -27,7 +27,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "hw/hw.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "hw/isa/isa.h"
#include "hw/i386/pc.h"
diff --git a/hw/char/digic-uart.c b/hw/char/digic-uart.c
index 4f1dec7f1d..34306e11ff 100644
--- a/hw/char/digic-uart.c
+++ b/hw/char/digic-uart.c
@@ -29,7 +29,7 @@
#include "qemu/osdep.h"
#include "hw/hw.h"
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/log.h"
#include "hw/char/digic-uart.h"
diff --git a/hw/char/escc.c b/hw/char/escc.c
index 81d792cb47..3f787632c7 100644
--- a/hw/char/escc.c
+++ b/hw/char/escc.c
@@ -26,6 +26,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "hw/char/escc.h"
+#include "chardev/char-fe.h"
#include "chardev/char-serial.h"
#include "ui/console.h"
#include "ui/input.h"
diff --git a/hw/char/etraxfs_ser.c b/hw/char/etraxfs_ser.c
index 33e3e16397..c1fba9f50f 100644
--- a/hw/char/etraxfs_ser.c
+++ b/hw/char/etraxfs_ser.c
@@ -24,7 +24,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/log.h"
#define D(x)
diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index d93125645a..b51d44a321 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -23,6 +23,7 @@
#include "hw/sysbus.h"
#include "qemu/error-report.h"
#include "sysemu/sysemu.h"
+#include "chardev/char-fe.h"
#include "chardev/char-serial.h"
#include "hw/arm/exynos4210.h"
diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c
index 39d1133c61..32d98edf49 100644
--- a/hw/char/grlib_apbuart.c
+++ b/hw/char/grlib_apbuart.c
@@ -24,7 +24,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "trace.h"
diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c
index b8a3c92c9e..337a3e566a 100644
--- a/hw/char/ipoctal232.c
+++ b/hw/char/ipoctal232.c
@@ -11,7 +11,7 @@
#include "qemu/osdep.h"
#include "hw/ipack/ipack.h"
#include "qemu/bitops.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
/* #define DEBUG_IPOCTAL */
diff --git a/hw/char/lm32_juart.c b/hw/char/lm32_juart.c
index 6b0633e518..3948dcd332 100644
--- a/hw/char/lm32_juart.c
+++ b/hw/char/lm32_juart.c
@@ -21,7 +21,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "trace.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "hw/char/lm32_juart.h"
diff --git a/hw/char/lm32_uart.c b/hw/char/lm32_uart.c
index a7610c28ce..cff8c38f90 100644
--- a/hw/char/lm32_uart.c
+++ b/hw/char/lm32_uart.c
@@ -26,7 +26,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "trace.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/error-report.h"
enum {
diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c
index b639b53c83..fe12ad5ccb 100644
--- a/hw/char/mcf_uart.c
+++ b/hw/char/mcf_uart.c
@@ -9,7 +9,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "hw/m68k/mcf.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "exec/address-spaces.h"
#include "qapi/error.h"
diff --git a/hw/char/milkymist-uart.c b/hw/char/milkymist-uart.c
index 5ef847c5eb..e19d0f6520 100644
--- a/hw/char/milkymist-uart.c
+++ b/hw/char/milkymist-uart.c
@@ -25,7 +25,7 @@
#include "hw/hw.h"
#include "hw/sysbus.h"
#include "trace.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/error-report.h"
enum {
diff --git a/hw/char/parallel.c b/hw/char/parallel.c
index 1d6c6e9f33..75a1a2f55e 100644
--- a/hw/char/parallel.c
+++ b/hw/char/parallel.c
@@ -26,6 +26,7 @@
#include "qapi/error.h"
#include "hw/hw.h"
#include "chardev/char-parallel.h"
+#include "chardev/char-fe.h"
#include "hw/isa/isa.h"
#include "hw/i386/pc.h"
#include "sysemu/sysemu.h"
diff --git a/hw/char/pl011.c b/hw/char/pl011.c
index 1757035bb3..33802f00c8 100644
--- a/hw/char/pl011.c
+++ b/hw/char/pl011.c
@@ -9,7 +9,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/log.h"
#include "trace.h"
diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c
index 755d514188..1b15046690 100644
--- a/hw/char/sclpconsole-lm.c
+++ b/hw/char/sclpconsole-lm.c
@@ -17,7 +17,7 @@
#include "hw/qdev.h"
#include "qemu/thread.h"
#include "qemu/error-report.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "hw/s390x/sclp.h"
#include "hw/s390x/event-facility.h"
diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c
index 0fd3cb4887..4a107a268d 100644
--- a/hw/char/sclpconsole.c
+++ b/hw/char/sclpconsole.c
@@ -19,7 +19,7 @@
#include "hw/s390x/sclp.h"
#include "hw/s390x/event-facility.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
typedef struct ASCIIConsoleData {
EventBufferHeader ebh;
diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c
index 80c7696d8d..ca9816d045 100644
--- a/hw/char/sh_serial.c
+++ b/hw/char/sh_serial.c
@@ -27,7 +27,7 @@
#include "qemu/osdep.h"
#include "hw/hw.h"
#include "hw/sh4/sh.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "exec/address-spaces.h"
#include "qapi/error.h"
diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c
index 2317e45404..8f02f3a612 100644
--- a/hw/char/spapr_vty.c
+++ b/hw/char/spapr_vty.c
@@ -4,7 +4,7 @@
#include "qemu-common.h"
#include "cpu.h"
#include "hw/qdev.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "hw/ppc/spapr.h"
#include "hw/ppc/spapr_vio.h"
diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c
index c043104185..7b10a04f18 100644
--- a/hw/char/terminal3270.c
+++ b/hw/char/terminal3270.c
@@ -13,7 +13,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "hw/s390x/3270-ccw.h"
/* Enough spaces for different window sizes. */
diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c
index 8418db6a07..0cb1668c8a 100644
--- a/hw/char/virtio-console.c
+++ b/hw/char/virtio-console.c
@@ -11,7 +11,7 @@
*/
#include "qemu/osdep.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/error-report.h"
#include "trace.h"
#include "hw/virtio/virtio-serial.h"
diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c
index 1cdbe59f8a..cb849c2e3e 100644
--- a/hw/char/xen_console.c
+++ b/hw/char/xen_console.c
@@ -25,7 +25,7 @@
#include "qapi/error.h"
#include "hw/hw.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "hw/xen/xen_backend.h"
#include "qapi/error.h"
diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c
index bcebdae3da..71ed2fc1be 100644
--- a/hw/char/xilinx_uartlite.c
+++ b/hw/char/xilinx_uartlite.c
@@ -24,7 +24,7 @@
#include "qemu/osdep.h"
#include "hw/sysbus.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#define DUART(x)
diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
index 4da0c6a24e..a549d39030 100644
--- a/hw/core/qdev-properties-system.c
+++ b/hw/core/qdev-properties-system.c
@@ -20,7 +20,7 @@
#include "hw/block/block.h"
#include "net/hub.h"
#include "qapi/visitor.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "sysemu/iothread.h"
static void get_pointer(Object *obj, Visitor *v, Property *prop,
diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
index 35285383fd..329b03e17f 100644
--- a/hw/ipmi/ipmi_bmc_extern.c
+++ b/hw/ipmi/ipmi_bmc_extern.c
@@ -30,7 +30,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qemu/timer.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "sysemu/sysemu.h"
#include "hw/ipmi/ipmi.h"
diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index cd064dcf8c..6367d041f0 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -29,7 +29,7 @@
#include "qemu/error-report.h"
#include "qemu/event_notifier.h"
#include "qom/object_interfaces.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "sysemu/hostmem.h"
#include "sysemu/qtest.h"
#include "qapi/visitor.h"
diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c
index c2096b25ab..fed3683a50 100644
--- a/hw/usb/ccid-card-passthru.c
+++ b/hw/usb/ccid-card-passthru.c
@@ -9,7 +9,7 @@
*/
#include "qemu/osdep.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/error-report.h"
#include "qemu/sockets.h"
#include "ccid.h"
diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
index a145c919e9..17d650f35a 100644
--- a/hw/usb/dev-serial.c
+++ b/hw/usb/dev-serial.c
@@ -16,6 +16,7 @@
#include "hw/usb.h"
#include "hw/usb/desc.h"
#include "chardev/char-serial.h"
+#include "chardev/char-fe.h"
//#define DEBUG_Serial
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index c862c1adea..d2b3a84a03 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -33,7 +33,7 @@
#include "qapi/qmp/qerror.h"
#include "qemu/error-report.h"
#include "qemu/iov.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include <usbredirparser.h>
#include <usbredirfilter.h>
diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
index ff4cee82e6..e60a7a1cfe 100644
--- a/hw/virtio/vhost-user.c
+++ b/hw/virtio/vhost-user.c
@@ -13,7 +13,7 @@
#include "hw/virtio/vhost.h"
#include "hw/virtio/vhost-backend.h"
#include "hw/virtio/virtio-net.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "sysemu/kvm.h"
#include "qemu/error-report.h"
#include "qemu/sockets.h"
diff --git a/monitor.c b/monitor.c
index 29b71ff2bc..37f8d5645f 100644
--- a/monitor.c
+++ b/monitor.c
@@ -35,7 +35,7 @@
#include "exec/gdbstub.h"
#include "net/net.h"
#include "net/slirp.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "ui/qemu-spice.h"
#include "sysemu/numa.h"
#include "monitor/monitor.h"
diff --git a/net/colo-compare.c b/net/colo-compare.c
index 619335d5e8..2fb75bcca4 100644
--- a/net/colo-compare.c
+++ b/net/colo-compare.c
@@ -25,7 +25,7 @@
#include "qom/object.h"
#include "qemu/typedefs.h"
#include "net/queue.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/sockets.h"
#include "qapi-visit.h"
#include "net/colo.h"
diff --git a/net/filter-mirror.c b/net/filter-mirror.c
index 7adc2c10d2..a20330475c 100644
--- a/net/filter-mirror.c
+++ b/net/filter-mirror.c
@@ -20,7 +20,7 @@
#include "qemu/main-loop.h"
#include "qemu/error-report.h"
#include "trace.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/iov.h"
#include "qemu/sockets.h"
diff --git a/net/slirp.c b/net/slirp.c
index af3e8b22ac..6a6d727999 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -37,7 +37,7 @@
#include "qemu/sockets.h"
#include "slirp/libslirp.h"
#include "slirp/ip6.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "sysemu/sysemu.h"
#include "qemu/cutils.h"
#include "qapi/error.h"
diff --git a/net/vhost-user.c b/net/vhost-user.c
index 77d2ce22a6..526290d8c1 100644
--- a/net/vhost-user.c
+++ b/net/vhost-user.c
@@ -12,7 +12,7 @@
#include "clients.h"
#include "net/vhost_net.h"
#include "net/vhost-user.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "qemu/config-file.h"
#include "qemu/error-report.h"
#include "qmp-commands.h"
diff --git a/qtest.c b/qtest.c
index dbf70a7018..9a5d1dc50d 100644
--- a/qtest.c
+++ b/qtest.c
@@ -17,7 +17,7 @@
#include "cpu.h"
#include "sysemu/qtest.h"
#include "hw/qdev.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "exec/ioport.h"
#include "exec/memory.h"
#include "hw/irq.h"
diff --git a/slirp/slirp.c b/slirp/slirp.c
index 3b92cb54ce..e79345bdfc 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -25,7 +25,7 @@
#include "qemu-common.h"
#include "qemu/timer.h"
#include "qemu/error-report.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "slirp.h"
#include "hw/hw.h"
#include "qemu/cutils.h"
diff --git a/tests/test-char.c b/tests/test-char.c
index 9340c55058..d7ecf1056a 100644
--- a/tests/test-char.c
+++ b/tests/test-char.c
@@ -4,7 +4,7 @@
#include "qemu-common.h"
#include "qemu/config-file.h"
#include "qemu/sockets.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "sysemu/sysemu.h"
#include "qapi/error.h"
#include "qom/qom-qobject.h"
diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
index acc392d046..4ca11ae28d 100644
--- a/tests/vhost-user-test.c
+++ b/tests/vhost-user-test.c
@@ -16,7 +16,7 @@
#include "qemu/option.h"
#include "qemu/range.h"
#include "qemu/sockets.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "sysemu/sysemu.h"
#include "libqos/libqos.h"
#include "libqos/pci-pc.h"
diff --git a/ui/console.c b/ui/console.c
index 6cf795a23d..d914cced53 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -27,7 +27,7 @@
#include "hw/qdev-core.h"
#include "qemu/timer.h"
#include "qmp-commands.h"
-#include "chardev/char.h"
+#include "chardev/char-fe.h"
#include "trace.h"
#include "exec/memory.h"
diff --git a/chardev/Makefile.objs b/chardev/Makefile.objs
index 1feda0f0ed..e0b37dbfd8 100644
--- a/chardev/Makefile.objs
+++ b/chardev/Makefile.objs
@@ -1,6 +1,7 @@
chardev-obj-y += char.o
chardev-obj-$(CONFIG_WIN32) += char-console.o
chardev-obj-$(CONFIG_POSIX) += char-fd.o
+chardev-obj-y += char-fe.o
chardev-obj-y += char-file.o
chardev-obj-y += char-io.o
chardev-obj-y += char-mux.o
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 12/14] char: rename functions that are not part of fe
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (10 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 13/14] char: make chr_fe_deinit() optionaly delete backend Marc-André Lureau
` (2 subsequent siblings)
14 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
There is no clear reason to have those functions associated with
frontend.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
chardev/char.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/chardev/char.c b/chardev/char.c
index 3d5316166e..4e3808aefc 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -66,8 +66,7 @@ void qemu_chr_be_event(Chardev *s, int event)
/* Not reporting errors from writing to logfile, as logs are
* defined to be "best effort" only */
-static void qemu_chr_fe_write_log(Chardev *s,
- const uint8_t *buf, size_t len)
+static void qemu_chr_write_log(Chardev *s, const uint8_t *buf, size_t len)
{
size_t done = 0;
ssize_t ret;
@@ -91,9 +90,9 @@ static void qemu_chr_fe_write_log(Chardev *s,
}
}
-static int qemu_chr_fe_write_buffer(Chardev *s,
- const uint8_t *buf, int len,
- int *offset, bool write_all)
+static int qemu_chr_write_buffer(Chardev *s,
+ const uint8_t *buf, int len,
+ int *offset, bool write_all)
{
ChardevClass *cc = CHARDEV_GET_CLASS(s);
int res = 0;
@@ -118,7 +117,7 @@ static int qemu_chr_fe_write_buffer(Chardev *s,
}
}
if (*offset > 0) {
- qemu_chr_fe_write_log(s, buf, *offset);
+ qemu_chr_write_log(s, buf, *offset);
}
qemu_mutex_unlock(&s->chr_write_lock);
@@ -133,11 +132,11 @@ int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all)
if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
replay_char_write_event_load(&res, &offset);
assert(offset <= len);
- qemu_chr_fe_write_buffer(s, buf, offset, &offset, true);
+ qemu_chr_write_buffer(s, buf, offset, &offset, true);
return res;
}
- res = qemu_chr_fe_write_buffer(s, buf, len, &offset, write_all);
+ res = qemu_chr_write_buffer(s, buf, len, &offset, write_all);
if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
replay_char_write_event_save(res, offset);
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 13/14] char: make chr_fe_deinit() optionaly delete backend
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (11 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 12/14] char: rename functions that are not part of fe Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-31 13:09 ` Marc-André Lureau
2017-06-02 4:52 ` Philippe Mathieu-Daudé
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 14/14] char: move char devices to chardev/ Marc-André Lureau
2017-05-29 9:23 ` [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups no-reply
14 siblings, 2 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
This simplifies removing a backend for a frontend user (no need to
retrive the associated driver and seperate delete call etc).
NB: many frontends have questionable handling of ending a chardev. They
should probably delete the backend to prevent broken reusage.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
include/chardev/char-fe.h | 6 ++++--
backends/rng-egd.c | 2 +-
chardev/char-fe.c | 5 ++++-
chardev/char-mux.c | 2 +-
gdbstub.c | 15 ++-------------
hw/char/serial.c | 2 +-
hw/char/xen_console.c | 2 +-
hw/core/qdev-properties-system.c | 2 +-
hw/usb/ccid-card-passthru.c | 5 +----
hw/usb/redirect.c | 4 +---
monitor.c | 2 +-
net/colo-compare.c | 8 +++-----
net/filter-mirror.c | 6 +++---
net/vhost-user.c | 5 +----
tests/test-char.c | 22 ++++++++--------------
tests/vhost-user-test.c | 4 +---
16 files changed, 34 insertions(+), 58 deletions(-)
diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h
index bd82093218..2cbb262f66 100644
--- a/include/chardev/char-fe.h
+++ b/include/chardev/char-fe.h
@@ -30,12 +30,14 @@ bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp);
/**
* @qemu_chr_fe_deinit:
- *
+ * @b: a CharBackend
+ * @del: if true, delete the chardev backend
+*
* Dissociate the CharBackend from the Chardev.
*
* Safe to call without associated Chardev.
*/
-void qemu_chr_fe_deinit(CharBackend *b);
+void qemu_chr_fe_deinit(CharBackend *b, bool del);
/**
* @qemu_chr_fe_get_driver:
diff --git a/backends/rng-egd.c b/backends/rng-egd.c
index ad3e1e5edf..e7ce2cac80 100644
--- a/backends/rng-egd.c
+++ b/backends/rng-egd.c
@@ -145,7 +145,7 @@ static void rng_egd_finalize(Object *obj)
{
RngEgd *s = RNG_EGD(obj);
- qemu_chr_fe_deinit(&s->chr);
+ qemu_chr_fe_deinit(&s->chr, false);
g_free(s->chr_name);
}
diff --git a/chardev/char-fe.c b/chardev/char-fe.c
index 341221d029..3f90f0567c 100644
--- a/chardev/char-fe.c
+++ b/chardev/char-fe.c
@@ -211,7 +211,7 @@ unavailable:
return false;
}
-void qemu_chr_fe_deinit(CharBackend *b)
+void qemu_chr_fe_deinit(CharBackend *b, bool del)
{
assert(b);
@@ -224,6 +224,9 @@ void qemu_chr_fe_deinit(CharBackend *b)
MuxChardev *d = MUX_CHARDEV(b->chr);
d->backends[b->tag] = NULL;
}
+ if (del) {
+ object_unparent(OBJECT(b->chr));
+ }
b->chr = NULL;
}
}
diff --git a/chardev/char-mux.c b/chardev/char-mux.c
index 106c682e7f..08570b915e 100644
--- a/chardev/char-mux.c
+++ b/chardev/char-mux.c
@@ -266,7 +266,7 @@ static void char_mux_finalize(Object *obj)
be->chr = NULL;
}
}
- qemu_chr_fe_deinit(&d->chr);
+ qemu_chr_fe_deinit(&d->chr, false);
}
void mux_chr_set_handlers(Chardev *chr, GMainContext *context)
diff --git a/gdbstub.c b/gdbstub.c
index 4251d23898..ec4e4b25be 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -1678,9 +1678,6 @@ void gdb_exit(CPUArchState *env, int code)
{
GDBState *s;
char buf[4];
-#ifndef CONFIG_USER_ONLY
- Chardev *chr;
-#endif
s = gdbserver_state;
if (!s) {
@@ -1690,19 +1687,13 @@ void gdb_exit(CPUArchState *env, int code)
if (gdbserver_fd < 0 || s->fd < 0) {
return;
}
-#else
- chr = qemu_chr_fe_get_driver(&s->chr);
- if (!chr) {
- return;
- }
#endif
snprintf(buf, sizeof(buf), "W%02x", (uint8_t)code);
put_packet(s, buf);
#ifndef CONFIG_USER_ONLY
- qemu_chr_fe_deinit(&s->chr);
- object_unparent(OBJECT(chr));
+ qemu_chr_fe_deinit(&s->chr, true);
#endif
}
@@ -2002,9 +1993,7 @@ int gdbserver_start(const char *device)
NULL, &error_abort);
monitor_init(mon_chr, 0);
} else {
- if (qemu_chr_fe_get_driver(&s->chr)) {
- object_unparent(OBJECT(qemu_chr_fe_get_driver(&s->chr)));
- }
+ qemu_chr_fe_deinit(&s->chr, true);
mon_chr = s->mon_chr;
memset(s, 0, sizeof(GDBState));
s->mon_chr = mon_chr;
diff --git a/hw/char/serial.c b/hw/char/serial.c
index 23e5fe9d18..e1f12507bf 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -905,7 +905,7 @@ void serial_realize_core(SerialState *s, Error **errp)
void serial_exit_core(SerialState *s)
{
- qemu_chr_fe_deinit(&s->chr);
+ qemu_chr_fe_deinit(&s->chr, false);
timer_del(s->modem_status_poll);
timer_free(s->modem_status_poll);
diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c
index cb849c2e3e..f9af8cadf4 100644
--- a/hw/char/xen_console.c
+++ b/hw/char/xen_console.c
@@ -261,7 +261,7 @@ static void con_disconnect(struct XenDevice *xendev)
{
struct XenConsole *con = container_of(xendev, struct XenConsole, xendev);
- qemu_chr_fe_deinit(&con->chr);
+ qemu_chr_fe_deinit(&con->chr, false);
xen_pv_unbind_evtchn(&con->xendev);
if (con->sring) {
diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
index a549d39030..3bef41914d 100644
--- a/hw/core/qdev-properties-system.c
+++ b/hw/core/qdev-properties-system.c
@@ -225,7 +225,7 @@ static void release_chr(Object *obj, const char *name, void *opaque)
Property *prop = opaque;
CharBackend *be = qdev_get_prop_ptr(dev, prop);
- qemu_chr_fe_deinit(be);
+ qemu_chr_fe_deinit(be, false);
}
PropertyInfo qdev_prop_chr = {
diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c
index fed3683a50..ac1725eeae 100644
--- a/hw/usb/ccid-card-passthru.c
+++ b/hw/usb/ccid-card-passthru.c
@@ -264,10 +264,7 @@ static void ccid_card_vscard_handle_message(PassthruState *card,
static void ccid_card_vscard_drop_connection(PassthruState *card)
{
- Chardev *chr = qemu_chr_fe_get_driver(&card->cs);
-
- qemu_chr_fe_deinit(&card->cs);
- object_unparent(OBJECT(chr));
+ qemu_chr_fe_deinit(&card->cs, true);
card->vscard_in_pos = card->vscard_in_hdr = 0;
}
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index d2b3a84a03..aa22d69216 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -1419,10 +1419,8 @@ static void usbredir_cleanup_device_queues(USBRedirDevice *dev)
static void usbredir_unrealize(USBDevice *udev, Error **errp)
{
USBRedirDevice *dev = USB_REDIRECT(udev);
- Chardev *chr = qemu_chr_fe_get_driver(&dev->cs);
- qemu_chr_fe_deinit(&dev->cs);
- object_unparent(OBJECT(chr));
+ qemu_chr_fe_deinit(&dev->cs, true);
/* Note must be done after qemu_chr_close, as that causes a close event */
qemu_bh_delete(dev->chardev_close_bh);
diff --git a/monitor.c b/monitor.c
index 37f8d5645f..75e7cd26d0 100644
--- a/monitor.c
+++ b/monitor.c
@@ -578,7 +578,7 @@ static void monitor_data_init(Monitor *mon)
static void monitor_data_destroy(Monitor *mon)
{
- qemu_chr_fe_deinit(&mon->chr);
+ qemu_chr_fe_deinit(&mon->chr, false);
if (monitor_is_qmp(mon)) {
json_message_parser_destroy(&mon->qmp.parser);
}
diff --git a/net/colo-compare.c b/net/colo-compare.c
index 2fb75bcca4..6d500e1dc4 100644
--- a/net/colo-compare.c
+++ b/net/colo-compare.c
@@ -801,11 +801,9 @@ static void colo_compare_finalize(Object *obj)
{
CompareState *s = COLO_COMPARE(obj);
- qemu_chr_fe_set_handlers(&s->chr_pri_in, NULL, NULL, NULL, NULL,
- s->worker_context, true);
- qemu_chr_fe_set_handlers(&s->chr_sec_in, NULL, NULL, NULL, NULL,
- s->worker_context, true);
- qemu_chr_fe_deinit(&s->chr_out);
+ qemu_chr_fe_deinit(&s->chr_pri_in, false);
+ qemu_chr_fe_deinit(&s->chr_sec_in, false);
+ qemu_chr_fe_deinit(&s->chr_out, false);
g_main_loop_quit(s->compare_loop);
qemu_thread_join(&s->thread);
diff --git a/net/filter-mirror.c b/net/filter-mirror.c
index a20330475c..52d978fce2 100644
--- a/net/filter-mirror.c
+++ b/net/filter-mirror.c
@@ -178,15 +178,15 @@ static void filter_mirror_cleanup(NetFilterState *nf)
{
MirrorState *s = FILTER_MIRROR(nf);
- qemu_chr_fe_deinit(&s->chr_out);
+ qemu_chr_fe_deinit(&s->chr_out, false);
}
static void filter_redirector_cleanup(NetFilterState *nf)
{
MirrorState *s = FILTER_REDIRECTOR(nf);
- qemu_chr_fe_deinit(&s->chr_in);
- qemu_chr_fe_deinit(&s->chr_out);
+ qemu_chr_fe_deinit(&s->chr_in, false);
+ qemu_chr_fe_deinit(&s->chr_out, false);
}
static void filter_mirror_setup(NetFilterState *nf, Error **errp)
diff --git a/net/vhost-user.c b/net/vhost-user.c
index 526290d8c1..a042ec6a34 100644
--- a/net/vhost-user.c
+++ b/net/vhost-user.c
@@ -151,10 +151,7 @@ static void vhost_user_cleanup(NetClientState *nc)
s->vhost_net = NULL;
}
if (nc->queue_index == 0) {
- Chardev *chr = qemu_chr_fe_get_driver(&s->chr);
-
- qemu_chr_fe_deinit(&s->chr);
- object_unparent(OBJECT(chr));
+ qemu_chr_fe_deinit(&s->chr, true);
}
qemu_purge_queued_packets(nc);
diff --git a/tests/test-char.c b/tests/test-char.c
index d7ecf1056a..dfe856cb85 100644
--- a/tests/test-char.c
+++ b/tests/test-char.c
@@ -97,8 +97,7 @@ static void char_stdio_test_subprocess(void)
ret = qemu_chr_fe_write(&be, (void *)"buf", 4);
g_assert_cmpint(ret, ==, 4);
- qemu_chr_fe_deinit(&be);
- object_unparent(OBJECT(chr));
+ qemu_chr_fe_deinit(&be, true);
}
static void char_stdio_test(void)
@@ -146,8 +145,7 @@ static void char_ringbuf_test(void)
g_assert_cmpstr(data, ==, "");
g_free(data);
- qemu_chr_fe_deinit(&be);
- object_unparent(OBJECT(chr));
+ qemu_chr_fe_deinit(&be, true);
/* check alias */
opts = qemu_opts_create(qemu_find_opts("chardev"), "memory-label",
@@ -231,9 +229,8 @@ static void char_mux_test(void)
g_assert_cmpint(strlen(data), !=, 0);
g_free(data);
- qemu_chr_fe_deinit(&chr_be1);
- qemu_chr_fe_deinit(&chr_be2);
- object_unparent(OBJECT(chr));
+ qemu_chr_fe_deinit(&chr_be1, false);
+ qemu_chr_fe_deinit(&chr_be2, true);
}
typedef struct SocketIdleData {
@@ -396,8 +393,7 @@ static void char_pipe_test(void)
g_assert_cmpint(fe.read_count, ==, 8);
g_assert_cmpstr(fe.read_buf, ==, "pipe-in");
- qemu_chr_fe_deinit(&be);
- object_unparent(OBJECT(chr));
+ qemu_chr_fe_deinit(&be, true);
g_assert(g_unlink(in) == 0);
g_assert(g_unlink(out) == 0);
@@ -511,8 +507,7 @@ static void char_file_test(void)
g_assert_cmpint(fe.read_count, ==, 8);
g_assert_cmpstr(fe.read_buf, ==, "fifo-in");
- qemu_chr_fe_deinit(&be);
- object_unref(OBJECT(chr));
+ qemu_chr_fe_deinit(&be, true);
g_unlink(fifo);
g_free(fifo);
}
@@ -549,7 +544,7 @@ static void char_null_test(void)
error_free_or_abort(&err);
/* deinit & reinit */
- qemu_chr_fe_deinit(&be);
+ qemu_chr_fe_deinit(&be, false);
qemu_chr_fe_init(&be, chr, &error_abort);
qemu_chr_fe_set_open(&be, true);
@@ -563,8 +558,7 @@ static void char_null_test(void)
ret = qemu_chr_fe_write(&be, (void *)"buf", 4);
g_assert_cmpint(ret, ==, 4);
- qemu_chr_fe_deinit(&be);
- object_unparent(OBJECT(chr));
+ qemu_chr_fe_deinit(&be, true);
}
static void char_invalid_test(void)
diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
index 4ca11ae28d..b3cc045765 100644
--- a/tests/vhost-user-test.c
+++ b/tests/vhost-user-test.c
@@ -488,10 +488,8 @@ static inline void test_server_connect(TestServer *server)
static gboolean _test_server_free(TestServer *server)
{
int i;
- Chardev *chr = qemu_chr_fe_get_driver(&server->chr);
- qemu_chr_fe_deinit(&server->chr);
- object_unparent(OBJECT(chr));
+ qemu_chr_fe_deinit(&server->chr, true);
for (i = 0; i < server->fds_num; i++) {
close(server->fds[i]);
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v2 14/14] char: move char devices to chardev/
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (12 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 13/14] char: make chr_fe_deinit() optionaly delete backend Marc-André Lureau
@ 2017-05-29 8:45 ` Marc-André Lureau
2017-05-29 21:31 ` Philippe Mathieu-Daudé
2017-05-29 9:23 ` [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups no-reply
14 siblings, 1 reply; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-29 8:45 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug, Marc-André Lureau
Suggested by Paolo Bonizini during series review.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
{backends => chardev}/baum.c | 0
{backends => chardev}/msmouse.c | 0
spice-qemu-char.c => chardev/spice.c | 2 +-
{backends => chardev}/testdev.c | 0
{backends => chardev}/wctablet.c | 0
MAINTAINERS | 4 +---
Makefile.objs | 4 ++--
backends/Makefile.objs | 4 ----
backends/trace-events | 10 ----------
chardev/Makefile.objs | 6 ++++++
chardev/trace-events | 18 ++++++++++++++++++
trace-events | 7 -------
12 files changed, 28 insertions(+), 27 deletions(-)
rename {backends => chardev}/baum.c (100%)
rename {backends => chardev}/msmouse.c (100%)
rename spice-qemu-char.c => chardev/spice.c (99%)
rename {backends => chardev}/testdev.c (100%)
rename {backends => chardev}/wctablet.c (100%)
create mode 100644 chardev/trace-events
diff --git a/backends/baum.c b/chardev/baum.c
similarity index 100%
rename from backends/baum.c
rename to chardev/baum.c
diff --git a/backends/msmouse.c b/chardev/msmouse.c
similarity index 100%
rename from backends/msmouse.c
rename to chardev/msmouse.c
diff --git a/spice-qemu-char.c b/chardev/spice.c
similarity index 99%
rename from spice-qemu-char.c
rename to chardev/spice.c
index 1c6c2e3969..a312078812 100644
--- a/spice-qemu-char.c
+++ b/chardev/spice.c
@@ -1,5 +1,5 @@
#include "qemu/osdep.h"
-#include "trace-root.h"
+#include "trace.h"
#include "ui/qemu-spice.h"
#include "chardev/char.h"
#include "qemu/error-report.h"
diff --git a/backends/testdev.c b/chardev/testdev.c
similarity index 100%
rename from backends/testdev.c
rename to chardev/testdev.c
diff --git a/backends/wctablet.c b/chardev/wctablet.c
similarity index 100%
rename from backends/wctablet.c
rename to chardev/wctablet.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 59e03436ad..7ee69d0e42 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1231,13 +1231,11 @@ M: Marc-André Lureau <marcandre.lureau@redhat.com>
S: Maintained
F: chardev/
F: include/chardev/
-F: backends/msmouse.c
-F: backends/testdev.c
Character Devices (Braille)
M: Samuel Thibault <samuel.thibault@ens-lyon.org>
S: Maintained
-F: backends/baum.c
+F: chardev/baum.c
Command line option argument parsing
M: Markus Armbruster <armbru@redhat.com>
diff --git a/Makefile.objs b/Makefile.objs
index 2100845ce2..0575802440 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -50,8 +50,6 @@ common-obj-$(CONFIG_LINUX) += fsdev/
common-obj-y += migration/
-common-obj-$(CONFIG_SPICE) += spice-qemu-char.o
-
common-obj-y += audio/
common-obj-y += hw/
common-obj-y += accel.o
@@ -70,6 +68,7 @@ common-obj-y += tpm.o
common-obj-$(CONFIG_SLIRP) += slirp/
common-obj-y += backends/
+common-obj-y += chardev/
common-obj-$(CONFIG_SECCOMP) += qemu-seccomp.o
@@ -121,6 +120,7 @@ trace-events-subdirs += io
trace-events-subdirs += migration
trace-events-subdirs += block
trace-events-subdirs += backends
+trace-events-subdirs += chardev
trace-events-subdirs += hw/block
trace-events-subdirs += hw/block/dataplane
trace-events-subdirs += hw/char
diff --git a/backends/Makefile.objs b/backends/Makefile.objs
index 0e0f1567b2..0400799efd 100644
--- a/backends/Makefile.objs
+++ b/backends/Makefile.objs
@@ -1,10 +1,6 @@
common-obj-y += rng.o rng-egd.o
common-obj-$(CONFIG_POSIX) += rng-random.o
-common-obj-y += msmouse.o wctablet.o testdev.o
-common-obj-$(CONFIG_BRLAPI) += baum.o
-baum.o-cflags := $(SDL_CFLAGS)
-
common-obj-$(CONFIG_TPM) += tpm.o
common-obj-y += hostmem.o hostmem-ram.o
diff --git a/backends/trace-events b/backends/trace-events
index 8c3289a3f9..e69de29bb2 100644
--- a/backends/trace-events
+++ b/backends/trace-events
@@ -1,10 +0,0 @@
-# See docs/tracing.txt for syntax documentation.
-
-# backends/wctablet.c
-wct_init(void) ""
-wct_cmd_re(void) ""
-wct_cmd_st(void) ""
-wct_cmd_sp(void) ""
-wct_cmd_ts(int input) "0x%02x"
-wct_cmd_other(const char *cmd) "%s"
-wct_speed(int speed) "%d"
diff --git a/chardev/Makefile.objs b/chardev/Makefile.objs
index e0b37dbfd8..52a8127606 100644
--- a/chardev/Makefile.objs
+++ b/chardev/Makefile.objs
@@ -16,3 +16,9 @@ chardev-obj-y += char-stdio.o
chardev-obj-y += char-udp.o
chardev-obj-$(CONFIG_WIN32) += char-win.o
chardev-obj-$(CONFIG_WIN32) += char-win-stdio.o
+
+common-obj-y += msmouse.o wctablet.o testdev.o
+common-obj-$(CONFIG_BRLAPI) += baum.o
+baum.o-cflags := $(SDL_CFLAGS)
+
+common-obj-$(CONFIG_SPICE) += spice.o
diff --git a/chardev/trace-events b/chardev/trace-events
new file mode 100644
index 0000000000..822dde668b
--- /dev/null
+++ b/chardev/trace-events
@@ -0,0 +1,18 @@
+# See docs/tracing.txt for syntax documentation.
+
+# chardev/wctablet.c
+wct_init(void) ""
+wct_cmd_re(void) ""
+wct_cmd_st(void) ""
+wct_cmd_sp(void) ""
+wct_cmd_ts(int input) "0x%02x"
+wct_cmd_other(const char *cmd) "%s"
+wct_speed(int speed) "%d"
+
+# chardev/spice.c
+spice_vmc_write(ssize_t out, int len) "spice wrote %zd of requested %d"
+spice_vmc_read(int bytes, int len) "spice read %d of requested %d"
+spice_vmc_register_interface(void *scd) "spice vmc registered interface %p"
+spice_vmc_unregister_interface(void *scd) "spice vmc unregistered interface %p"
+spice_vmc_event(int event) "spice vmc event %d"
+
diff --git a/trace-events b/trace-events
index e582d6315d..c785af294a 100644
--- a/trace-events
+++ b/trace-events
@@ -41,13 +41,6 @@ system_wakeup_request(int reason) "reason=%d"
qemu_system_shutdown_request(void) ""
qemu_system_powerdown_request(void) ""
-# spice-qemu-char.c
-spice_vmc_write(ssize_t out, int len) "spice wrote %zd of requested %d"
-spice_vmc_read(int bytes, int len) "spice read %d of requested %d"
-spice_vmc_register_interface(void *scd) "spice vmc registered interface %p"
-spice_vmc_unregister_interface(void *scd) "spice vmc unregistered interface %p"
-spice_vmc_event(int event) "spice vmc event %d"
-
# monitor.c
monitor_protocol_event_handler(uint32_t event, void *qdict) "event=%d data=%p"
monitor_protocol_event_emit(uint32_t event, void *data) "event=%d data=%p"
--
2.13.0.91.g00982b8dd
^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
` (13 preceding siblings ...)
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 14/14] char: move char devices to chardev/ Marc-André Lureau
@ 2017-05-29 9:23 ` no-reply
2017-05-30 12:09 ` [Qemu-devel] [PATCH] char: cast ARRAY_SIZE() as signed to silent warning on empty array Philippe Mathieu-Daudé
14 siblings, 1 reply; 33+ messages in thread
From: no-reply @ 2017-05-29 9:23 UTC (permalink / raw)
To: marcandre.lureau; +Cc: famz, qemu-devel, pbonzini, f4bug
Hi,
This series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.
Type: series
Subject: [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups
Message-id: 20170529084546.26500-1-marcandre.lureau@redhat.com
=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
time make docker-test-quick@centos6
time make docker-test-mingw@fedora
time make docker-test-build@min-glib
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
3f28b53 char: move char devices to chardev/
ec5b56e char: make chr_fe_deinit() optionaly delete backend
3e930bb char: rename functions that are not part of fe
d38aea4 char: move CharBackend handling in char-fe unit
364cb2a char: generalize qemu_chr_write_all()
a61ebe5 be-hci: use backend functions
299e2d0 chardev: serial & parallel declaration to own headers
108ddbe chardev: move headers to include/chardev
08b9c49 Remove/replace sysemu/char.h inclusion
7a29c6f char-win: close file handle except with console
7b62d78 char-win: rename hcom->file
aeefb52 char-win: rename win_chr_init/poll win_chr_serial_init/poll
66afe80 char-win: remove WinChardev.len
9874385 char-win: simplify win_chr_read()
=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-i0aq57qp/src/dtc'...
Submodule path 'dtc': checked out '558cd81bdd432769b59bff01240c44f82cfb1a9d'
BUILD centos6
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-i0aq57qp/src'
ARCHIVE qemu.tgz
ARCHIVE dtc.tgz
COPY RUNNER
RUN test-quick in qemu:centos6
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
ccache-3.1.6-2.el6.x86_64
epel-release-6-8.noarch
gcc-4.4.7-17.el6.x86_64
git-1.7.1-4.el6_7.1.x86_64
glib2-devel-2.28.8-5.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
make-3.81-23.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
tar-1.23-15.el6_8.x86_64
zlib-devel-1.2.3-29.el6.x86_64
Environment variables:
PACKAGES=libfdt-devel ccache tar git make gcc g++ zlib-devel glib2-devel SDL-devel pixman-devel epel-release
HOSTNAME=61ffcd087a35
TERM=xterm
MAKEFLAGS= -j8
HISTSIZE=1000
J=8
USER=root
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
LANG=en_US.UTF-8
TARGET_LIST=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES= dtc
DEBUG=
G_BROKEN_FILENAMES=1
CCACHE_HASHDIR=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install
No C++ compiler available; disabling C++ specific optional code
Install prefix /var/tmp/qemu-build/install
BIOS directory /var/tmp/qemu-build/install/share/qemu
binary directory /var/tmp/qemu-build/install/bin
library directory /var/tmp/qemu-build/install/lib
module directory /var/tmp/qemu-build/install/lib/qemu
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory /var/tmp/qemu-build/install/etc
local state directory /var/tmp/qemu-build/install/var
Manual directory /var/tmp/qemu-build/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
tcg debug enabled no
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
pixman system
SDL support yes (1.2.14)
GTK support no
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support no
GNUTLS rnd no
libgcrypt no
libgcrypt kdf no
nettle no
nettle kdf no
libtasn1 no
curses support no
virgl support no
curl support no
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support yes
VNC SASL support no
VNC JPEG support no
VNC PNG support no
xen support no
brlapi support no
bluez support no
Documentation no
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
HAX support no
RDMA support no
TCG interpreter no
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
Trace backends log
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support no
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
VxHS block device no
GEN x86_64-softmmu/config-devices.mak.tmp
GEN aarch64-softmmu/config-devices.mak.tmp
mkdir -p dtc/libfdt
mkdir -p dtc/tests
GEN config-host.h
GEN qemu-options.def
GEN qapi-types.h
GEN qmp-commands.h
GEN qapi-visit.h
GEN qapi-event.h
GEN qmp-marshal.c
GEN x86_64-softmmu/config-devices.mak
GEN qapi-types.c
GEN aarch64-softmmu/config-devices.mak
GEN qapi-visit.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN backends/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN trace-root.c
GEN qapi/trace.h
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN backends/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/srcpos.c
make[1]: flex: Command not found
BISON dtc-parser.tab.c
make[1]: bison: Command not found
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/checks.c
CHK version_gen.h
LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
LEX dtc-lexer.lex.c
BISON dtc-parser.tab.c
make[1]: flex: Command not found
make[1]: bison: Command not found
UPD version_gen.h
DEP /tmp/qemu-test/src/dtc/util.c
LEX convert-dtsv0-lexer.lex.c
BISON dtc-parser.tab.c
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
make[1]: bison: Command not found
make[1]: flex: Command not found
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
BISON dtc-parser.tab.c
make[1]: bison: Command not found
GEN qga/qapi-generated/qga-qapi-types.h
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qapi-visit.c
GEN qga/qapi-generated/qga-qmp-marshal.c
CC qmp-introspect.o
GEN qga/qapi-generated/qga-qapi-types.c
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/opts-visitor.o
CC qapi/string-output-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qint.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qfloat.o
CC qobject/qbool.o
CC qobject/qjson.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/qobject.o
CC trace/control.o
CC qobject/json-parser.o
CC util/osdep.o
CC trace/qmp.o
CC util/cutils.o
CC util/unicode.o
CC util/lockcnt.o
CC util/bufferiszero.o
CC util/qemu-timer-common.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-posix.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/qemu-openpty.o
CC util/oslib-posix.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/error.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/uri.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/throttle.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-sleep.o
CC util/qemu-coroutine-io.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC util/systemd.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC backends/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/mem/trace.o
CC hw/isa/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/s390x/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC ui/trace.o
CC net/trace.o
CC audio/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/replay.o
CC stubs/qtest.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/slirp.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/qmp_pc_dimm_device_list.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC contrib/ivshmem-client/ivshmem-client.o
CC stubs/xen-hvm.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
CC qemu-nbd.o
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC block/raw-format.o
CC replication.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cache.o
CC block/qcow2-snapshot.o
CC block/qed.o
CC block/qcow2-cluster.o
CC block/qed-gencb.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/vhdx-endian.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/blkverify.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/null.o
CC block/file-posix.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/nbd.o
CC block/nbd-client.o
CC block/throttle-groups.o
CC block/sheepdog.o
CC block/dirty-bitmap.o
CC block/accounting.o
CC block/backup.o
CC block/write-threshold.o
CC block/replication.o
CC block/crypto.o
CC nbd/client.o
CC nbd/server.o
CC crypto/hash.o
CC nbd/common.o
CC crypto/init.o
CC crypto/hmac.o
CC crypto/hash-glib.o
CC crypto/aes.o
CC crypto/hmac-glib.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscredsanon.o
CC crypto/tlscreds.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/random-platform.o
CC crypto/secret.o
CC crypto/pbkdf.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/xts.o
CC crypto/afsplit.o
CC crypto/block.o
CC crypto/block-qcow.o
CC crypto/block-luks.o
CC io/channel.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-tls.o
CC io/channel-watch.o
CC io/channel-websock.o
CC io/dns-resolver.o
CC io/task.o
CC io/channel-util.o
CC qom/container.o
CC qom/object.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
GEN qemu-img-cmds.h
CC qemu-io.o
CC qemu-bridge-helper.o
CC blockdev.o
CC blockdev-nbd.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC accel.o
CC bt-host.o
CC os-posix.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC io/channel-buffer.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/ossaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/arm.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC fsdev/qemu-fsdev-opts.o
CC fsdev/qemu-fsdev-throttle.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/cs4231a.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/pcspk.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/ecc.o
CC hw/block/onenand.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/sdp.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/char/ipoctal232.o
CC hw/bt/hci-csr.o
CC hw/char/parallel.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/cadence_uart.o
CC hw/char/debugcon.o
CC hw/char/imx_serial.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/register.o
CC hw/core/qdev-properties-system.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/vga-pci.o
CC hw/display/ssd0323.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/input/virtio-input-host.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/imx_avic.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/mem/pc-dimm.o
CC hw/isa/apm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/tmp105.o
CC hw/misc/max111x.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/a9scu.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/arm11scu.o
CC hw/net/ne2000.o
CC hw/net/eepro100.o
CC hw/net/pcnet.o
CC hw/net/pcnet-pci.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e.o
CC hw/net/e1000e_core.o
CC hw/net/vmxnet3.o
CC hw/net/rtl8139.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/cadence_gem.o
CC hw/net/stellaris_enet.o
CC hw/net/ftgmac100.o
CC hw/net/rocker/rocker.o
CC hw/net/rocker/rocker_desc.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/nvram/fw_cfg.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/q35.o
CC hw/pci-host/gpex.o
CC hw/pci/pci_bridge.o
CC hw/pci-host/piix.o
CC hw/pci/pci.o
CC hw/pci/msi.o
CC hw/pci/msix.o
CC hw/pci/shpc.o
CC hw/pci/slotid_cap.o
CC hw/pci/pci_host.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pcie_port.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/mptsas.o
CC hw/scsi/mptconfig.o
CC hw/scsi/mptendian.o
CC hw/scsi/megasas.o
CC hw/scsi/vmw_pvscsi.o
CC hw/scsi/esp-pci.o
CC hw/sd/pl181.o
CC hw/scsi/esp.o
CC hw/sd/ssi-sd.o
CC hw/sd/sd.o
CC hw/sd/sdhci.o
CC hw/sd/core.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/timer/arm_timer.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/ssi/aspeed_smc.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/twl92230.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/tpm/tpm_tis.o
CC hw/tpm/tpm_passthrough.o
CC hw/usb/core.o
CC hw/tpm/tpm_util.o
CC hw/usb/combined-packet.o
CC hw/usb/bus.o
CC hw/usb/desc-msos.o
CC hw/usb/desc.o
CC hw/usb/libhw.o
CC hw/usb/hcd-ohci.o
CC hw/usb/hcd-uhci.o
CC hw/usb/hcd-ehci.o
CC hw/usb/hcd-ehci-pci.o
CC hw/usb/hcd-ehci-sysbus.o
CC hw/usb/hcd-xhci.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-network.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/dev-mtp.o
CC hw/virtio/virtio-pci.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-mmio.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/vhost-stub.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_ib700.o
CC hw/watchdog/wdt_aspeed.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/colo-comm.o
CC migration/savevm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/qemu-file-channel.o
CC migration/xbzrle.o
CC migration/postcopy-ram.o
CC migration/qjson.o
CC migration/block.o
CC net/net.o
CC net/queue.o
CC net/checksum.o
CC net/util.o
CC net/hub.o
CC net/socket.o
CC net/dump.o
CC net/eth.o
CC net/l2tpv3.o
CC net/vhost-user.o
CC net/slirp.o
CC net/filter.o
CC net/filter-mirror.o
CC net/filter-buffer.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap.o
CC net/tap-linux.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
/tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
/tmp/qemu-test/src/replay/replay-internal.c:65: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/ip6_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/mbuf.o
CC slirp/misc.o
CC slirp/slirp.o
CC slirp/socket.o
CC slirp/sbuf.o
CC slirp/tcp_input.o
/tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/qemu-pixman.o
CC ui/cursor.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/sdl.o
CC ui/input-linux.o
CC ui/sdl_zoom.o
CC ui/x_keymap.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-ws.o
CC ui/vnc-jobs.o
CC chardev/char.o
CC chardev/char-fd.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-parallel.o
CC chardev/char-pipe.o
CC chardev/char-pty.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
AS optionrom/multiboot.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
cc: unrecognized option '-no-integrated-as'
cc: unrecognized option '-no-integrated-as'
AS optionrom/kvmvapic.o
BUILD optionrom/multiboot.img
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/kvmvapic.img
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot.raw
BUILD optionrom/linuxboot_dma.raw
BUILD optionrom/kvmvapic.raw
LINK tests/qemu-iotests/socket_scm_helper
CC qga/commands.o
CC qga/guest-agent-command-state.o
CC qga/main.o
CC qga/commands-posix.o
CC qga/channel-posix.o
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qapi-visit.o
CC qga/qapi-generated/qga-qmp-marshal.o
AR libqemuutil.a
AR libqemustub.a
CC qemu-img.o
SIGN optionrom/linuxboot_dma.bin
SIGN optionrom/multiboot.bin
SIGN optionrom/kvmvapic.bin
SIGN optionrom/linuxboot.bin
LINK qemu-io
LINK qemu-bridge-helper
LINK qemu-ga
LINK ivshmem-client
LINK ivshmem-server
LINK qemu-nbd
LINK qemu-img
GEN x86_64-softmmu/hmp-commands-info.h
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/config-target.h
GEN aarch64-softmmu/hmp-commands-info.h
GEN aarch64-softmmu/config-target.h
GEN aarch64-softmmu/hmp-commands.h
CC aarch64-softmmu/exec.o
CC aarch64-softmmu/cpu-exec.o
CC aarch64-softmmu/translate-common.o
CC aarch64-softmmu/translate-all.o
CC aarch64-softmmu/cpu-exec-common.o
CC aarch64-softmmu/tcg/tcg.o
CC aarch64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/translate-all.o
CC x86_64-softmmu/cpu-exec.o
CC x86_64-softmmu/translate-common.o
CC x86_64-softmmu/cpu-exec-common.o
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/tcg/tcg-op.o
CC aarch64-softmmu/tcg/optimize.o
CC x86_64-softmmu/tcg/optimize.o
CC x86_64-softmmu/tcg/tcg-common.o
CC aarch64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/fpu/softfloat.o
CC aarch64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/disas.o
CC x86_64-softmmu/tcg-runtime.o
GEN x86_64-softmmu/gdbstub-xml.c
CC x86_64-softmmu/hax-stub.o
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/cpus.o
CC x86_64-softmmu/monitor.o
CC aarch64-softmmu/disas.o
CC x86_64-softmmu/gdbstub.o
CC x86_64-softmmu/balloon.o
CC aarch64-softmmu/tcg-runtime.o
CC x86_64-softmmu/ioport.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/hax-stub.o
CC aarch64-softmmu/kvm-stub.o
CC aarch64-softmmu/arch_init.o
CC aarch64-softmmu/cpus.o
CC aarch64-softmmu/monitor.o
CC aarch64-softmmu/gdbstub.o
CC x86_64-softmmu/numa.o
CC aarch64-softmmu/balloon.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/qtest.o
CC aarch64-softmmu/bootdevice.o
CC aarch64-softmmu/memory.o
CC aarch64-softmmu/cputlb.o
CC x86_64-softmmu/qtest.o
CC x86_64-softmmu/bootdevice.o
CC x86_64-softmmu/kvm-all.o
CC aarch64-softmmu/memory_mapping.o
CC aarch64-softmmu/dump.o
CC aarch64-softmmu/migration/ram.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/memory.o
CC x86_64-softmmu/cputlb.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC x86_64-softmmu/memory_mapping.o
CC x86_64-softmmu/dump.o
CC x86_64-softmmu/migration/ram.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/core/nmi.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC aarch64-softmmu/hw/core/nmi.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC aarch64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC x86_64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC x86_64-softmmu/hw/cpu/core.o
CC aarch64-softmmu/hw/cpu/core.o
CC x86_64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC aarch64-softmmu/hw/display/dpcd.o
CC x86_64-softmmu/hw/intc/apic.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC x86_64-softmmu/hw/misc/vmport.o
CC aarch64-softmmu/hw/dma/soc_dma.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC aarch64-softmmu/hw/dma/bcm2835_dma.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC aarch64-softmmu/hw/gpio/bcm2835_gpio.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
CC x86_64-softmmu/hw/misc/ivshmem.o
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC aarch64-softmmu/hw/intc/armv7m_nvic.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
CC aarch64-softmmu/hw/intc/omap_intc.o
CC aarch64-softmmu/hw/intc/bcm2835_ic.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC x86_64-softmmu/hw/misc/edu.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/hw/misc/hyperv_testdev.o
CC aarch64-softmmu/hw/intc/bcm2836_control.o
CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
CC aarch64-softmmu/hw/intc/aspeed_vic.o
CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/misc/ivshmem.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
CC aarch64-softmmu/hw/misc/cbus.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC aarch64-softmmu/hw/misc/exynos4210_clk.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC aarch64-softmmu/hw/misc/omap_l4.o
CC aarch64-softmmu/hw/misc/omap_sdrc.o
CC aarch64-softmmu/hw/misc/omap_tap.o
CC x86_64-softmmu/hw/scsi/vhost-scsi-common.o
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC aarch64-softmmu/hw/misc/bcm2835_rng.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC x86_64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/hw/misc/edu.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC aarch64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/scsi/vhost-scsi-common.o
CC aarch64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o
CC aarch64-softmmu/hw/ssi/omap_spi.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC x86_64-softmmu/hw/vfio/common.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.o
CC aarch64-softmmu/hw/timer/exynos4210_rtc.o
CC x86_64-softmmu/hw/vfio/pci.o
CC aarch64-softmmu/hw/timer/omap_gptimer.o
CC x86_64-softmmu/hw/vfio/pci-quirks.o
CC x86_64-softmmu/hw/vfio/platform.o
CC x86_64-softmmu/hw/vfio/spapr.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC x86_64-softmmu/hw/virtio/vhost.o
CC aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/timer/omap_synctimer.o
CC x86_64-softmmu/hw/virtio/vhost-backend.o
CC x86_64-softmmu/hw/virtio/vhost-user.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC x86_64-softmmu/hw/virtio/vhost-vsock.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/vfio/common.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC aarch64-softmmu/hw/vfio/pci.o
CC aarch64-softmmu/hw/vfio/pci-quirks.o
CC x86_64-softmmu/hw/i386/pc.o
CC aarch64-softmmu/hw/vfio/platform.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC aarch64-softmmu/hw/vfio/calxeda-xgmac.o
/tmp/qemu-test/src/hw/i386/pc_piix.c: In function ‘igd_passthrough_isa_bridge_create’:
/tmp/qemu-test/src/hw/i386/pc_piix.c:1067: warning: ‘pch_rev_id’ may be used uninitialized in this function
CC aarch64-softmmu/hw/vfio/spapr.o
CC x86_64-softmmu/hw/i386/intel_iommu.o
CC aarch64-softmmu/hw/vfio/amd-xgbe.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC aarch64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/hw/virtio/virtio-balloon.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC aarch64-softmmu/hw/virtio/vhost.o
CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o
CC aarch64-softmmu/hw/virtio/vhost-backend.o
CC x86_64-softmmu/hw/i386/kvm/clock.o
CC aarch64-softmmu/hw/virtio/vhost-user.o
CC x86_64-softmmu/hw/i386/kvm/apic.o
/tmp/qemu-test/src/hw/i386/acpi-build.c: In function ‘build_append_pci_bus_devices’:
/tmp/qemu-test/src/hw/i386/acpi-build.c:525: warning: ‘notify_method’ may be used uninitialized in this function
CC x86_64-softmmu/hw/i386/kvm/i8259.o
CC x86_64-softmmu/hw/i386/kvm/ioapic.o
CC x86_64-softmmu/hw/i386/kvm/i8254.o
CC aarch64-softmmu/hw/virtio/vhost-vsock.o
CC x86_64-softmmu/hw/i386/kvm/pci-assign.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC x86_64-softmmu/target/i386/translate.o
CC x86_64-softmmu/target/i386/helper.o
CC aarch64-softmmu/hw/arm/boot.o
CC x86_64-softmmu/target/i386/cpu.o
CC aarch64-softmmu/hw/arm/collie.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC aarch64-softmmu/hw/arm/exynos4_boards.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC x86_64-softmmu/target/i386/cc_helper.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC x86_64-softmmu/target/i386/int_helper.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC aarch64-softmmu/hw/arm/gumstix.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC aarch64-softmmu/hw/arm/highbank.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC aarch64-softmmu/hw/arm/digic_boards.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC aarch64-softmmu/hw/arm/integratorcp.o
CC aarch64-softmmu/hw/arm/mainstone.o
CC aarch64-softmmu/hw/arm/musicpal.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC x86_64-softmmu/target/i386/machine.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC x86_64-softmmu/target/i386/monitor.o
CC x86_64-softmmu/target/i386/kvm.o
CC x86_64-softmmu/target/i386/hyperv.o
CC aarch64-softmmu/hw/arm/nseries.o
CC aarch64-softmmu/hw/arm/omap_sx1.o
GEN trace/generated-helpers.c
CC x86_64-softmmu/trace/control-target.o
CC x86_64-softmmu/gdbstub-xml.o
CC x86_64-softmmu/trace/generated-helpers.o
CC aarch64-softmmu/hw/arm/palm.o
CC aarch64-softmmu/hw/arm/realview.o
CC aarch64-softmmu/hw/arm/spitz.o
CC aarch64-softmmu/hw/arm/stellaris.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/versatilepb.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/omap1.o
CC aarch64-softmmu/hw/arm/omap2.o
CC aarch64-softmmu/hw/arm/strongarm.o
CC aarch64-softmmu/hw/arm/allwinner-a10.o
CC aarch64-softmmu/hw/arm/cubieboard.o
LINK x86_64-softmmu/qemu-system-x86_64
CC aarch64-softmmu/hw/arm/bcm2835_peripherals.o
CC aarch64-softmmu/hw/arm/bcm2836.o
CC aarch64-softmmu/hw/arm/raspi.o
CC aarch64-softmmu/hw/arm/stm32f205_soc.o
CC aarch64-softmmu/hw/arm/xlnx-zynqmp.o
CC aarch64-softmmu/hw/arm/xlnx-ep108.o
CC aarch64-softmmu/hw/arm/fsl-imx25.o
CC aarch64-softmmu/hw/arm/imx25_pdk.o
CC aarch64-softmmu/hw/arm/fsl-imx31.o
CC aarch64-softmmu/hw/arm/kzm.o
CC aarch64-softmmu/hw/arm/fsl-imx6.o
CC aarch64-softmmu/hw/arm/sabrelite.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/target/arm/arm-semi.o
CC aarch64-softmmu/target/arm/machine.o
CC aarch64-softmmu/target/arm/psci.o
CC aarch64-softmmu/target/arm/arch_dump.o
CC aarch64-softmmu/target/arm/monitor.o
CC aarch64-softmmu/target/arm/kvm-stub.o
CC aarch64-softmmu/target/arm/op_helper.o
CC aarch64-softmmu/target/arm/translate.o
CC aarch64-softmmu/target/arm/helper.o
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/crypto_helper.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
CC aarch64-softmmu/trace/control-target.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
/tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘handle_shri_with_rndacc’:
/tmp/qemu-test/src/target/arm/translate-a64.c:6359: warning: ‘tcg_src_hi’ may be used uninitialized in this function
/tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘disas_simd_scalar_two_reg_misc’:
/tmp/qemu-test/src/target/arm/translate-a64.c:8086: warning: ‘rmode’ may be used uninitialized in this function
LINK aarch64-softmmu/qemu-system-aarch64
LEX convert-dtsv0-lexer.lex.c
BISON dtc-parser.tab.c
LEX dtc-lexer.lex.c
make[1]: flex: Command not found
make[1]: bison: Command not found
make[1]: flex: Command not found
TEST tests/qapi-schema/alternate-array.out
TEST tests/qapi-schema/alternate-any.out
TEST tests/qapi-schema/alternate-clash.out
TEST tests/qapi-schema/alternate-base.out
TEST tests/qapi-schema/alternate-conflict-dict.out
TEST tests/qapi-schema/alternate-empty.out
TEST tests/qapi-schema/alternate-nested.out
TEST tests/qapi-schema/alternate-conflict-string.out
TEST tests/qapi-schema/alternate-unknown.out
TEST tests/qapi-schema/args-alternate.out
TEST tests/qapi-schema/args-any.out
TEST tests/qapi-schema/args-bad-boxed.out
TEST tests/qapi-schema/args-array-empty.out
TEST tests/qapi-schema/args-boxed-empty.out
TEST tests/qapi-schema/args-boxed-anon.out
TEST tests/qapi-schema/args-array-unknown.out
TEST tests/qapi-schema/args-boxed-string.out
TEST tests/qapi-schema/args-int.out
TEST tests/qapi-schema/args-invalid.out
TEST tests/qapi-schema/args-member-array-bad.out
TEST tests/qapi-schema/args-member-case.out
TEST tests/qapi-schema/args-member-unknown.out
TEST tests/qapi-schema/args-name-clash.out
TEST tests/qapi-schema/args-union.out
TEST tests/qapi-schema/args-unknown.out
TEST tests/qapi-schema/bad-base.out
TEST tests/qapi-schema/bad-data.out
TEST tests/qapi-schema/bad-ident.out
TEST tests/qapi-schema/bad-type-bool.out
TEST tests/qapi-schema/bad-type-dict.out
TEST tests/qapi-schema/bad-type-int.out
TEST tests/qapi-schema/base-cycle-direct.out
TEST tests/qapi-schema/base-cycle-indirect.out
TEST tests/qapi-schema/command-int.out
TEST tests/qapi-schema/comments.out
TEST tests/qapi-schema/doc-bad-alternate-member.out
TEST tests/qapi-schema/doc-bad-command-arg.out
TEST tests/qapi-schema/doc-bad-symbol.out
TEST tests/qapi-schema/doc-bad-union-member.out
TEST tests/qapi-schema/doc-before-include.out
TEST tests/qapi-schema/doc-before-pragma.out
TEST tests/qapi-schema/doc-duplicated-arg.out
TEST tests/qapi-schema/doc-duplicated-return.out
TEST tests/qapi-schema/doc-duplicated-since.out
TEST tests/qapi-schema/doc-empty-arg.out
TEST tests/qapi-schema/doc-empty-section.out
TEST tests/qapi-schema/doc-empty-symbol.out
TEST tests/qapi-schema/doc-good.out
TEST tests/qapi-schema/doc-interleaved-section.out
TEST tests/qapi-schema/doc-invalid-end.out
TEST tests/qapi-schema/doc-invalid-end2.out
TEST tests/qapi-schema/doc-invalid-return.out
TEST tests/qapi-schema/doc-invalid-section.out
TEST tests/qapi-schema/doc-invalid-start.out
TEST tests/qapi-schema/doc-missing.out
TEST tests/qapi-schema/doc-missing-colon.out
TEST tests/qapi-schema/doc-missing-expr.out
TEST tests/qapi-schema/doc-missing-space.out
TEST tests/qapi-schema/doc-no-symbol.out
TEST tests/qapi-schema/double-data.out
TEST tests/qapi-schema/double-type.out
TEST tests/qapi-schema/duplicate-key.out
TEST tests/qapi-schema/empty.out
TEST tests/qapi-schema/enum-bad-name.out
TEST tests/qapi-schema/enum-bad-prefix.out
TEST tests/qapi-schema/enum-clash-member.out
TEST tests/qapi-schema/enum-dict-member.out
TEST tests/qapi-schema/enum-int-member.out
TEST tests/qapi-schema/enum-member-case.out
TEST tests/qapi-schema/enum-missing-data.out
TEST tests/qapi-schema/enum-wrong-data.out
TEST tests/qapi-schema/escape-outside-string.out
TEST tests/qapi-schema/escape-too-big.out
TEST tests/qapi-schema/escape-too-short.out
TEST tests/qapi-schema/event-boxed-empty.out
TEST tests/qapi-schema/event-case.out
TEST tests/qapi-schema/event-nest-struct.out
TEST tests/qapi-schema/flat-union-array-branch.out
TEST tests/qapi-schema/flat-union-bad-base.out
TEST tests/qapi-schema/flat-union-bad-discriminator.out
TEST tests/qapi-schema/flat-union-base-any.out
TEST tests/qapi-schema/flat-union-base-union.out
TEST tests/qapi-schema/flat-union-clash-member.out
TEST tests/qapi-schema/flat-union-empty.out
TEST tests/qapi-schema/flat-union-incomplete-branch.out
TEST tests/qapi-schema/flat-union-inline.out
TEST tests/qapi-schema/flat-union-int-branch.out
TEST tests/qapi-schema/flat-union-invalid-branch-key.out
TEST tests/qapi-schema/flat-union-invalid-discriminator.out
TEST tests/qapi-schema/flat-union-no-base.out
TEST tests/qapi-schema/flat-union-optional-discriminator.out
TEST tests/qapi-schema/flat-union-string-discriminator.out
TEST tests/qapi-schema/funny-char.out
TEST tests/qapi-schema/ident-with-escape.out
TEST tests/qapi-schema/include-before-err.out
TEST tests/qapi-schema/include-cycle.out
TEST tests/qapi-schema/include-extra-junk.out
TEST tests/qapi-schema/include-format-err.out
TEST tests/qapi-schema/include-nested-err.out
TEST tests/qapi-schema/include-no-file.out
TEST tests/qapi-schema/include-non-file.out
TEST tests/qapi-schema/include-relpath.out
TEST tests/qapi-schema/include-repetition.out
TEST tests/qapi-schema/include-self-cycle.out
TEST tests/qapi-schema/include-simple.out
TEST tests/qapi-schema/indented-expr.out
TEST tests/qapi-schema/leading-comma-list.out
TEST tests/qapi-schema/leading-comma-object.out
TEST tests/qapi-schema/missing-colon.out
TEST tests/qapi-schema/missing-comma-list.out
TEST tests/qapi-schema/missing-comma-object.out
TEST tests/qapi-schema/missing-type.out
TEST tests/qapi-schema/nested-struct-data.out
TEST tests/qapi-schema/non-objects.out
TEST tests/qapi-schema/pragma-doc-required-crap.out
TEST tests/qapi-schema/pragma-extra-junk.out
TEST tests/qapi-schema/pragma-name-case-whitelist-crap.out
TEST tests/qapi-schema/pragma-non-dict.out
TEST tests/qapi-schema/pragma-returns-whitelist-crap.out
TEST tests/qapi-schema/qapi-schema-test.out
TEST tests/qapi-schema/quoted-structural-chars.out
TEST tests/qapi-schema/redefined-builtin.out
TEST tests/qapi-schema/redefined-command.out
TEST tests/qapi-schema/redefined-event.out
TEST tests/qapi-schema/redefined-type.out
TEST tests/qapi-schema/reserved-command-q.out
TEST tests/qapi-schema/reserved-enum-q.out
TEST tests/qapi-schema/reserved-member-has.out
TEST tests/qapi-schema/reserved-member-q.out
TEST tests/qapi-schema/reserved-member-u.out
TEST tests/qapi-schema/reserved-member-underscore.out
TEST tests/qapi-schema/reserved-type-kind.out
TEST tests/qapi-schema/reserved-type-list.out
TEST tests/qapi-schema/returns-alternate.out
TEST tests/qapi-schema/returns-array-bad.out
TEST tests/qapi-schema/returns-dict.out
TEST tests/qapi-schema/returns-unknown.out
TEST tests/qapi-schema/returns-whitelist.out
TEST tests/qapi-schema/struct-base-clash-deep.out
TEST tests/qapi-schema/struct-base-clash.out
TEST tests/qapi-schema/struct-data-invalid.out
TEST tests/qapi-schema/struct-member-invalid.out
TEST tests/qapi-schema/trailing-comma-list.out
TEST tests/qapi-schema/trailing-comma-object.out
TEST tests/qapi-schema/type-bypass-bad-gen.out
TEST tests/qapi-schema/unclosed-list.out
TEST tests/qapi-schema/unclosed-object.out
TEST tests/qapi-schema/unclosed-string.out
TEST tests/qapi-schema/unicode-str.out
TEST tests/qapi-schema/union-base-empty.out
TEST tests/qapi-schema/union-base-no-discriminator.out
TEST tests/qapi-schema/union-branch-case.out
TEST tests/qapi-schema/union-clash-branches.out
TEST tests/qapi-schema/union-empty.out
TEST tests/qapi-schema/union-optional-branch.out
TEST tests/qapi-schema/union-invalid-base.out
TEST tests/qapi-schema/union-unknown.out
TEST tests/qapi-schema/unknown-escape.out
TEST tests/qapi-schema/unknown-expr-key.out
CC tests/check-qdict.o
GEN tests/qapi-schema/doc-good.test.texi
CC tests/test-char.o
CC tests/check-qfloat.o
CC tests/check-qint.o
CC tests/check-qstring.o
CC tests/check-qlist.o
CC tests/check-qnull.o
CC tests/check-qjson.o
CC tests/test-qobject-output-visitor.o
GEN tests/test-qapi-visit.c
GEN tests/test-qapi-types.c
GEN tests/test-qapi-event.c
GEN tests/test-qmp-introspect.c
CC tests/test-clone-visitor.o
CC tests/test-qobject-input-visitor.o
CC tests/test-qmp-commands.o
GEN tests/test-qmp-marshal.c
CC tests/test-string-input-visitor.o
CC tests/test-string-output-visitor.o
CC tests/test-qmp-event.o
CC tests/test-opts-visitor.o
CC tests/test-coroutine.o
CC tests/iothread.o
CC tests/test-iov.o
CC tests/test-visitor-serialization.o
CC tests/test-aio-multithread.o
CC tests/test-aio.o
CC tests/test-throttle.o
CC tests/test-hbitmap.o
CC tests/test-thread-pool.o
CC tests/test-blockjob.o
CC tests/test-blockjob-txn.o
CC tests/test-x86-cpuid.o
CC tests/test-xbzrle.o
CC tests/test-vmstate.o
CC tests/test-shift128.o
CC tests/test-mul64.o
CC tests/test-cutils.o
CC tests/test-int128.o
CC tests/rcutorture.o
CC tests/test-rcu-list.o
CC tests/test-qdist.o
CC tests/test-qht-par.o
/tmp/qemu-test/src/tests/test-int128.c:180: warning: ‘__noclone__’ attribute directive ignored
CC tests/test-qht.o
CC tests/qht-bench.o
CC tests/test-bitops.o
CC tests/check-qom-interface.o
CC tests/test-bitcnt.o
CC tests/check-qom-proplist.o
CC tests/test-qemu-opts.o
CC tests/test-keyval.o
CC tests/test-write-threshold.o
CC tests/test-crypto-hash.o
CC tests/test-crypto-hmac.o
CC tests/test-crypto-cipher.o
CC tests/libqtest.o
CC tests/test-crypto-secret.o
CC tests/test-timed-average.o
CC tests/test-io-task.o
CC tests/test-qga.o
CC tests/test-io-channel-socket.o
CC tests/io-channel-helpers.o
CC tests/test-io-channel-file.o
CC tests/test-io-channel-command.o
CC tests/test-io-channel-buffer.o
CC tests/test-base64.o
CC tests/test-crypto-ivgen.o
CC tests/test-crypto-afsplit.o
CC tests/test-crypto-xts.o
CC tests/test-crypto-block.o
CC tests/test-logging.o
CC tests/test-replication.o
CC tests/test-bufferiszero.o
CC tests/test-uuid.o
CC tests/ptimer-test.o
CC tests/ptimer-test-stubs.o
CC tests/test-qapi-util.o
CC tests/vhost-user-test.o
CC tests/libqos/pci.o
CC tests/libqos/fw_cfg.o
CC tests/libqos/malloc.o
CC tests/libqos/i2c.o
CC tests/libqos/libqos.o
CC tests/libqos/malloc-spapr.o
CC tests/libqos/libqos-spapr.o
CC tests/libqos/rtas.o
CC tests/libqos/pci-spapr.o
CC tests/libqos/pci-pc.o
CC tests/libqos/malloc-pc.o
CC tests/libqos/libqos-pc.o
CC tests/libqos/ahci.o
CC tests/libqos/virtio.o
CC tests/libqos/virtio-pci.o
CC tests/libqos/virtio-mmio.o
CC tests/libqos/malloc-generic.o
CC tests/endianness-test.o
CC tests/fdc-test.o
CC tests/ide-test.o
CC tests/ahci-test.o
/tmp/qemu-test/src/tests/ide-test.c: In function ‘cdrom_pio_impl’:
/tmp/qemu-test/src/tests/ide-test.c:803: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
/tmp/qemu-test/src/tests/ide-test.c: In function ‘test_cdrom_dma’:
/tmp/qemu-test/src/tests/ide-test.c:899: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
CC tests/hd-geo-test.o
CC tests/boot-order-test.o
CC tests/bios-tables-test.o
CC tests/boot-sector.o
CC tests/acpi-utils.o
CC tests/boot-serial-test.o
CC tests/pxe-test.o
CC tests/rtc-test.o
CC tests/ipmi-kcs-test.o
CC tests/ipmi-bt-test.o
CC tests/i440fx-test.o
CC tests/fw_cfg-test.o
CC tests/wdt_ib700-test.o
CC tests/drive_del-test.o
CC tests/tco-test.o
CC tests/e1000-test.o
CC tests/e1000e-test.o
CC tests/rtl8139-test.o
CC tests/pcnet-test.o
CC tests/ne2000-test.o
CC tests/nvme-test.o
CC tests/eepro100-test.o
CC tests/ac97-test.o
CC tests/es1370-test.o
CC tests/virtio-net-test.o
CC tests/virtio-balloon-test.o
CC tests/virtio-blk-test.o
CC tests/virtio-rng-test.o
CC tests/virtio-scsi-test.o
CC tests/virtio-console-test.o
CC tests/virtio-serial-test.o
CC tests/tpci200-test.o
CC tests/ipoctal232-test.o
CC tests/display-vga-test.o
CC tests/intel-hda-test.o
CC tests/ivshmem-test.o
CC tests/vmxnet3-test.o
CC tests/pvpanic-test.o
CC tests/i82801b11-test.o
CC tests/ioh3420-test.o
CC tests/usb-hcd-ohci-test.o
CC tests/libqos/usb.o
CC tests/usb-hcd-uhci-test.o
CC tests/usb-hcd-ehci-test.o
CC tests/usb-hcd-xhci-test.o
CC tests/q35-test.o
CC tests/pc-cpu-test.o
CC tests/test-netfilter.o
CC tests/test-filter-mirror.o
CC tests/test-filter-redirector.o
CC tests/postcopy-test.o
CC tests/test-x86-cpuid-compat.o
CC tests/numa-test.o
CC tests/device-introspect-test.o
CC tests/qmp-test.o
CC tests/qom-test.o
CC tests/test-hmp.o
LINK tests/check-qdict
LINK tests/test-char
LINK tests/check-qfloat
LINK tests/check-qint
LINK tests/check-qstring
LINK tests/check-qlist
LINK tests/check-qnull
LINK tests/check-qjson
CC tests/test-qapi-visit.o
CC tests/test-qapi-types.o
CC tests/test-qapi-event.o
CC tests/test-qmp-introspect.o
CC tests/test-qmp-marshal.o
LINK tests/test-coroutine
LINK tests/test-iov
LINK tests/test-aio
LINK tests/test-aio-multithread
LINK tests/test-throttle
LINK tests/test-thread-pool
LINK tests/test-hbitmap
LINK tests/test-blockjob
LINK tests/test-blockjob-txn
LINK tests/test-x86-cpuid
LINK tests/test-xbzrle
LINK tests/test-vmstate
LINK tests/test-cutils
LINK tests/test-shift128
LINK tests/test-mul64
LINK tests/test-int128
LINK tests/rcutorture
LINK tests/test-rcu-list
LINK tests/test-qdist
LINK tests/test-qht
LINK tests/qht-bench
LINK tests/test-bitops
LINK tests/test-bitcnt
LINK tests/check-qom-interface
LINK tests/check-qom-proplist
LINK tests/test-qemu-opts
LINK tests/test-keyval
LINK tests/test-write-threshold
LINK tests/test-crypto-hash
LINK tests/test-crypto-hmac
LINK tests/test-crypto-cipher
LINK tests/test-crypto-secret
LINK tests/test-qga
LINK tests/test-timed-average
LINK tests/test-io-task
LINK tests/test-io-channel-socket
LINK tests/test-io-channel-file
LINK tests/test-io-channel-command
LINK tests/test-io-channel-buffer
LINK tests/test-base64
LINK tests/test-crypto-ivgen
LINK tests/test-crypto-afsplit
LINK tests/test-crypto-xts
LINK tests/test-crypto-block
LINK tests/test-logging
LINK tests/test-replication
LINK tests/test-bufferiszero
LINK tests/test-uuid
LINK tests/ptimer-test
LINK tests/test-qapi-util
LINK tests/vhost-user-test
LINK tests/endianness-test
LINK tests/fdc-test
LINK tests/ide-test
LINK tests/ahci-test
LINK tests/hd-geo-test
LINK tests/boot-order-test
LINK tests/bios-tables-test
LINK tests/boot-serial-test
LINK tests/pxe-test
LINK tests/rtc-test
LINK tests/ipmi-kcs-test
LINK tests/ipmi-bt-test
LINK tests/i440fx-test
LINK tests/fw_cfg-test
LINK tests/drive_del-test
LINK tests/wdt_ib700-test
LINK tests/tco-test
LINK tests/e1000-test
LINK tests/e1000e-test
LINK tests/rtl8139-test
LINK tests/pcnet-test
LINK tests/eepro100-test
LINK tests/ne2000-test
LINK tests/nvme-test
LINK tests/ac97-test
LINK tests/es1370-test
LINK tests/virtio-net-test
LINK tests/virtio-balloon-test
LINK tests/virtio-blk-test
LINK tests/virtio-rng-test
LINK tests/virtio-scsi-test
LINK tests/virtio-serial-test
LINK tests/virtio-console-test
LINK tests/tpci200-test
LINK tests/ipoctal232-test
LINK tests/display-vga-test
LINK tests/intel-hda-test
LINK tests/ivshmem-test
LINK tests/vmxnet3-test
LINK tests/pvpanic-test
LINK tests/i82801b11-test
LINK tests/ioh3420-test
LINK tests/usb-hcd-ohci-test
LINK tests/usb-hcd-uhci-test
LINK tests/usb-hcd-ehci-test
LINK tests/usb-hcd-xhci-test
LINK tests/pc-cpu-test
LINK tests/q35-test
LINK tests/test-netfilter
LINK tests/test-filter-mirror
LINK tests/test-filter-redirector
LINK tests/postcopy-test
LINK tests/test-x86-cpuid-compat
LINK tests/numa-test
LINK tests/qmp-test
LINK tests/device-introspect-test
LINK tests/qom-test
LINK tests/test-hmp
GTESTER tests/test-char
GTESTER tests/check-qdict
GTESTER tests/check-qfloat
GTESTER tests/check-qint
GTESTER tests/check-qstring
GTESTER tests/check-qlist
GTESTER tests/check-qnull
GTESTER tests/check-qjson
LINK tests/test-qobject-output-visitor
LINK tests/test-clone-visitor
LINK tests/test-qobject-input-visitor
LINK tests/test-qmp-commands
LINK tests/test-string-input-visitor
LINK tests/test-string-output-visitor
LINK tests/test-qmp-event
LINK tests/test-opts-visitor
GTESTER tests/test-coroutine
LINK tests/test-visitor-serialization
GTESTER tests/test-iov
GTESTER tests/test-aio
GTESTER tests/test-aio-multithread
GTESTER tests/test-throttle
GTESTER tests/test-thread-pool
GTESTER tests/test-hbitmap
GTESTER tests/test-blockjob
GTESTER tests/test-blockjob-txn
GTESTER tests/test-xbzrle
GTESTER tests/test-x86-cpuid
GTESTER tests/test-vmstate
Failed to load simple/primitive:b_1
Failed to load simple/primitive:i64_2
Failed to load simple/primitive:i32_1
Failed to load simple/primitive:i32_1
Failed to load test/with_tmp:a
Failed to load test/tmp_child_parent:f
Failed to load test/tmp_child:parent
Failed to load test/with_tmp:tmp
Failed to load test/tmp_child:diff
Failed to load test/with_tmp:tmp
Failed to load test/tmp_child:diff
Failed to load test/with_tmp:tmp
GTESTER tests/test-cutils
GTESTER tests/test-shift128
GTESTER tests/test-mul64
GTESTER tests/rcutorture
GTESTER tests/test-int128
GTESTER tests/test-rcu-list
GTESTER tests/test-qdist
GTESTER tests/test-qht
LINK tests/test-qht-par
GTESTER tests/test-bitops
GTESTER tests/test-bitcnt
GTESTER tests/check-qom-interface
GTESTER tests/check-qom-proplist
GTESTER tests/test-qemu-opts
GTESTER tests/test-keyval
GTESTER tests/test-write-threshold
GTESTER tests/test-crypto-hash
GTESTER tests/test-crypto-hmac
GTESTER tests/test-crypto-cipher
GTESTER tests/test-crypto-secret
GTESTER tests/test-qga
GTESTER tests/test-timed-average
GTESTER tests/test-io-task
GTESTER tests/test-io-channel-socket
GTESTER tests/test-io-channel-file
GTESTER tests/test-io-channel-command
GTESTER tests/test-io-channel-buffer
GTESTER tests/test-base64
GTESTER tests/test-crypto-ivgen
GTESTER tests/test-crypto-afsplit
GTESTER tests/test-crypto-xts
GTESTER tests/test-crypto-block
GTESTER tests/test-logging
GTESTER tests/test-replication
GTESTER tests/test-bufferiszero
GTESTER tests/test-uuid
GTESTER tests/ptimer-test
GTESTER tests/test-qapi-util
GTESTER check-qtest-x86_64
GTESTER check-qtest-aarch64
GTESTER tests/test-qobject-output-visitor
GTESTER tests/test-clone-visitor
GTESTER tests/test-qobject-input-visitor
GTESTER tests/test-qmp-commands
GTESTER tests/test-string-input-visitor
GTESTER tests/test-string-output-visitor
GTESTER tests/test-qmp-event
GTESTER tests/test-opts-visitor
GTESTER tests/test-visitor-serialization
GTESTER tests/test-qht-par
qemu-system-aarch64: warning: CPU(s) not present in any NUMA nodes: CPU 2 [thread-id: 2], CPU 3 [thread-id: 3], CPU 6 [thread-id: 6], CPU 7 [thread-id: 7]
qemu-system-aarch64: warning: All CPU(s) up to maxcpus should be described in NUMA config, ability to start up with partial NUMA mappings is obsoleted and will be removed in future
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
qemu-system-x86_64: warning: CPU(s) not present in any NUMA nodes: CPU 2 [socket-id: 2, core-id: 0, thread-id: 0], CPU 3 [socket-id: 3, core-id: 0, thread-id: 0], CPU 6 [socket-id: 6, core-id: 0, thread-id: 0], CPU 7 [socket-id: 7, core-id: 0, thread-id: 0]
qemu-system-x86_64: warning: All CPU(s) up to maxcpus should be described in NUMA config, ability to start up with partial NUMA mappings is obsoleted and will be removed in future
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-i0aq57qp/src'
real 12m32.960s
user 0m4.080s
sys 0m1.322s
BUILD fedora
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-i0aq57qp/src'
ARCHIVE qemu.tgz
ARCHIVE dtc.tgz
COPY RUNNER
RUN test-mingw in qemu:fedora
Packages installed:
PyYAML-3.11-13.fc25.x86_64
SDL-devel-1.2.15-21.fc24.x86_64
bc-1.06.95-16.fc24.x86_64
bison-3.0.4-4.fc24.x86_64
ccache-3.3.4-1.fc25.x86_64
clang-3.9.1-2.fc25.x86_64
findutils-4.6.0-8.fc25.x86_64
flex-2.6.0-3.fc25.x86_64
gcc-6.3.1-1.fc25.x86_64
gcc-c++-6.3.1-1.fc25.x86_64
git-2.9.3-2.fc25.x86_64
glib2-devel-2.50.3-1.fc25.x86_64
libfdt-devel-1.4.2-1.fc25.x86_64
make-4.1-5.fc24.x86_64
mingw32-SDL-1.2.15-7.fc24.noarch
mingw32-bzip2-1.0.6-7.fc24.noarch
mingw32-curl-7.47.0-1.fc24.noarch
mingw32-glib2-2.50.1-1.fc25.noarch
mingw32-gmp-6.1.1-1.fc25.noarch
mingw32-gnutls-3.5.5-2.fc25.noarch
mingw32-gtk2-2.24.31-2.fc25.noarch
mingw32-gtk3-3.22.2-1.fc25.noarch
mingw32-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw32-libpng-1.6.27-1.fc25.noarch
mingw32-libssh2-1.4.3-5.fc24.noarch
mingw32-libtasn1-4.9-1.fc25.noarch
mingw32-nettle-3.3-1.fc25.noarch
mingw32-pixman-0.34.0-1.fc25.noarch
mingw32-pkg-config-0.28-6.fc24.x86_64
mingw64-SDL-1.2.15-7.fc24.noarch
mingw64-bzip2-1.0.6-7.fc24.noarch
mingw64-curl-7.47.0-1.fc24.noarch
mingw64-glib2-2.50.1-1.fc25.noarch
mingw64-gmp-6.1.1-1.fc25.noarch
mingw64-gnutls-3.5.5-2.fc25.noarch
mingw64-gtk2-2.24.31-2.fc25.noarch
mingw64-gtk3-3.22.2-1.fc25.noarch
mingw64-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw64-libpng-1.6.27-1.fc25.noarch
mingw64-libssh2-1.4.3-5.fc24.noarch
mingw64-libtasn1-4.9-1.fc25.noarch
mingw64-nettle-3.3-1.fc25.noarch
mingw64-pixman-0.34.0-1.fc25.noarch
mingw64-pkg-config-0.28-6.fc24.x86_64
package python2 is not installed
perl-5.24.1-385.fc25.x86_64
pixman-devel-0.34.0-2.fc24.x86_64
sparse-0.5.0-10.fc25.x86_64
tar-1.29-3.fc25.x86_64
which-2.21-1.fc25.x86_64
zlib-devel-1.2.8-10.fc24.x86_64
Environment variables:
FBR=f25
PACKAGES=ccache git tar PyYAML sparse flex bison python2 glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel gcc gcc-c++ clang make perl which bc findutils mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL mingw32-pkg-config mingw32-gtk2 mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1 mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2 mingw32-bzip2 mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL mingw64-pkg-config mingw64-gtk2 mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1 mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2 mingw64-bzip2
HOSTNAME=
TERM=xterm
MAKEFLAGS= -j8
HISTSIZE=1000
J=8
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
HISTCONTROL=ignoredups
FGC=f25
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
DISTTAG=f25docker
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES=mingw clang pyyaml dtc
DEBUG=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install --cross-prefix=x86_64-w64-mingw32- --enable-trace-backends=simple --enable-debug --enable-gnutls --enable-nettle --enable-curl --enable-vnc --enable-bzip2 --enable-guest-agent --with-sdlabi=1.2 --with-gtkabi=2.0
Install prefix /var/tmp/qemu-build/install
BIOS directory /var/tmp/qemu-build/install
binary directory /var/tmp/qemu-build/install
library directory /var/tmp/qemu-build/install/lib
module directory /var/tmp/qemu-build/install/lib
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory /var/tmp/qemu-build/install
local state directory queried at runtime
Windows SDK no
Source path /tmp/qemu-test/src
C compiler x86_64-w64-mingw32-gcc
Host C compiler cc
C++ compiler x86_64-w64-mingw32-g++
Objective-C compiler clang
ARFLAGS rv
CFLAGS -g
QEMU_CFLAGS -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -Werror -mms-bitfields -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/x86_64-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -m64 -mcx16 -mthreads -D__USE_MINGW_ANSI_STDIO=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x501 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/p11-kit-1 -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/libpng16
LDFLAGS -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase -Wl,--warn-common -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
tcg debug enabled yes
gprof enabled no
sparse enabled no
strip binaries no
profiler no
static build no
pixman system
SDL support yes (1.2.15)
GTK support yes (2.24.31)
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support yes
GNUTLS rnd yes
libgcrypt no
libgcrypt kdf no
nettle yes (3.3)
nettle kdf yes
libtasn1 yes
curses support no
virgl support no
curl support yes
mingw32 support yes
Audio drivers dsound
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support yes
VNC SASL support no
VNC JPEG support yes
VNC PNG support yes
xen support no
brlapi support no
bluez support no
Documentation no
PIE no
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support no
Install blobs yes
KVM support no
HAX support yes
RDMA support no
TCG interpreter no
fdt support yes
preadv support no
fdatasync no
madvise no
posix_madvise no
libcap-ng support no
vhost-net support no
vhost-scsi support no
vhost-vsock support no
Trace backends simple
Trace output file trace-<pid>
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info yes
QGA MSI support no
seccomp support no
coroutine backend win32
coroutine pool yes
debug stack usage no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support yes
TPM passthrough no
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support yes
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization yes
replication support yes
VxHS block device no
mkdir -p dtc/libfdt
mkdir -p dtc/tests
GEN x86_64-softmmu/config-devices.mak.tmp
GEN aarch64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN qemu-options.def
GEN qapi-visit.h
GEN qmp-commands.h
GEN qapi-types.h
GEN qapi-event.h
GEN x86_64-softmmu/config-devices.mak
GEN qmp-marshal.c
GEN qapi-types.c
GEN aarch64-softmmu/config-devices.mak
GEN qapi-visit.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN backends/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN backends/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/srcpos.c
BISON dtc-parser.tab.c
LEX dtc-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
DEP convert-dtsv0-lexer.lex.c
DEP dtc-parser.tab.c
DEP dtc-lexer.lex.c
CHK version_gen.h
UPD version_gen.h
DEP /tmp/qemu-test/src/dtc/util.c
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
x86_64-w64-mingw32-ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
RC version.o
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qmp-marshal.c
GEN qga/qapi-generated/qga-qapi-visit.c
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qstring.o
CC qobject/qint.o
CC qobject/qdict.o
CC qobject/qfloat.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC trace/simple.o
CC trace/control.o
CC trace/qmp.o
CC util/osdep.o
CC util/cutils.o
CC util/unicode.o
CC util/qemu-timer-common.o
CC util/bufferiszero.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-win32.o
CC util/event_notifier-win32.o
CC util/oslib-win32.o
CC util/qemu-thread-win32.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/error.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/uri.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-win32.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC util/systemd.o
CC trace-root.o
CC crypto/trace.o
CC util/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC backends/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/char/trace.o
CC hw/block/dataplane/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/scsi/trace.o
CC hw/usb/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/pci/trace.o
CC hw/ppc/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/error-printf.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/replay.o
CC stubs/qtest.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/uuid.o
CC stubs/trace-control.o
CC stubs/vmstate.o
CC stubs/vm-stop.o
CC stubs/fd-register.o
CC stubs/qmp_pc_dimm_device_list.o
CC stubs/target-monitor-defs.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/target-get-monitor-def.o
CC stubs/vmgenid.o
CC block.o
CC stubs/xen-hvm.o
GEN qemu-img-cmds.h
CC stubs/xen-common.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vmdk.o
CC block/vdi.o
CC block/bochs.o
CC block/cloop.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-cache.o
CC block/qcow2-snapshot.o
CC block/qed.o
CC block/qed-gencb.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-win32.o
CC block/win32-aio.o
CC block/null.o
CC block/mirror.o
CC block/commit.o
CC block/throttle-groups.o
CC block/nbd.o
CC block/nbd-client.o
CC block/accounting.o
CC block/sheepdog.o
CC block/dirty-bitmap.o
CC block/write-threshold.o
CC block/backup.o
CC block/replication.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC block/curl.o
CC block/io.o
CC block/ssh.o
CC block/dmg-bz2.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-nettle.o
CC crypto/hmac.o
CC crypto/hmac-nettle.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-gnutls.o
CC crypto/pbkdf.o
CC crypto/pbkdf-nettle.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-qcow.o
CC crypto/block-luks.o
CC io/channel.o
CC io/channel-buffer.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-watch.o
CC io/channel-tls.o
CC io/channel-websock.o
CC io/channel-util.o
CC io/dns-resolver.o
CC io/task.o
CC qom/object.o
CC qom/qom-qobject.o
CC qom/container.o
CC qemu-io.o
CC blockdev.o
CC qom/object_interfaces.o
CC blockdev-nbd.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-win32.o
CC bt-host.o
CC accel.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC cpus-common.o
CC qmp.o
CC hmp.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/dsoundaudio.o
CC audio/audio_win_int.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/arm.o
CXX disas/arm-a64.o
CC disas/i386.o
CXX disas/libvixl/vixl/utils.o
CXX disas/libvixl/vixl/compiler-intrinsics.o
CXX disas/libvixl/vixl/a64/instructions-a64.o
CXX disas/libvixl/vixl/a64/decoder-a64.o
CXX disas/libvixl/vixl/a64/disasm-a64.o
CC hw/acpi/core.o
CC hw/acpi/pcihp.o
CC hw/acpi/piix4.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/ich9.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/cs4231a.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/pcspk.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/ecc.o
CC hw/block/onenand.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/sdp.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/bt/hci-csr.o
CC hw/char/ipoctal232.o
CC hw/char/parallel.o
CC hw/char/serial.o
CC hw/char/pl011.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/cadence_uart.o
CC hw/char/debugcon.o
CC hw/char/imx_serial.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl330.o
CC hw/dma/pl080.o
CC hw/dma/i8257.o
CC hw/gpio/max7310.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/isa.o
CC hw/ide/pci.o
CC hw/ide/microdrive.o
CC hw/ide/piix.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/misc/arm11scu.o
CC hw/net/eepro100.o
CC hw/net/ne2000.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e.o
CC hw/net/e1000e_core.o
CC hw/net/rtl8139.o
CC hw/net/vmxnet3.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/cadence_gem.o
CC hw/net/stellaris_enet.o
CC hw/net/ftgmac100.o
CC hw/net/rocker/rocker.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/rocker/rocker_desc.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/fw_cfg.o
CC hw/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/piix.o
CC hw/pci-host/q35.o
CC hw/pci-host/gpex.o
CC hw/pci/pci.o
CC hw/pci/pci_bridge.o
CC hw/pci/msix.o
CC hw/pci/msi.o
CC hw/pci/shpc.o
CC hw/pci/slotid_cap.o
CC hw/pci/pci_host.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pcie_port.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/mptsas.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/mptconfig.o
CC hw/scsi/mptendian.o
CC hw/scsi/megasas.o
CC hw/scsi/vmw_pvscsi.o
CC hw/scsi/esp.o
CC hw/scsi/esp-pci.o
CC hw/sd/pl181.o
CC hw/sd/ssi-sd.o
CC hw/sd/sd.o
CC hw/sd/core.o
CC hw/sd/sdhci.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/imx_gpt.o
CC hw/timer/aspeed_timer.o
CC hw/tpm/tpm_tis.o
CC hw/usb/core.o
CC hw/usb/combined-packet.o
CC hw/usb/bus.o
CC hw/usb/libhw.o
CC hw/usb/desc.o
CC hw/usb/desc-msos.o
CC hw/usb/hcd-uhci.o
CC hw/usb/hcd-ohci.o
CC hw/usb/hcd-ehci.o
CC hw/usb/hcd-ehci-sysbus.o
CC hw/usb/hcd-ehci-pci.o
CC hw/usb/hcd-xhci.o
CC hw/usb/dev-hub.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-pci.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/vhost-stub.o
CC hw/virtio/virtio-mmio.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_ib700.o
CC migration/migration.o
CC hw/watchdog/wdt_aspeed.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/savevm.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/qemu-file-channel.o
CC migration/xbzrle.o
CC migration/postcopy-ram.o
CC migration/qjson.o
CC migration/block.o
CC net/net.o
CC net/checksum.o
CC net/queue.o
CC net/util.o
CC net/hub.o
CC net/socket.o
CC net/dump.o
CC net/eth.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap-win32.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/if.o
CC slirp/cksum.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/misc.o
CC slirp/sbuf.o
CC slirp/socket.o
CC slirp/tcp_input.o
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/sdl.o
CC ui/sdl_zoom.o
CC ui/x_keymap.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-ws.o
CC ui/vnc-jobs.o
CC ui/gtk.o
CC chardev/char.o
CC chardev/char-console.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-pipe.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-socket.o
CC chardev/char-stdio.o
CC chardev/char-udp.o
CC chardev/char-win.o
CC chardev/char-win-stdio.o
AS optionrom/multiboot.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
AS optionrom/kvmvapic.o
BUILD optionrom/multiboot.img
CC qga/commands.o
BUILD optionrom/linuxboot.img
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/kvmvapic.img
CC qga/guest-agent-command-state.o
BUILD optionrom/multiboot.raw
BUILD optionrom/linuxboot.raw
BUILD optionrom/linuxboot_dma.raw
BUILD optionrom/kvmvapic.raw
CC qga/main.o
CC qga/commands-win32.o
CC qga/channel-win32.o
CC qga/service-win32.o
CC qga/vss-win32.o
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qapi-visit.o
CC qga/qapi-generated/qga-qmp-marshal.o
AR libqemuutil.a
AR libqemustub.a
CC qemu-img.o
SIGN optionrom/multiboot.bin
SIGN optionrom/linuxboot.bin
SIGN optionrom/kvmvapic.bin
SIGN optionrom/linuxboot_dma.bin
LINK qemu-io.exe
LINK qemu-img.exe
LINK qemu-ga.exe
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/config-target.h
GEN x86_64-softmmu/hmp-commands-info.h
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/cpu-exec.o
CC x86_64-softmmu/translate-all.o
CC x86_64-softmmu/cpu-exec-common.o
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/translate-common.o
CC x86_64-softmmu/tcg/optimize.o
GEN aarch64-softmmu/hmp-commands.h
CC x86_64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/disas.o
CC x86_64-softmmu/tcg-runtime.o
GEN x86_64-softmmu/gdbstub-xml.c
GEN aarch64-softmmu/hmp-commands-info.h
CC x86_64-softmmu/kvm-stub.o
GEN aarch64-softmmu/config-target.h
CC x86_64-softmmu/arch_init.o
CC aarch64-softmmu/exec.o
CC aarch64-softmmu/translate-all.o
CC aarch64-softmmu/cpu-exec.o
CC aarch64-softmmu/translate-common.o
CC x86_64-softmmu/cpus.o
CC x86_64-softmmu/monitor.o
CC aarch64-softmmu/tcg/tcg.o
CC aarch64-softmmu/cpu-exec-common.o
CC x86_64-softmmu/gdbstub.o
CC x86_64-softmmu/balloon.o
CC x86_64-softmmu/ioport.o
CC aarch64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/numa.o
CC aarch64-softmmu/tcg/optimize.o
CC aarch64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/qtest.o
CC aarch64-softmmu/fpu/softfloat.o
CC aarch64-softmmu/disas.o
CC aarch64-softmmu/tcg-runtime.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/hax-stub.o
CC x86_64-softmmu/memory.o
CC aarch64-softmmu/kvm-stub.o
CC x86_64-softmmu/bootdevice.o
CC x86_64-softmmu/cputlb.o
CC aarch64-softmmu/arch_init.o
CC x86_64-softmmu/memory_mapping.o
CC x86_64-softmmu/dump.o
CC aarch64-softmmu/cpus.o
CC x86_64-softmmu/migration/ram.o
CC aarch64-softmmu/monitor.o
CC aarch64-softmmu/gdbstub.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC aarch64-softmmu/balloon.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/qtest.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/core/nmi.o
CC aarch64-softmmu/bootdevice.o
CC aarch64-softmmu/memory.o
CC aarch64-softmmu/cputlb.o
CC aarch64-softmmu/memory_mapping.o
CC aarch64-softmmu/dump.o
CC aarch64-softmmu/migration/ram.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC x86_64-softmmu/hw/cpu/core.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC x86_64-softmmu/hw/intc/apic.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC x86_64-softmmu/hw/misc/vmport.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC x86_64-softmmu/hw/misc/edu.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/i386/pc.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC x86_64-softmmu/hw/i386/intel_iommu.o
CC aarch64-softmmu/hw/core/nmi.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC aarch64-softmmu/hw/core/null-machine.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC x86_64-softmmu/target/i386/translate.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC x86_64-softmmu/target/i386/helper.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC x86_64-softmmu/target/i386/cpu.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC x86_64-softmmu/target/i386/cc_helper.o
CC aarch64-softmmu/hw/cpu/core.o
CC x86_64-softmmu/target/i386/int_helper.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC aarch64-softmmu/hw/display/vga.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/target/i386/machine.o
CC aarch64-softmmu/hw/display/dpcd.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC x86_64-softmmu/target/i386/monitor.o
CC x86_64-softmmu/target/i386/kvm-stub.o
CC x86_64-softmmu/target/i386/hax-all.o
CC aarch64-softmmu/hw/dma/soc_dma.o
CC x86_64-softmmu/target/i386/hax-mem.o
CC x86_64-softmmu/target/i386/hax-windows.o
GEN trace/generated-helpers.c
CC x86_64-softmmu/trace/control-target.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC aarch64-softmmu/hw/dma/bcm2835_dma.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC x86_64-softmmu/gdbstub-xml.o
CC x86_64-softmmu/trace/generated-helpers.o
CC aarch64-softmmu/hw/gpio/bcm2835_gpio.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
LINK x86_64-softmmu/qemu-system-x86_64w.exe
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC aarch64-softmmu/hw/intc/armv7m_nvic.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
CC aarch64-softmmu/hw/intc/omap_intc.o
CC aarch64-softmmu/hw/intc/bcm2835_ic.o
CC aarch64-softmmu/hw/intc/bcm2836_control.o
CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
CC aarch64-softmmu/hw/intc/aspeed_vic.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
CC aarch64-softmmu/hw/misc/cbus.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC aarch64-softmmu/hw/misc/exynos4210_clk.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC aarch64-softmmu/hw/misc/omap_l4.o
CC aarch64-softmmu/hw/misc/omap_sdrc.o
CC aarch64-softmmu/hw/misc/omap_tap.o
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC aarch64-softmmu/hw/misc/bcm2835_rng.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC aarch64-softmmu/hw/misc/edu.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC aarch64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o
CC aarch64-softmmu/hw/ssi/omap_spi.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.o
CC aarch64-softmmu/hw/timer/exynos4210_rtc.o
CC aarch64-softmmu/hw/timer/omap_gptimer.o
CC aarch64-softmmu/hw/timer/omap_synctimer.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC aarch64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/arm/boot.o
CC aarch64-softmmu/hw/arm/collie.o
CC aarch64-softmmu/hw/arm/exynos4_boards.o
CC aarch64-softmmu/hw/arm/gumstix.o
CC aarch64-softmmu/hw/arm/highbank.o
CC aarch64-softmmu/hw/arm/digic_boards.o
CC aarch64-softmmu/hw/arm/integratorcp.o
CC aarch64-softmmu/hw/arm/mainstone.o
CC aarch64-softmmu/hw/arm/musicpal.o
CC aarch64-softmmu/hw/arm/nseries.o
CC aarch64-softmmu/hw/arm/omap_sx1.o
CC aarch64-softmmu/hw/arm/palm.o
CC aarch64-softmmu/hw/arm/realview.o
CC aarch64-softmmu/hw/arm/spitz.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/stellaris.o
CC aarch64-softmmu/hw/arm/versatilepb.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/omap1.o
CC aarch64-softmmu/hw/arm/omap2.o
CC aarch64-softmmu/hw/arm/strongarm.o
CC aarch64-softmmu/hw/arm/allwinner-a10.o
CC aarch64-softmmu/hw/arm/cubieboard.o
CC aarch64-softmmu/hw/arm/bcm2835_peripherals.o
CC aarch64-softmmu/hw/arm/bcm2836.o
CC aarch64-softmmu/hw/arm/raspi.o
CC aarch64-softmmu/hw/arm/stm32f205_soc.o
GEN x86_64-softmmu/qemu-system-x86_64.exe
CC aarch64-softmmu/hw/arm/xlnx-zynqmp.o
CC aarch64-softmmu/hw/arm/xlnx-ep108.o
CC aarch64-softmmu/hw/arm/fsl-imx25.o
CC aarch64-softmmu/hw/arm/imx25_pdk.o
CC aarch64-softmmu/hw/arm/fsl-imx31.o
CC aarch64-softmmu/hw/arm/kzm.o
CC aarch64-softmmu/hw/arm/fsl-imx6.o
CC aarch64-softmmu/hw/arm/sabrelite.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/target/arm/arm-semi.o
CC aarch64-softmmu/target/arm/machine.o
CC aarch64-softmmu/target/arm/psci.o
CC aarch64-softmmu/target/arm/arch_dump.o
CC aarch64-softmmu/target/arm/monitor.o
CC aarch64-softmmu/target/arm/kvm-stub.o
CC aarch64-softmmu/target/arm/translate.o
CC aarch64-softmmu/target/arm/op_helper.o
CC aarch64-softmmu/target/arm/helper.o
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/crypto_helper.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/trace/control-target.o
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
LINK aarch64-softmmu/qemu-system-aarch64w.exe
GEN aarch64-softmmu/qemu-system-aarch64.exe
rm -f *.timestamp
make -C tests/tcg clean
make[1]: Entering directory '/var/tmp/qemu-build/tests/tcg'
rm -f *.timestamp
rm -f *~ *.o test-i386.out test-i386.ref \
test-x86_64.log test-x86_64.ref qruncom test_path hello-i386 linux-test testthread sha1-i386 test-i386 test-i386-fprem test-mmap run-test-x86_64
make[1]: Leaving directory '/var/tmp/qemu-build/tests/tcg'
rm -rf tests/check-qdict.exe tests/test-char.exe tests/check-qfloat.exe tests/check-qint.exe tests/check-qstring.exe tests/check-qlist.exe tests/check-qnull.exe tests/check-qjson.exe tests/test-qobject-output-visitor.exe tests/test-clone-visitor.exe tests/test-qobject-input-visitor.exe tests/test-qmp-commands.exe tests/test-string-input-visitor.exe tests/test-string-output-visitor.exe tests/test-qmp-event.exe tests/test-opts-visitor.exe tests/test-coroutine.exe tests/test-visitor-serialization.exe tests/test-iov.exe tests/test-aio.exe tests/test-aio-multithread.exe tests/test-throttle.exe tests/test-thread-pool.exe tests/test-hbitmap.exe tests/test-blockjob.exe tests/test-blockjob-txn.exe tests/test-x86-cpuid.exe tests/test-xbzrle.exe tests/test-cutils.exe tests/test-shift128.exe tests/test-mul64.exe tests/test-int128.exe tests/rcutorture.exe tests/test-rcu-list.exe tests/test-qdist.exe tests/test-qht.exe tests/test-qht-par.exe tests/test-bitops.exe tests/test-bitcnt.exe tests/test-qdev-global-props.exe tests/check-qom-interface.exe tests/check-qom-proplist.exe tests/test-qemu-opts.exe tests/test-keyval.exe tests/test-write-threshold.exe tests/test-crypto-hash.exe tests/test-crypto-hmac.exe tests/test-crypto-cipher.exe tests/test-crypto-secret.exe tests/test-crypto-tlscredsx509.exe tests/test-crypto-tlssession.exe tests/test-timed-average.exe tests/test-io-task.exe tests/test-io-channel-socket.exe tests/test-io-channel-file.exe tests/test-io-channel-tls.exe tests/test-io-channel-command.exe tests/test-io-channel-buffer.exe tests/test-base64.exe tests/test-crypto-pbkdf.exe tests/test-crypto-ivgen.exe tests/test-crypto-afsplit.exe tests/test-crypto-xts.exe tests/test-crypto-block.exe tests/test-logging.exe tests/test-replication.exe tests/test-bufferiszero.exe tests/test-uuid.exe tests/ptimer-test.exe tests/test-qapi-util.exe tests/*.o
rm -rf tests/ac97-test.exe tests/ahci-test.exe tests/bios-tables-test.exe tests/boot-order-test.exe tests/boot-serial-test.exe tests/device-introspect-test.exe tests/display-vga-test.exe tests/drive_del-test.exe tests/ds1338-test.exe tests/e1000-test.exe tests/e1000e-test.exe tests/eepro100-test.exe tests/endianness-test.exe tests/es1370-test.exe tests/fdc-test.exe tests/fw_cfg-test.exe tests/hd-geo-test.exe tests/i440fx-test.exe tests/i82801b11-test.exe tests/ide-test.exe tests/intel-hda-test.exe tests/ioh3420-test.exe tests/ipmi-bt-test.exe tests/ipmi-kcs-test.exe tests/ipoctal232-test.exe tests/m25p80-test.exe tests/ne2000-test.exe tests/numa-test.exe tests/nvme-test.exe tests/pc-cpu-test.exe tests/pcnet-test.exe tests/pnv-xscom-test.exe tests/postcopy-test.exe tests/prom-env-test.exe tests/pvpanic-test.exe tests/pxe-test.exe tests/q35-test.exe tests/qmp-test.exe tests/qom-test.exe tests/rtas-test.exe tests/rtc-test.exe tests/rtl8139-test.exe tests/spapr-phb-test.exe tests/tco-test.exe tests/test-arm-mptimer.exe tests/test-filter-mirror.exe tests/test-filter-redirector.exe tests/test-hmp.exe tests/test-netfilter.exe tests/test-x86-cpuid-compat.exe tests/tmp105-test.exe tests/tpci200-test.exe tests/usb-hcd-ehci-test.exe tests/usb-hcd-ohci-test.exe tests/usb-hcd-uhci-test.exe tests/usb-hcd-xhci-test.exe tests/virtio-balloon-test.exe tests/virtio-blk-test.exe tests/virtio-console-test.exe tests/virtio-net-test.exe tests/virtio-rng-test.exe tests/virtio-scsi-test.exe tests/virtio-serial-test.exe tests/vmxnet3-test.exe tests/wdt_ib700-test.exe
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
rm -f qemu-options.def
rm -f *.msi
find . \( -name '*.so' -o -name '*.dll' -o -name '*.mo' -o -name '*.[oda]' \) -type f -exec rm {} +
rm -f qemu-ga qemu-img.exe qemu-io.exe qemu-ga TAGS cscope.* *.pod *~ */*~
rm -f fsdev/*.pod
rm -f qemu-img-cmds.h
rm -f ui/shader/*-vert.h ui/shader/*-frag.h
rm -f trace/generated-tracers-dtrace.dtrace*
rm -f trace/generated-tracers-dtrace.h*
rm -f qemu-version.h qemu-version.h-timestamp config-host.h config-host.h-timestamp qemu-options.def qemu-options.def-timestamp qmp-commands.h qmp-commands.h-timestamp qapi-types.h qapi-types.h-timestamp qapi-visit.h qapi-visit.h-timestamp qapi-event.h qapi-event.h-timestamp qmp-marshal.c qmp-marshal.c-timestamp qapi-types.c qapi-types.c-timestamp qapi-visit.c qapi-visit.c-timestamp qapi-event.c qapi-event.c-timestamp qmp-introspect.h qmp-introspect.h-timestamp qmp-introspect.c qmp-introspect.c-timestamp trace/generated-tcg-tracers.h trace/generated-tcg-tracers.h-timestamp trace/generated-helpers-wrappers.h trace/generated-helpers-wrappers.h-timestamp trace/generated-helpers.h trace/generated-helpers.h-timestamp trace/generated-helpers.c trace/generated-helpers.c-timestamp module_block.h module_block.h-timestamp trace-root.h trace-root.h-timestamp util/trace.h util/trace.h-timestamp crypto/trace.h crypto/trace.h-timestamp io/trace.h io/trace.h-timestamp migration/trace.h migration/trace.h-timestamp block/trace.h block/trace.h-timestamp backends/trace.h backends/trace.h-timestamp chardev/trace.h chardev/trace.h-timestamp hw/block/trace.h hw/block/trace.h-timestamp hw/block/dataplane/trace.h hw/block/dataplane/trace.h-timestamp hw/char/trace.h hw/char/trace.h-timestamp hw/intc/trace.h hw/intc/trace.h-timestamp hw/net/trace.h hw/net/trace.h-timestamp hw/virtio/trace.h hw/virtio/trace.h-timestamp hw/audio/trace.h hw/audio/trace.h-timestamp hw/misc/trace.h hw/misc/trace.h-timestamp hw/usb/trace.h hw/usb/trace.h-timestamp hw/scsi/trace.h hw/scsi/trace.h-timestamp hw/nvram/trace.h hw/nvram/trace.h-timestamp hw/display/trace.h hw/display/trace.h-timestamp hw/input/trace.h hw/input/trace.h-timestamp hw/timer/trace.h hw/timer/trace.h-timestamp hw/dma/trace.h hw/dma/trace.h-timestamp hw/sparc/trace.h hw/sparc/trace.h-timestamp hw/sd/trace.h hw/sd/trace.h-timestamp hw/isa/trace.h hw/isa/trace.h-timestamp hw/mem/trace.h hw/mem/trace.h-timestamp hw/i386/trace.h hw/i386/trace.h-timestamp hw/i386/xen/trace.h hw/i386/xen/trace.h-timestamp hw/9pfs/trace.h hw/9pfs/trace.h-timestamp hw/ppc/trace.h hw/ppc/trace.h-timestamp hw/pci/trace.h hw/pci/trace.h-timestamp hw/s390x/trace.h hw/s390x/trace.h-timestamp hw/vfio/trace.h hw/vfio/trace.h-timestamp hw/acpi/trace.h hw/acpi/trace.h-timestamp hw/arm/trace.h hw/arm/trace.h-timestamp hw/alpha/trace.h hw/alpha/trace.h-timestamp hw/xen/trace.h hw/xen/trace.h-timestamp ui/trace.h ui/trace.h-timestamp audio/trace.h audio/trace.h-timestamp net/trace.h net/trace.h-timestamp target/arm/trace.h target/arm/trace.h-timestamp target/i386/trace.h target/i386/trace.h-timestamp target/mips/trace.h target/mips/trace.h-timestamp target/sparc/trace.h target/sparc/trace.h-timestamp target/s390x/trace.h target/s390x/trace.h-timestamp target/ppc/trace.h target/ppc/trace.h-timestamp qom/trace.h qom/trace.h-timestamp linux-user/trace.h linux-user/trace.h-timestamp qapi/trace.h qapi/trace.h-timestamp trace-root.c trace-root.c-timestamp util/trace.c util/trace.c-timestamp crypto/trace.c crypto/trace.c-timestamp io/trace.c io/trace.c-timestamp migration/trace.c migration/trace.c-timestamp block/trace.c block/trace.c-timestamp backends/trace.c backends/trace.c-timestamp chardev/trace.c chardev/trace.c-timestamp hw/block/trace.c hw/block/trace.c-timestamp hw/block/dataplane/trace.c hw/block/dataplane/trace.c-timestamp hw/char/trace.c hw/char/trace.c-timestamp hw/intc/trace.c hw/intc/trace.c-timestamp hw/net/trace.c hw/net/trace.c-timestamp hw/virtio/trace.c hw/virtio/trace.c-timestamp hw/audio/trace.c hw/audio/trace.c-timestamp hw/misc/trace.c hw/misc/trace.c-timestamp hw/usb/trace.c hw/usb/trace.c-timestamp hw/scsi/trace.c hw/scsi/trace.c-timestamp hw/nvram/trace.c hw/nvram/trace.c-timestamp hw/display/trace.c hw/display/trace.c-timestamp hw/input/trace.c hw/input/trace.c-timestamp hw/timer/trace.c hw/timer/trace.c-timestamp hw/dma/trace.c hw/dma/trace.c-timestamp hw/sparc/trace.c hw/sparc/trace.c-timestamp hw/sd/trace.c hw/sd/trace.c-timestamp hw/isa/trace.c hw/isa/trace.c-timestamp hw/mem/trace.c hw/mem/trace.c-timestamp hw/i386/trace.c hw/i386/trace.c-timestamp hw/i386/xen/trace.c hw/i386/xen/trace.c-timestamp hw/9pfs/trace.c hw/9pfs/trace.c-timestamp hw/ppc/trace.c hw/ppc/trace.c-timestamp hw/pci/trace.c hw/pci/trace.c-timestamp hw/s390x/trace.c hw/s390x/trace.c-timestamp hw/vfio/trace.c hw/vfio/trace.c-timestamp hw/acpi/trace.c hw/acpi/trace.c-timestamp hw/arm/trace.c hw/arm/trace.c-timestamp hw/alpha/trace.c hw/alpha/trace.c-timestamp hw/xen/trace.c hw/xen/trace.c-timestamp ui/trace.c ui/trace.c-timestamp audio/trace.c audio/trace.c-timestamp net/trace.c net/trace.c-timestamp target/arm/trace.c target/arm/trace.c-timestamp target/i386/trace.c target/i386/trace.c-timestamp target/mips/trace.c target/mips/trace.c-timestamp target/sparc/trace.c target/sparc/trace.c-timestamp target/s390x/trace.c target/s390x/trace.c-timestamp target/ppc/trace.c target/ppc/trace.c-timestamp qom/trace.c qom/trace.c-timestamp linux-user/trace.c linux-user/trace.c-timestamp qapi/trace.c qapi/trace.c-timestamp /var/tmp/qemu-build/trace-events-all /var/tmp/qemu-build/trace-events-all-timestamp tests/test-qapi-types.h tests/test-qapi-types.h-timestamp tests/test-qapi-visit.h tests/test-qapi-visit.h-timestamp tests/test-qmp-commands.h tests/test-qmp-commands.h-timestamp tests/test-qapi-event.h tests/test-qapi-event.h-timestamp tests/test-qmp-introspect.h tests/test-qmp-introspect.h-timestamp
rm -rf qapi-generated
rm -rf qga/qapi-generated
for d in x86_64-softmmu aarch64-softmmu pc-bios/optionrom; do \
if test -d $d; then make -C $d clean || exit 1; fi; \
rm -f $d/qemu-options.def; \
done
make[1]: Entering directory '/var/tmp/qemu-build/x86_64-softmmu'
rm -f *.timestamp
rm -f *.a *~ qemu-system-x86_64.exe qemu-system-x86_64w.exe
rm -f
rm -f hmp-commands.h gdbstub-xml.c
make[1]: Leaving directory '/var/tmp/qemu-build/x86_64-softmmu'
make[1]: Entering directory '/var/tmp/qemu-build/aarch64-softmmu'
rm -f *.timestamp
rm -f *.a *~ qemu-system-aarch64.exe qemu-system-aarch64w.exe
rm -f
rm -f hmp-commands.h gdbstub-xml.c
make[1]: Leaving directory '/var/tmp/qemu-build/aarch64-softmmu'
make[1]: Entering directory '/var/tmp/qemu-build/pc-bios/optionrom'
rm -f *.timestamp
rm -f *.o *.d *.raw *.img *.bin *~
make[1]: Leaving directory '/var/tmp/qemu-build/pc-bios/optionrom'
rm -f x86_64-softmmu/config-devices.mak aarch64-softmmu/config-devices.mak config-all-devices.mak
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install --cross-prefix=i686-w64-mingw32- --enable-trace-backends=simple --enable-debug --enable-gnutls --enable-nettle --enable-curl --enable-vnc --enable-bzip2 --enable-guest-agent --with-sdlabi=1.2 --with-gtkabi=2.0
Install prefix /var/tmp/qemu-build/install
BIOS directory /var/tmp/qemu-build/install
binary directory /var/tmp/qemu-build/install
library directory /var/tmp/qemu-build/install/lib
module directory /var/tmp/qemu-build/install/lib
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory /var/tmp/qemu-build/install
local state directory queried at runtime
Windows SDK no
Source path /tmp/qemu-test/src
C compiler i686-w64-mingw32-gcc
Host C compiler cc
C++ compiler i686-w64-mingw32-g++
Objective-C compiler clang
ARFLAGS rv
CFLAGS -g
QEMU_CFLAGS -I/usr/i686-w64-mingw32/sys-root/mingw/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -Werror -mms-bitfields -I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include -m32 -mthreads -D__USE_MINGW_ANSI_STDIO=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x501 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/p11-kit-1 -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/libpng16
LDFLAGS -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase -Wl,--warn-common -m32 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU i386
host big endian no
target list x86_64-softmmu aarch64-softmmu
tcg debug enabled yes
gprof enabled no
sparse enabled no
strip binaries no
profiler no
static build no
pixman system
SDL support yes (1.2.15)
GTK support yes (2.24.31)
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support yes
GNUTLS rnd yes
libgcrypt no
libgcrypt kdf no
nettle yes (3.3)
nettle kdf yes
libtasn1 yes
curses support no
virgl support no
curl support yes
mingw32 support yes
Audio drivers dsound
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support yes
VNC SASL support no
VNC JPEG support yes
VNC PNG support yes
xen support no
brlapi support no
bluez support no
Documentation no
PIE no
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support no
Install blobs yes
KVM support no
HAX support yes
RDMA support no
TCG interpreter no
fdt support yes
preadv support no
fdatasync no
madvise no
posix_madvise no
libcap-ng support no
vhost-net support no
vhost-scsi support no
vhost-vsock support no
Trace backends simple
Trace output file trace-<pid>
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info yes
QGA MSI support no
seccomp support no
coroutine backend win32
coroutine pool yes
debug stack usage no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support yes
TPM passthrough no
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support yes
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization yes
replication support yes
VxHS block device no
GEN x86_64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN aarch64-softmmu/config-devices.mak.tmp
GEN qemu-options.def
GEN qmp-commands.h
GEN qapi-types.h
GEN qapi-visit.h
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
GEN x86_64-softmmu/config-devices.mak
GEN aarch64-softmmu/config-devices.mak
GEN qapi-event.h
GEN qmp-marshal.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
GEN qapi-types.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
GEN qapi-visit.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
GEN qapi-event.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
GEN qmp-introspect.h
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
GEN trace/generated-helpers-wrappers.h
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
GEN trace/generated-helpers.h
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
GEN trace/generated-helpers.c
GEN module_block.h
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
GEN tests/test-qapi-types.h
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
GEN trace-root.h
GEN util/trace.h
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
GEN crypto/trace.h
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
GEN io/trace.h
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
GEN migration/trace.h
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
GEN block/trace.h
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
GEN backends/trace.h
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
GEN chardev/trace.h
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
GEN hw/block/trace.h
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
GEN hw/block/dataplane/trace.h
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
GEN hw/char/trace.h
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
GEN hw/intc/trace.h
GEN hw/net/trace.h
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
DEP convert-dtsv0-lexer.lex.c
GEN hw/virtio/trace.h
DEP /tmp/qemu-test/src/dtc/srcpos.c
GEN hw/audio/trace.h
DEP dtc-parser.tab.c
DEP dtc-lexer.lex.c
GEN hw/misc/trace.h
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP /tmp/qemu-test/src/dtc/livetree.c
GEN hw/usb/trace.h
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/flattree.c
GEN hw/scsi/trace.h
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
GEN hw/nvram/trace.h
DEP /tmp/qemu-test/src/dtc/checks.c
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
GEN hw/isa/trace.h
CC libfdt/fdt_wip.o
GEN hw/mem/trace.h
CC libfdt/fdt_sw.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_strerror.o
GEN hw/i386/trace.h
CC libfdt/fdt_addresses.o
CC libfdt/fdt_overlay.o
GEN hw/i386/xen/trace.h
AR libfdt/libfdt.a
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
i686-w64-mingw32-ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN trace-root.c
GEN qapi/trace.h
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN backends/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN config-all-devices.mak
GEN qapi/trace.c
RC version.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qmp-marshal.c
GEN qga/qapi-generated/qga-qapi-types.c
CC qmp-introspect.o
CC qapi-types.o
GEN qga/qapi-generated/qga-qapi-visit.c
CC qapi-event.o
CC qapi-visit.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qapi-util.o
CC qapi/qmp-event.o
CC qobject/qnull.o
CC qobject/qint.o
CC qobject/qstring.o
CC qobject/qlist.o
CC qobject/qdict.o
CC qobject/qbool.o
CC qobject/qjson.o
CC qobject/qfloat.o
CC qobject/qobject.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC qobject/json-lexer.o
CC trace/simple.o
CC trace/control.o
CC trace/qmp.o
CC util/osdep.o
CC util/unicode.o
CC util/qemu-timer-common.o
CC util/bufferiszero.o
CC util/cutils.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-win32.o
CC util/event_notifier-win32.o
CC util/oslib-win32.o
CC util/qemu-thread-win32.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/error.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/uri.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-win32.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/systemd.o
CC util/range.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC backends/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/audio/trace.o
CC hw/virtio/trace.o
CC hw/usb/trace.o
CC hw/misc/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/xen/trace.o
CC hw/alpha/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC stubs/arch-query-cpu-def.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/replay.o
CC stubs/qtest.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/fd-register.o
CC stubs/qmp_pc_dimm_device_list.o
CC stubs/target-monitor-defs.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/target-get-monitor-def.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
GEN qemu-img-cmds.h
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vmdk.o
CC block/vdi.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qed.o
CC block/qed-gencb.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/quorum.o
CC block/vhdx-log.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-win32.o
CC block/null.o
CC block/win32-aio.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/throttle-groups.o
CC block/nbd.o
CC block/nbd-client.o
CC block/sheepdog.o
CC block/accounting.o
CC block/dirty-bitmap.o
CC block/write-threshold.o
CC block/backup.o
CC block/replication.o
CC block/crypto.o
CC nbd/server.o
CC nbd/common.o
CC nbd/client.o
CC block/curl.o
CC block/ssh.o
CC crypto/init.o
CC crypto/hash.o
CC block/dmg-bz2.o
CC crypto/hash-nettle.o
CC crypto/hmac.o
CC crypto/hmac-nettle.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-gnutls.o
CC crypto/pbkdf.o
CC crypto/pbkdf-nettle.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-luks.o
CC crypto/block-qcow.o
CC io/channel.o
CC io/channel-buffer.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-tls.o
CC io/channel-watch.o
CC io/channel-websock.o
CC io/channel-util.o
CC io/dns-resolver.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
CC qemu-io.o
CC blockdev.o
CC blockdev-nbd.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC accel.o
CC os-win32.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/dsoundaudio.o
CC audio/sdlaudio.o
CC audio/audio_win_int.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/tpm.o
CC backends/hostmem-ram.o
CC backends/hostmem.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/arm.o
CXX disas/arm-a64.o
CC disas/i386.o
CXX disas/libvixl/vixl/utils.o
CXX disas/libvixl/vixl/compiler-intrinsics.o
CXX disas/libvixl/vixl/a64/instructions-a64.o
CXX disas/libvixl/vixl/a64/decoder-a64.o
CXX disas/libvixl/vixl/a64/disasm-a64.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/cs4231a.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/pcspk.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/ecc.o
CC hw/block/onenand.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/sdp.o
CC hw/bt/l2cap.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/char/ipoctal232.o
CC hw/bt/hci-csr.o
CC hw/char/parallel.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/cadence_uart.o
CC hw/char/debugcon.o
CC hw/char/imx_serial.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/mem/pc-dimm.o
CC hw/isa/apm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/misc/arm11scu.o
CC hw/net/ne2000.o
CC hw/net/eepro100.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e.o
CC hw/net/rtl8139.o
CC hw/net/e1000e_core.o
CC hw/net/vmxnet3.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/cadence_gem.o
CC hw/net/stellaris_enet.o
CC hw/net/ftgmac100.o
CC hw/net/rocker/rocker.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/rocker/rocker_desc.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/fw_cfg.o
CC hw/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/piix.o
CC hw/pci-host/q35.o
CC hw/pci-host/gpex.o
CC hw/pci/pci.o
CC hw/pci/pci_bridge.o
CC hw/pci/msix.o
CC hw/pci/msi.o
CC hw/pci/slotid_cap.o
CC hw/pci/shpc.o
CC hw/pci/pci_host.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pcie_port.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/mptsas.o
CC hw/scsi/mptconfig.o
CC hw/scsi/mptendian.o
CC hw/scsi/megasas.o
CC hw/scsi/vmw_pvscsi.o
CC hw/scsi/esp.o
CC hw/sd/pl181.o
CC hw/scsi/esp-pci.o
CC hw/sd/ssi-sd.o
CC hw/sd/sd.o
CC hw/sd/core.o
CC hw/sd/sdhci.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/ds1338.o
CC hw/timer/cadence_ttc.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/tpm/tpm_tis.o
CC hw/usb/core.o
CC hw/usb/combined-packet.o
CC hw/usb/bus.o
CC hw/usb/libhw.o
CC hw/usb/desc.o
CC hw/usb/desc-msos.o
CC hw/usb/hcd-uhci.o
CC hw/usb/hcd-ohci.o
CC hw/usb/hcd-ehci.o
CC hw/usb/hcd-ehci-pci.o
CC hw/usb/hcd-xhci.o
CC hw/usb/hcd-ehci-sysbus.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-pci.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/virtio-mmio.o
CC hw/virtio/vhost-stub.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_ib700.o
CC hw/watchdog/wdt_aspeed.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/savevm.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/vmstate-types.o
CC migration/page_cache.o
CC migration/qemu-file.o
CC migration/qemu-file-channel.o
CC migration/xbzrle.o
CC migration/postcopy-ram.o
CC migration/qjson.o
CC migration/block.o
CC net/net.o
CC net/queue.o
CC net/checksum.o
CC net/util.o
CC net/hub.o
CC net/socket.o
CC net/dump.o
CC net/eth.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap-win32.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/misc.o
CC slirp/sbuf.o
CC slirp/socket.o
CC slirp/tcp_input.o
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/sdl.o
CC ui/sdl_zoom.o
CC ui/x_keymap.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-ws.o
CC ui/vnc-jobs.o
CC ui/gtk.o
CC chardev/char.o
CC chardev/char-console.o
CC chardev/char-fe.o
CC chardev/char-file.o
CC chardev/char-io.o
/tmp/qemu-test/src/chardev/char.c: In function 'chardev_name_foreach':
/tmp/qemu-test/src/chardev/char.c:546:19: error: comparison of unsigned expression < 0 is always false [-Werror=type-limits]
for (i = 0; i < ARRAY_SIZE(chardev_alias_table); i++) {
^
/tmp/qemu-test/src/chardev/char.c: In function 'qemu_chr_new_from_opts':
/tmp/qemu-test/src/chardev/char.c:592:19: error: comparison of unsigned expression < 0 is always false [-Werror=type-limits]
for (i = 0; i < ARRAY_SIZE(chardev_alias_table); i++) {
^
cc1: all warnings being treated as errors
/tmp/qemu-test/src/rules.mak:69: recipe for target 'chardev/char.o' failed
make: *** [chardev/char.o] Error 1
make: *** Waiting for unfinished jobs....
tests/docker/Makefile.include:118: recipe for target 'docker-run' failed
make[1]: *** [docker-run] Error 2
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-i0aq57qp/src'
tests/docker/Makefile.include:149: recipe for target 'docker-run-test-mingw@fedora' failed
make: *** [docker-run-test-mingw@fedora] Error 2
=== OUTPUT END ===
Test command exited with code: 2
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 06/14] Remove/replace sysemu/char.h inclusion
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 06/14] Remove/replace sysemu/char.h inclusion Marc-André Lureau
@ 2017-05-29 20:57 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 33+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-29 20:57 UTC (permalink / raw)
To: Marc-André Lureau, qemu-devel; +Cc: pbonzini
On 05/29/2017 05:45 AM, Marc-André Lureau wrote:
> Those are apparently unnecessary includes.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> hw/arm/bcm2835_peripherals.c | 1 -
> hw/char/imx_serial.c | 1 -
> hw/display/xenfb.c | 1 -
> hw/i386/xen/xen-hvm.c | 1 -
> hw/mips/mips_fulong2e.c | 1 -
> hw/mips/mips_malta.c | 1 -
> hw/net/xgmac.c | 1 -
> hw/ppc/spapr_events.c | 1 -
> hw/ppc/spapr_rtas.c | 1 -
> hw/sparc/leon3.c | 1 -
> hw/usb/ccid-card-emulated.c | 2 +-
> hw/xen/xen_backend.c | 1 -
> util/event_notifier-posix.c | 1 -
> 13 files changed, 1 insertion(+), 13 deletions(-)
>
> diff --git a/hw/arm/bcm2835_peripherals.c b/hw/arm/bcm2835_peripherals.c
> index 369ef1e3bd..502f04c02a 100644
> --- a/hw/arm/bcm2835_peripherals.c
> +++ b/hw/arm/bcm2835_peripherals.c
> @@ -13,7 +13,6 @@
> #include "hw/arm/bcm2835_peripherals.h"
> #include "hw/misc/bcm2835_mbox_defs.h"
> #include "hw/arm/raspi_platform.h"
> -#include "sysemu/char.h"
> #include "sysemu/sysemu.h"
>
> /* Peripheral base address on the VC (GPU) system bus */
> diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c
> index 52e67f8dc9..af250305be 100644
> --- a/hw/char/imx_serial.c
> +++ b/hw/char/imx_serial.c
> @@ -21,7 +21,6 @@
> #include "qemu/osdep.h"
> #include "hw/char/imx_serial.h"
> #include "sysemu/sysemu.h"
> -#include "sysemu/char.h"
> #include "qemu/log.h"
>
> #ifndef DEBUG_IMX_UART
> diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c
> index 7a8727aa21..e76c0d805c 100644
> --- a/hw/display/xenfb.c
> +++ b/hw/display/xenfb.c
> @@ -28,7 +28,6 @@
>
> #include "hw/hw.h"
> #include "ui/console.h"
> -#include "sysemu/char.h"
> #include "hw/xen/xen_backend.h"
>
> #include <xen/event_channel.h>
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index b1c05ffb86..321cf36b67 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -18,7 +18,6 @@
> #include "hw/xen/xen_backend.h"
> #include "qmp-commands.h"
>
> -#include "sysemu/char.h"
> #include "qemu/error-report.h"
> #include "qemu/range.h"
> #include "sysemu/xen-mapcache.h"
> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
> index e636c3abaa..dbe2805acb 100644
> --- a/hw/mips/mips_fulong2e.c
> +++ b/hw/mips/mips_fulong2e.c
> @@ -32,7 +32,6 @@
> #include "hw/mips/mips.h"
> #include "hw/mips/cpudevs.h"
> #include "hw/pci/pci.h"
> -#include "sysemu/char.h"
> #include "sysemu/sysemu.h"
> #include "audio/audio.h"
> #include "qemu/log.h"
> diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
> index 5dd177e961..6fcdd9c6c1 100644
> --- a/hw/mips/mips_malta.c
> +++ b/hw/mips/mips_malta.c
> @@ -37,7 +37,6 @@
> #include "hw/mips/mips.h"
> #include "hw/mips/cpudevs.h"
> #include "hw/pci/pci.h"
> -#include "sysemu/char.h"
> #include "sysemu/sysemu.h"
> #include "sysemu/arch_init.h"
> #include "qemu/log.h"
> diff --git a/hw/net/xgmac.c b/hw/net/xgmac.c
> index 46b1aa17fa..0843bf185c 100644
> --- a/hw/net/xgmac.c
> +++ b/hw/net/xgmac.c
> @@ -26,7 +26,6 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> #include "qemu/log.h"
> #include "net/net.h"
> #include "net/checksum.h"
> diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
> index f0b28d8112..8a5f1d321a 100644
> --- a/hw/ppc/spapr_events.c
> +++ b/hw/ppc/spapr_events.c
> @@ -28,7 +28,6 @@
> #include "qapi/error.h"
> #include "cpu.h"
> #include "sysemu/sysemu.h"
> -#include "sysemu/char.h"
> #include "hw/qdev.h"
> #include "sysemu/device_tree.h"
>
> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
> index 619f32c054..dd1633a104 100644
> --- a/hw/ppc/spapr_rtas.c
> +++ b/hw/ppc/spapr_rtas.c
> @@ -29,7 +29,6 @@
> #include "qemu/log.h"
> #include "qemu/error-report.h"
> #include "sysemu/sysemu.h"
> -#include "sysemu/char.h"
> #include "hw/qdev.h"
> #include "sysemu/device_tree.h"
> #include "sysemu/cpus.h"
> diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
> index 6e16478413..f415997649 100644
> --- a/hw/sparc/leon3.c
> +++ b/hw/sparc/leon3.c
> @@ -28,7 +28,6 @@
> #include "hw/hw.h"
> #include "qemu/timer.h"
> #include "hw/ptimer.h"
> -#include "sysemu/char.h"
> #include "sysemu/sysemu.h"
> #include "sysemu/qtest.h"
> #include "hw/boards.h"
> diff --git a/hw/usb/ccid-card-emulated.c b/hw/usb/ccid-card-emulated.c
> index 99627860a3..e646eb243b 100644
> --- a/hw/usb/ccid-card-emulated.c
> +++ b/hw/usb/ccid-card-emulated.c
> @@ -33,7 +33,7 @@
> #include <vcard_emul.h>
>
> #include "qemu/thread.h"
> -#include "sysemu/char.h"
> +#include "qemu/main-loop.h"
> #include "ccid.h"
>
> #define DPRINTF(card, lvl, fmt, ...) \
> diff --git a/hw/xen/xen_backend.c b/hw/xen/xen_backend.c
> index 3570f37e56..c46cbb0759 100644
> --- a/hw/xen/xen_backend.c
> +++ b/hw/xen/xen_backend.c
> @@ -28,7 +28,6 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "hw/boards.h"
> -#include "sysemu/char.h"
> #include "qemu/log.h"
> #include "qapi/error.h"
> #include "hw/xen/xen_backend.h"
> diff --git a/util/event_notifier-posix.c b/util/event_notifier-posix.c
> index acdbe3b483..73c4046b58 100644
> --- a/util/event_notifier-posix.c
> +++ b/util/event_notifier-posix.c
> @@ -14,7 +14,6 @@
> #include "qemu-common.h"
> #include "qemu/cutils.h"
> #include "qemu/event_notifier.h"
> -#include "sysemu/char.h"
> #include "qemu/main-loop.h"
>
> #ifdef CONFIG_EVENTFD
>
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 07/14] chardev: move headers to include/chardev
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 07/14] chardev: move headers to include/chardev Marc-André Lureau
@ 2017-05-29 21:02 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 33+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-29 21:02 UTC (permalink / raw)
To: Marc-André Lureau, qemu-devel; +Cc: pbonzini
On 05/29/2017 05:45 AM, Marc-André Lureau wrote:
> So they are all in one place. The following patch will move serial &
> parallel declarations to the respective headers.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> {chardev => include/chardev}/char-fd.h | 2 +-
> {chardev => include/chardev}/char-io.h | 2 +-
> {chardev => include/chardev}/char-mux.h | 2 +-
> {chardev => include/chardev}/char-parallel.h | 0
> {chardev => include/chardev}/char-serial.h | 0
> {chardev => include/chardev}/char-win-stdio.h | 0
> {chardev => include/chardev}/char-win.h | 2 +-
> include/{sysemu => chardev}/char.h | 0
> include/hw/char/bcm2835_aux.h | 2 +-
> include/hw/char/cadence_uart.h | 2 +-
> include/hw/char/digic-uart.h | 2 +-
> include/hw/char/imx_serial.h | 2 +-
> include/hw/char/serial.h | 4 ++--
> include/hw/char/stm32f2xx_usart.h | 2 +-
> backends/baum.c | 2 +-
> backends/msmouse.c | 2 +-
> backends/rng-egd.c | 2 +-
> backends/testdev.c | 2 +-
> backends/wctablet.c | 2 +-
> chardev/char-console.c | 2 +-
> chardev/char-fd.c | 6 +++---
> chardev/char-file.c | 6 +++---
> chardev/char-io.c | 2 +-
> chardev/char-mux.c | 4 ++--
> chardev/char-null.c | 2 +-
> chardev/char-parallel.c | 6 +++---
> chardev/char-pipe.c | 6 +++---
> chardev/char-pty.c | 4 ++--
> chardev/char-ringbuf.c | 2 +-
> chardev/char-serial.c | 6 +++---
> chardev/char-socket.c | 4 ++--
> chardev/char-stdio.c | 8 ++++----
> chardev/char-udp.c | 4 ++--
> chardev/char-win-stdio.c | 4 ++--
> chardev/char-win.c | 2 +-
> chardev/char.c | 10 +++++-----
> gdbstub.c | 2 +-
> hmp.c | 2 +-
> hw/arm/fsl-imx25.c | 2 +-
> hw/arm/fsl-imx31.c | 2 +-
> hw/arm/fsl-imx6.c | 2 +-
> hw/arm/omap2.c | 2 +-
> hw/arm/pxa2xx.c | 2 +-
> hw/arm/strongarm.c | 2 +-
> hw/bt/hci-csr.c | 2 +-
> hw/char/cadence_uart.c | 2 +-
> hw/char/debugcon.c | 2 +-
> hw/char/digic-uart.c | 2 +-
> hw/char/escc.c | 2 +-
> hw/char/etraxfs_ser.c | 2 +-
> hw/char/exynos4210_uart.c | 2 +-
> hw/char/grlib_apbuart.c | 2 +-
> hw/char/ipoctal232.c | 2 +-
> hw/char/lm32_juart.c | 2 +-
> hw/char/lm32_uart.c | 2 +-
> hw/char/mcf_uart.c | 2 +-
> hw/char/milkymist-uart.c | 2 +-
> hw/char/omap_uart.c | 2 +-
> hw/char/parallel.c | 2 +-
> hw/char/pl011.c | 2 +-
> hw/char/sclpconsole-lm.c | 2 +-
> hw/char/sclpconsole.c | 2 +-
> hw/char/serial.c | 2 +-
> hw/char/sh_serial.c | 2 +-
> hw/char/spapr_vty.c | 2 +-
> hw/char/terminal3270.c | 2 +-
> hw/char/virtio-console.c | 2 +-
> hw/char/xen_console.c | 2 +-
> hw/char/xilinx_uartlite.c | 2 +-
> hw/core/qdev-properties-system.c | 2 +-
> hw/core/qdev-properties.c | 2 +-
> hw/ipmi/ipmi_bmc_extern.c | 2 +-
> hw/isa/pc87312.c | 2 +-
> hw/mips/boston.c | 2 +-
> hw/misc/ivshmem.c | 2 +-
> hw/usb/ccid-card-passthru.c | 2 +-
> hw/usb/dev-serial.c | 2 +-
> hw/usb/redirect.c | 2 +-
> hw/virtio/vhost-user.c | 2 +-
> hw/xen/xen-common.c | 2 +-
> hw/xtensa/xtfpga.c | 2 +-
> monitor.c | 2 +-
> net/colo-compare.c | 2 +-
> net/filter-mirror.c | 2 +-
> net/slirp.c | 2 +-
> net/vhost-user.c | 2 +-
> qmp.c | 2 +-
> qtest.c | 2 +-
> replay/replay-char.c | 2 +-
> slirp/slirp.c | 2 +-
> spice-qemu-char.c | 2 +-
> tests/postcopy-test.c | 2 +-
> tests/test-char.c | 2 +-
> tests/vhost-user-test.c | 2 +-
> ui/console.c | 2 +-
> ui/gtk.c | 2 +-
> vl.c | 2 +-
> MAINTAINERS | 1 +
> 98 files changed, 117 insertions(+), 116 deletions(-)
> rename {chardev => include/chardev}/char-fd.h (98%)
> rename {chardev => include/chardev}/char-io.h (98%)
> rename {chardev => include/chardev}/char-mux.h (98%)
> rename {chardev => include/chardev}/char-parallel.h (100%)
> rename {chardev => include/chardev}/char-serial.h (100%)
> rename {chardev => include/chardev}/char-win-stdio.h (100%)
> rename {chardev => include/chardev}/char-win.h (98%)
> rename include/{sysemu => chardev}/char.h (100%)
>
> diff --git a/chardev/char-fd.h b/include/chardev/char-fd.h
> similarity index 98%
> rename from chardev/char-fd.h
> rename to include/chardev/char-fd.h
> index d8327982fb..55ae5b47b0 100644
> --- a/chardev/char-fd.h
> +++ b/include/chardev/char-fd.h
> @@ -25,7 +25,7 @@
> #define CHAR_FD_H
>
> #include "io/channel.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> typedef struct FDChardev {
> Chardev parent;
> diff --git a/chardev/char-io.h b/include/chardev/char-io.h
> similarity index 98%
> rename from chardev/char-io.h
> rename to include/chardev/char-io.h
> index 55973a7671..9638da5100 100644
> --- a/chardev/char-io.h
> +++ b/include/chardev/char-io.h
> @@ -26,7 +26,7 @@
>
> #include "qemu-common.h"
> #include "io/channel.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> /* Can only be used for read */
> GSource *io_add_watch_poll(Chardev *chr,
> diff --git a/chardev/char-mux.h b/include/chardev/char-mux.h
> similarity index 98%
> rename from chardev/char-mux.h
> rename to include/chardev/char-mux.h
> index 3f41dfcfd2..45cdfc7e67 100644
> --- a/chardev/char-mux.h
> +++ b/include/chardev/char-mux.h
> @@ -24,7 +24,7 @@
> #ifndef CHAR_MUX_H
> #define CHAR_MUX_H
>
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> extern bool muxes_realized;
>
> diff --git a/chardev/char-parallel.h b/include/chardev/char-parallel.h
> similarity index 100%
> rename from chardev/char-parallel.h
> rename to include/chardev/char-parallel.h
> diff --git a/chardev/char-serial.h b/include/chardev/char-serial.h
> similarity index 100%
> rename from chardev/char-serial.h
> rename to include/chardev/char-serial.h
> diff --git a/chardev/char-win-stdio.h b/include/chardev/char-win-stdio.h
> similarity index 100%
> rename from chardev/char-win-stdio.h
> rename to include/chardev/char-win-stdio.h
> diff --git a/chardev/char-win.h b/include/chardev/char-win.h
> similarity index 98%
> rename from chardev/char-win.h
> rename to include/chardev/char-win.h
> index 4994425e9e..fa59e9e423 100644
> --- a/chardev/char-win.h
> +++ b/include/chardev/char-win.h
> @@ -24,7 +24,7 @@
> #ifndef CHAR_WIN_H
> #define CHAR_WIN_H
>
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> typedef struct {
> Chardev parent;
> diff --git a/include/sysemu/char.h b/include/chardev/char.h
> similarity index 100%
> rename from include/sysemu/char.h
> rename to include/chardev/char.h
> diff --git a/include/hw/char/bcm2835_aux.h b/include/hw/char/bcm2835_aux.h
> index 6865f154bc..2a051c5646 100644
> --- a/include/hw/char/bcm2835_aux.h
> +++ b/include/hw/char/bcm2835_aux.h
> @@ -9,7 +9,7 @@
> #define BCM2835_AUX_H
>
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #define TYPE_BCM2835_AUX "bcm2835-aux"
> #define BCM2835_AUX(obj) OBJECT_CHECK(BCM2835AuxState, (obj), TYPE_BCM2835_AUX)
> diff --git a/include/hw/char/cadence_uart.h b/include/hw/char/cadence_uart.h
> index c836db4b74..eed7d8d358 100644
> --- a/include/hw/char/cadence_uart.h
> +++ b/include/hw/char/cadence_uart.h
> @@ -19,7 +19,7 @@
> #ifndef CADENCE_UART_H
>
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/timer.h"
>
> #define CADENCE_UART_RX_FIFO_SIZE 16
> diff --git a/include/hw/char/digic-uart.h b/include/hw/char/digic-uart.h
> index 340c8e1111..370b48a6c5 100644
> --- a/include/hw/char/digic-uart.h
> +++ b/include/hw/char/digic-uart.h
> @@ -19,7 +19,7 @@
> #define HW_CHAR_DIGIC_UART_H
>
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #define TYPE_DIGIC_UART "digic-uart"
> #define DIGIC_UART(obj) \
> diff --git a/include/hw/char/imx_serial.h b/include/hw/char/imx_serial.h
> index 4cc3fbc395..05500f5346 100644
> --- a/include/hw/char/imx_serial.h
> +++ b/include/hw/char/imx_serial.h
> @@ -19,7 +19,7 @@
> #define IMX_SERIAL_H
>
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #define TYPE_IMX_SERIAL "imx.serial"
> #define IMX_SERIAL(obj) OBJECT_CHECK(IMXSerialState, (obj), TYPE_IMX_SERIAL)
> diff --git a/include/hw/char/serial.h b/include/hw/char/serial.h
> index daebb076c2..01dcd2a8d2 100644
> --- a/include/hw/char/serial.h
> +++ b/include/hw/char/serial.h
> @@ -28,10 +28,10 @@
>
> #include "hw/hw.h"
> #include "sysemu/sysemu.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "exec/memory.h"
> #include "qemu/fifo8.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #define UART_FIFO_LENGTH 16 /* 16550A Fifo Length */
>
> diff --git a/include/hw/char/stm32f2xx_usart.h b/include/hw/char/stm32f2xx_usart.h
> index 3267523270..4259dbeb1e 100644
> --- a/include/hw/char/stm32f2xx_usart.h
> +++ b/include/hw/char/stm32f2xx_usart.h
> @@ -26,7 +26,7 @@
> #define HW_STM32F2XX_USART_H
>
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "hw/hw.h"
>
> #define USART_SR 0x00
> diff --git a/backends/baum.c b/backends/baum.c
> index 2eddcae119..302dd9666c 100644
> --- a/backends/baum.c
> +++ b/backends/baum.c
> @@ -24,7 +24,7 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "qemu-common.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/timer.h"
> #include "hw/usb.h"
> #include "ui/console.h"
> diff --git a/backends/msmouse.c b/backends/msmouse.c
> index d2c3162f1e..0ffd137ce8 100644
> --- a/backends/msmouse.c
> +++ b/backends/msmouse.c
> @@ -23,7 +23,7 @@
> */
> #include "qemu/osdep.h"
> #include "qemu-common.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "ui/console.h"
> #include "ui/input.h"
>
> diff --git a/backends/rng-egd.c b/backends/rng-egd.c
> index 380b19a0a1..5448f6e5f5 100644
> --- a/backends/rng-egd.c
> +++ b/backends/rng-egd.c
> @@ -12,7 +12,7 @@
>
> #include "qemu/osdep.h"
> #include "sysemu/rng.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qapi/error.h"
> #include "qapi/qmp/qerror.h"
>
> diff --git a/backends/testdev.c b/backends/testdev.c
> index 7df9248a13..031e9a23e8 100644
> --- a/backends/testdev.c
> +++ b/backends/testdev.c
> @@ -25,7 +25,7 @@
> */
> #include "qemu/osdep.h"
> #include "qemu-common.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #define BUF_SIZE 32
>
> diff --git a/backends/wctablet.c b/backends/wctablet.c
> index a4d3ae098a..07a4cde956 100644
> --- a/backends/wctablet.c
> +++ b/backends/wctablet.c
> @@ -32,7 +32,7 @@
>
> #include "qemu/osdep.h"
> #include "qemu-common.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "ui/console.h"
> #include "ui/input.h"
> #include "trace.h"
> diff --git a/chardev/char-console.c b/chardev/char-console.c
> index 8d972c1506..535ed65136 100644
> --- a/chardev/char-console.c
> +++ b/chardev/char-console.c
> @@ -22,7 +22,7 @@
> * THE SOFTWARE.
> */
> #include "qemu/osdep.h"
> -#include "char-win.h"
> +#include "chardev/char-win.h"
>
> static void qemu_chr_open_win_con(Chardev *chr,
> ChardevBackend *backend,
> diff --git a/chardev/char-fd.c b/chardev/char-fd.c
> index 0b182c552c..1584a3de20 100644
> --- a/chardev/char-fd.c
> +++ b/chardev/char-fd.c
> @@ -25,11 +25,11 @@
> #include "qemu/sockets.h"
> #include "qapi/error.h"
> #include "qemu-common.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "io/channel-file.h"
>
> -#include "char-fd.h"
> -#include "char-io.h"
> +#include "chardev/char-fd.h"
> +#include "chardev/char-io.h"
>
> /* Called with chr_write_lock held. */
> static int fd_chr_write(Chardev *chr, const uint8_t *buf, int len)
> diff --git a/chardev/char-file.c b/chardev/char-file.c
> index aed4ae1569..a57b88aaf2 100644
> --- a/chardev/char-file.c
> +++ b/chardev/char-file.c
> @@ -24,12 +24,12 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "qemu-common.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #ifdef _WIN32
> -#include "char-win.h"
> +#include "chardev/char-win.h"
> #else
> -#include "char-fd.h"
> +#include "chardev/char-fd.h"
> #endif
>
> static void qmp_chardev_open_file(Chardev *chr,
> diff --git a/chardev/char-io.c b/chardev/char-io.c
> index b5708eef45..f81052481a 100644
> --- a/chardev/char-io.c
> +++ b/chardev/char-io.c
> @@ -22,7 +22,7 @@
> * THE SOFTWARE.
> */
> #include "qemu/osdep.h"
> -#include "char-io.h"
> +#include "chardev/char-io.h"
>
> typedef struct IOWatchPoll {
> GSource parent;
> diff --git a/chardev/char-mux.c b/chardev/char-mux.c
> index 37d42c65c6..106c682e7f 100644
> --- a/chardev/char-mux.c
> +++ b/chardev/char-mux.c
> @@ -24,9 +24,9 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "qemu-common.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/block-backend.h"
> -#include "char-mux.h"
> +#include "chardev/char-mux.h"
>
> /* MUX driver for serial I/O splitting */
>
> diff --git a/chardev/char-null.c b/chardev/char-null.c
> index dc0d68ab2d..90bafe76f4 100644
> --- a/chardev/char-null.c
> +++ b/chardev/char-null.c
> @@ -22,7 +22,7 @@
> * THE SOFTWARE.
> */
> #include "qemu/osdep.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> static void null_chr_open(Chardev *chr,
> ChardevBackend *backend,
> diff --git a/chardev/char-parallel.c b/chardev/char-parallel.c
> index 3fa22ce29d..bce89f8c36 100644
> --- a/chardev/char-parallel.c
> +++ b/chardev/char-parallel.c
> @@ -22,7 +22,7 @@
> * THE SOFTWARE.
> */
> #include "qemu/osdep.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qapi/error.h"
> #include <sys/ioctl.h>
>
> @@ -41,8 +41,8 @@
> #endif
> #endif
>
> -#include "char-fd.h"
> -#include "char-parallel.h"
> +#include "chardev/char-fd.h"
> +#include "chardev/char-parallel.h"
>
> #if defined(__linux__)
>
> diff --git a/chardev/char-pipe.c b/chardev/char-pipe.c
> index aae950a22b..3a95e4c1b2 100644
> --- a/chardev/char-pipe.c
> +++ b/chardev/char-pipe.c
> @@ -23,12 +23,12 @@
> */
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #ifdef _WIN32
> -#include "char-win.h"
> +#include "chardev/char-win.h"
> #else
> -#include "char-fd.h"
> +#include "chardev/char-fd.h"
> #endif
>
> #ifdef _WIN32
> diff --git a/chardev/char-pty.c b/chardev/char-pty.c
> index 35a175d796..e5d20a0e6a 100644
> --- a/chardev/char-pty.c
> +++ b/chardev/char-pty.c
> @@ -24,12 +24,12 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "qemu-common.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "io/channel-file.h"
> #include "qemu/sockets.h"
> #include "qemu/error-report.h"
>
> -#include "char-io.h"
> +#include "chardev/char-io.h"
>
> #if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
> || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) \
> diff --git a/chardev/char-ringbuf.c b/chardev/char-ringbuf.c
> index d130069e88..df52b04d22 100644
> --- a/chardev/char-ringbuf.c
> +++ b/chardev/char-ringbuf.c
> @@ -22,7 +22,7 @@
> * THE SOFTWARE.
> */
> #include "qemu/osdep.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qmp-commands.h"
> #include "qemu/base64.h"
>
> diff --git a/chardev/char-serial.c b/chardev/char-serial.c
> index fef3a91c77..2f8f83821d 100644
> --- a/chardev/char-serial.c
> +++ b/chardev/char-serial.c
> @@ -27,14 +27,14 @@
> #include "qapi/error.h"
>
> #ifdef _WIN32
> -#include "char-win.h"
> +#include "chardev/char-win.h"
> #else
> #include <sys/ioctl.h>
> #include <termios.h>
> -#include "char-fd.h"
> +#include "chardev/char-fd.h"
> #endif
>
> -#include "char-serial.h"
> +#include "chardev/char-serial.h"
>
> #ifdef _WIN32
>
> diff --git a/chardev/char-socket.c b/chardev/char-socket.c
> index e2fb7f7cd5..ccc499cfa1 100644
> --- a/chardev/char-socket.c
> +++ b/chardev/char-socket.c
> @@ -22,14 +22,14 @@
> * THE SOFTWARE.
> */
> #include "qemu/osdep.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "io/channel-socket.h"
> #include "io/channel-tls.h"
> #include "qemu/error-report.h"
> #include "qapi/error.h"
> #include "qapi/clone-visitor.h"
>
> -#include "char-io.h"
> +#include "chardev/char-io.h"
>
> /***********************************************************/
> /* TCP Net console */
> diff --git a/chardev/char-stdio.c b/chardev/char-stdio.c
> index be4a65962c..6f5d798d7b 100644
> --- a/chardev/char-stdio.c
> +++ b/chardev/char-stdio.c
> @@ -25,14 +25,14 @@
> #include "qemu/sockets.h"
> #include "qapi/error.h"
> #include "qemu-common.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #ifdef _WIN32
> -#include "char-win.h"
> -#include "char-win-stdio.h"
> +#include "chardev/char-win.h"
> +#include "chardev/char-win-stdio.h"
> #else
> #include <termios.h>
> -#include "char-fd.h"
> +#include "chardev/char-fd.h"
> #endif
>
> #ifndef _WIN32
> diff --git a/chardev/char-udp.c b/chardev/char-udp.c
> index 607647642a..4ee11d3ebf 100644
> --- a/chardev/char-udp.c
> +++ b/chardev/char-udp.c
> @@ -22,11 +22,11 @@
> * THE SOFTWARE.
> */
> #include "qemu/osdep.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "io/channel-socket.h"
> #include "qapi/error.h"
>
> -#include "char-io.h"
> +#include "chardev/char-io.h"
>
> /***********************************************************/
> /* UDP Net console */
> diff --git a/chardev/char-win-stdio.c b/chardev/char-win-stdio.c
> index eb44afc17a..efcf7827eb 100644
> --- a/chardev/char-win-stdio.c
> +++ b/chardev/char-win-stdio.c
> @@ -23,8 +23,8 @@
> */
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> -#include "char-win.h"
> -#include "char-win-stdio.h"
> +#include "chardev/char-win.h"
> +#include "chardev/char-win-stdio.h"
>
> typedef struct {
> Chardev parent;
> diff --git a/chardev/char-win.c b/chardev/char-win.c
> index ec9a731be9..05518e0958 100644
> --- a/chardev/char-win.c
> +++ b/chardev/char-win.c
> @@ -24,7 +24,7 @@
> #include "qemu/osdep.h"
> #include "qemu-common.h"
> #include "qapi/error.h"
> -#include "char-win.h"
> +#include "chardev/char-win.h"
>
> static void win_chr_read(Chardev *chr, DWORD len)
> {
> diff --git a/chardev/char.c b/chardev/char.c
> index 4e24dc39af..a747e0279a 100644
> --- a/chardev/char.c
> +++ b/chardev/char.c
> @@ -28,16 +28,16 @@
> #include "sysemu/sysemu.h"
> #include "qemu/config-file.h"
> #include "qemu/error-report.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qmp-commands.h"
> #include "qapi-visit.h"
> #include "sysemu/replay.h"
> #include "qemu/help_option.h"
>
> -#include "char-mux.h"
> -#include "char-io.h"
> -#include "char-parallel.h"
> -#include "char-serial.h"
> +#include "chardev/char-mux.h"
> +#include "chardev/char-io.h"
> +#include "chardev/char-parallel.h"
> +#include "chardev/char-serial.h"
>
> /***********************************************************/
> /* character device */
> diff --git a/gdbstub.c b/gdbstub.c
> index 86eed4f97c..6515c635dc 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -25,7 +25,7 @@
> #include "qemu.h"
> #else
> #include "monitor/monitor.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/sysemu.h"
> #include "exec/gdbstub.h"
> #endif
> diff --git a/hmp.c b/hmp.c
> index 20f5daba5e..97d4822e52 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -17,7 +17,7 @@
> #include "hmp.h"
> #include "net/net.h"
> #include "net/eth.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/block-backend.h"
> #include "sysemu/sysemu.h"
> #include "qemu/config-file.h"
> diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
> index 9056f27bf8..40666b68a3 100644
> --- a/hw/arm/fsl-imx25.c
> +++ b/hw/arm/fsl-imx25.c
> @@ -30,7 +30,7 @@
> #include "sysemu/sysemu.h"
> #include "exec/address-spaces.h"
> #include "hw/boards.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> static void fsl_imx25_init(Object *obj)
> {
> diff --git a/hw/arm/fsl-imx31.c b/hw/arm/fsl-imx31.c
> index d7e2d832b2..c30130667e 100644
> --- a/hw/arm/fsl-imx31.c
> +++ b/hw/arm/fsl-imx31.c
> @@ -27,7 +27,7 @@
> #include "sysemu/sysemu.h"
> #include "exec/address-spaces.h"
> #include "hw/boards.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> static void fsl_imx31_init(Object *obj)
> {
> diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
> index 6969e734ad..27773c9c47 100644
> --- a/hw/arm/fsl-imx6.c
> +++ b/hw/arm/fsl-imx6.c
> @@ -24,7 +24,7 @@
> #include "qemu-common.h"
> #include "hw/arm/fsl-imx6.h"
> #include "sysemu/sysemu.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/error-report.h"
>
> #define NAME_SIZE 20
> diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
> index cf1b4ba58f..566749a9eb 100644
> --- a/hw/arm/omap2.c
> +++ b/hw/arm/omap2.c
> @@ -30,7 +30,7 @@
> #include "hw/arm/omap.h"
> #include "sysemu/sysemu.h"
> #include "qemu/timer.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "hw/block/flash.h"
> #include "hw/arm/soc_dma.h"
> #include "hw/sysbus.h"
> diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
> index eea551dc16..0d43cc707c 100644
> --- a/hw/arm/pxa2xx.c
> +++ b/hw/arm/pxa2xx.c
> @@ -17,7 +17,7 @@
> #include "hw/char/serial.h"
> #include "hw/i2c/i2c.h"
> #include "hw/ssi/ssi.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/block-backend.h"
> #include "sysemu/blockdev.h"
> #include "qemu/cutils.h"
> diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
> index 3311cc38a4..66cad198d4 100644
> --- a/hw/arm/strongarm.c
> +++ b/hw/arm/strongarm.c
> @@ -34,7 +34,7 @@
> #include "strongarm.h"
> #include "qemu/error-report.h"
> #include "hw/arm/arm.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/sysemu.h"
> #include "hw/ssi/ssi.h"
> #include "qemu/cutils.h"
> diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c
> index 3c193848fc..cc2087392e 100644
> --- a/hw/bt/hci-csr.c
> +++ b/hw/bt/hci-csr.c
> @@ -20,7 +20,7 @@
>
> #include "qemu/osdep.h"
> #include "qemu-common.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/timer.h"
> #include "qemu/bswap.h"
> #include "hw/irq.h"
> diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
> index 4dcee571c0..cf4c1d56ff 100644
> --- a/hw/char/cadence_uart.c
> +++ b/hw/char/cadence_uart.c
> @@ -23,7 +23,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/timer.h"
> #include "qemu/log.h"
> #include "hw/char/cadence_uart.h"
> diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c
> index 80dce07e7f..77d91c8558 100644
> --- a/hw/char/debugcon.c
> +++ b/hw/char/debugcon.c
> @@ -27,7 +27,7 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "hw/hw.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "hw/isa/isa.h"
> #include "hw/i386/pc.h"
>
> diff --git a/hw/char/digic-uart.c b/hw/char/digic-uart.c
> index 029f5bbf5e..4f1dec7f1d 100644
> --- a/hw/char/digic-uart.c
> +++ b/hw/char/digic-uart.c
> @@ -29,7 +29,7 @@
> #include "qemu/osdep.h"
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/log.h"
>
> #include "hw/char/digic-uart.h"
> diff --git a/hw/char/escc.c b/hw/char/escc.c
> index 9228091cec..df89d58eed 100644
> --- a/hw/char/escc.c
> +++ b/hw/char/escc.c
> @@ -26,7 +26,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "hw/char/escc.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "ui/console.h"
> #include "ui/input.h"
> #include "trace.h"
> diff --git a/hw/char/etraxfs_ser.c b/hw/char/etraxfs_ser.c
> index 54383878e0..33e3e16397 100644
> --- a/hw/char/etraxfs_ser.c
> +++ b/hw/char/etraxfs_ser.c
> @@ -24,7 +24,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/log.h"
>
> #define D(x)
> diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
> index bff706ab3a..94952fb90f 100644
> --- a/hw/char/exynos4210_uart.c
> +++ b/hw/char/exynos4210_uart.c
> @@ -23,7 +23,7 @@
> #include "hw/sysbus.h"
> #include "qemu/error-report.h"
> #include "sysemu/sysemu.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #include "hw/arm/exynos4210.h"
>
> diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c
> index db686e6a6f..39d1133c61 100644
> --- a/hw/char/grlib_apbuart.c
> +++ b/hw/char/grlib_apbuart.c
> @@ -24,7 +24,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #include "trace.h"
>
> diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c
> index 93929c2880..b8a3c92c9e 100644
> --- a/hw/char/ipoctal232.c
> +++ b/hw/char/ipoctal232.c
> @@ -11,7 +11,7 @@
> #include "qemu/osdep.h"
> #include "hw/ipack/ipack.h"
> #include "qemu/bitops.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> /* #define DEBUG_IPOCTAL */
>
> diff --git a/hw/char/lm32_juart.c b/hw/char/lm32_juart.c
> index f8c1e0d076..6b0633e518 100644
> --- a/hw/char/lm32_juart.c
> +++ b/hw/char/lm32_juart.c
> @@ -21,7 +21,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "trace.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #include "hw/char/lm32_juart.h"
>
> diff --git a/hw/char/lm32_uart.c b/hw/char/lm32_uart.c
> index 7f3597c4b0..a7610c28ce 100644
> --- a/hw/char/lm32_uart.c
> +++ b/hw/char/lm32_uart.c
> @@ -26,7 +26,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "trace.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/error-report.h"
>
> enum {
> diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c
> index e69672f4e9..b639b53c83 100644
> --- a/hw/char/mcf_uart.c
> +++ b/hw/char/mcf_uart.c
> @@ -9,7 +9,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "hw/m68k/mcf.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "exec/address-spaces.h"
> #include "qapi/error.h"
>
> diff --git a/hw/char/milkymist-uart.c b/hw/char/milkymist-uart.c
> index ae8e2f3554..5ef847c5eb 100644
> --- a/hw/char/milkymist-uart.c
> +++ b/hw/char/milkymist-uart.c
> @@ -25,7 +25,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "trace.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/error-report.h"
>
> enum {
> diff --git a/hw/char/omap_uart.c b/hw/char/omap_uart.c
> index 31ebb1592c..6fd1b9cf6b 100644
> --- a/hw/char/omap_uart.c
> +++ b/hw/char/omap_uart.c
> @@ -18,7 +18,7 @@
> * with this program; if not, see <http://www.gnu.org/licenses/>.
> */
> #include "qemu/osdep.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "hw/hw.h"
> #include "hw/arm/omap.h"
> #include "hw/char/serial.h"
> diff --git a/hw/char/parallel.c b/hw/char/parallel.c
> index c71a4a0f4f..c926df0bee 100644
> --- a/hw/char/parallel.c
> +++ b/hw/char/parallel.c
> @@ -25,7 +25,7 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "hw/hw.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "hw/isa/isa.h"
> #include "hw/i386/pc.h"
> #include "sysemu/sysemu.h"
> diff --git a/hw/char/pl011.c b/hw/char/pl011.c
> index 24ea9738b6..1757035bb3 100644
> --- a/hw/char/pl011.c
> +++ b/hw/char/pl011.c
> @@ -9,7 +9,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/log.h"
> #include "trace.h"
>
> diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c
> index 07d6ebd112..755d514188 100644
> --- a/hw/char/sclpconsole-lm.c
> +++ b/hw/char/sclpconsole-lm.c
> @@ -17,7 +17,7 @@
> #include "hw/qdev.h"
> #include "qemu/thread.h"
> #include "qemu/error-report.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #include "hw/s390x/sclp.h"
> #include "hw/s390x/event-facility.h"
> diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c
> index b78f240a73..0fd3cb4887 100644
> --- a/hw/char/sclpconsole.c
> +++ b/hw/char/sclpconsole.c
> @@ -19,7 +19,7 @@
>
> #include "hw/s390x/sclp.h"
> #include "hw/s390x/event-facility.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> typedef struct ASCIIConsoleData {
> EventBufferHeader ebh;
> diff --git a/hw/char/serial.c b/hw/char/serial.c
> index 03d890ca24..aa336333be 100644
> --- a/hw/char/serial.c
> +++ b/hw/char/serial.c
> @@ -25,7 +25,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/char/serial.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qapi/error.h"
> #include "qemu/timer.h"
> #include "exec/address-spaces.h"
> diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c
> index 303eb0a678..80c7696d8d 100644
> --- a/hw/char/sh_serial.c
> +++ b/hw/char/sh_serial.c
> @@ -27,7 +27,7 @@
> #include "qemu/osdep.h"
> #include "hw/hw.h"
> #include "hw/sh4/sh.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "exec/address-spaces.h"
> #include "qapi/error.h"
>
> diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c
> index e30c8da57c..2317e45404 100644
> --- a/hw/char/spapr_vty.c
> +++ b/hw/char/spapr_vty.c
> @@ -4,7 +4,7 @@
> #include "qemu-common.h"
> #include "cpu.h"
> #include "hw/qdev.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "hw/ppc/spapr.h"
> #include "hw/ppc/spapr_vio.h"
>
> diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c
> index b2dda01baa..c043104185 100644
> --- a/hw/char/terminal3270.c
> +++ b/hw/char/terminal3270.c
> @@ -13,7 +13,7 @@
>
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "hw/s390x/3270-ccw.h"
>
> /* Enough spaces for different window sizes. */
> diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c
> index 798d9b69fd..8418db6a07 100644
> --- a/hw/char/virtio-console.c
> +++ b/hw/char/virtio-console.c
> @@ -11,7 +11,7 @@
> */
>
> #include "qemu/osdep.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/error-report.h"
> #include "trace.h"
> #include "hw/virtio/virtio-serial.h"
> diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c
> index c01f41090e..1cdbe59f8a 100644
> --- a/hw/char/xen_console.c
> +++ b/hw/char/xen_console.c
> @@ -25,7 +25,7 @@
>
> #include "qapi/error.h"
> #include "hw/hw.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "hw/xen/xen_backend.h"
> #include "qapi/error.h"
>
> diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c
> index 37d313b429..bcebdae3da 100644
> --- a/hw/char/xilinx_uartlite.c
> +++ b/hw/char/xilinx_uartlite.c
> @@ -24,7 +24,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #define DUART(x)
>
> diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
> index 79c2014135..4da0c6a24e 100644
> --- a/hw/core/qdev-properties-system.c
> +++ b/hw/core/qdev-properties-system.c
> @@ -20,7 +20,7 @@
> #include "hw/block/block.h"
> #include "net/hub.h"
> #include "qapi/visitor.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/iothread.h"
>
> static void get_pointer(Object *obj, Visitor *v, Property *prop,
> diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
> index fa3617db2d..9f1a497322 100644
> --- a/hw/core/qdev-properties.c
> +++ b/hw/core/qdev-properties.c
> @@ -9,7 +9,7 @@
> #include "hw/block/block.h"
> #include "net/hub.h"
> #include "qapi/visitor.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> void qdev_prop_set_after_realize(DeviceState *dev, const char *name,
> Error **errp)
> diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
> index e8e3d250b6..35285383fd 100644
> --- a/hw/ipmi/ipmi_bmc_extern.c
> +++ b/hw/ipmi/ipmi_bmc_extern.c
> @@ -30,7 +30,7 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "qemu/timer.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/sysemu.h"
> #include "hw/ipmi/ipmi.h"
>
> diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
> index c707d24db4..5ce9f0a062 100644
> --- a/hw/isa/pc87312.c
> +++ b/hw/isa/pc87312.c
> @@ -30,7 +30,7 @@
> #include "sysemu/block-backend.h"
> #include "sysemu/blockdev.h"
> #include "sysemu/sysemu.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "trace.h"
>
>
> diff --git a/hw/mips/boston.c b/hw/mips/boston.c
> index 83f7b82386..56d22fe49b 100644
> --- a/hw/mips/boston.c
> +++ b/hw/mips/boston.c
> @@ -35,7 +35,7 @@
> #include "qemu/cutils.h"
> #include "qemu/error-report.h"
> #include "qemu/log.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/device_tree.h"
> #include "sysemu/sysemu.h"
> #include "sysemu/qtest.h"
> diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
> index 475e36a4c7..cd064dcf8c 100644
> --- a/hw/misc/ivshmem.c
> +++ b/hw/misc/ivshmem.c
> @@ -29,7 +29,7 @@
> #include "qemu/error-report.h"
> #include "qemu/event_notifier.h"
> #include "qom/object_interfaces.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/hostmem.h"
> #include "sysemu/qtest.h"
> #include "qapi/visitor.h"
> diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c
> index a41b0d6ec5..c2096b25ab 100644
> --- a/hw/usb/ccid-card-passthru.c
> +++ b/hw/usb/ccid-card-passthru.c
> @@ -9,7 +9,7 @@
> */
>
> #include "qemu/osdep.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/error-report.h"
> #include "qemu/sockets.h"
> #include "ccid.h"
> diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
> index 83a4f0e6fb..578760e1b3 100644
> --- a/hw/usb/dev-serial.c
> +++ b/hw/usb/dev-serial.c
> @@ -15,7 +15,7 @@
> #include "qemu/error-report.h"
> #include "hw/usb.h"
> #include "hw/usb/desc.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> //#define DEBUG_Serial
>
> diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
> index ad5ef783a6..c862c1adea 100644
> --- a/hw/usb/redirect.c
> +++ b/hw/usb/redirect.c
> @@ -33,7 +33,7 @@
> #include "qapi/qmp/qerror.h"
> #include "qemu/error-report.h"
> #include "qemu/iov.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> #include <usbredirparser.h>
> #include <usbredirfilter.h>
> diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
> index b87a176770..ff4cee82e6 100644
> --- a/hw/virtio/vhost-user.c
> +++ b/hw/virtio/vhost-user.c
> @@ -13,7 +13,7 @@
> #include "hw/virtio/vhost.h"
> #include "hw/virtio/vhost-backend.h"
> #include "hw/virtio/virtio-net.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/kvm.h"
> #include "qemu/error-report.h"
> #include "qemu/sockets.h"
> diff --git a/hw/xen/xen-common.c b/hw/xen/xen-common.c
> index a9055e9eba..0bed5770c9 100644
> --- a/hw/xen/xen-common.c
> +++ b/hw/xen/xen-common.c
> @@ -11,7 +11,7 @@
> #include "qemu/osdep.h"
> #include "hw/xen/xen_backend.h"
> #include "qmp-commands.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/accel.h"
> #include "migration/migration.h"
>
> diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
> index 11176e26bd..5b31cdc566 100644
> --- a/hw/xtensa/xtfpga.c
> +++ b/hw/xtensa/xtfpga.c
> @@ -40,7 +40,7 @@
> #include "hw/sysbus.h"
> #include "hw/block/flash.h"
> #include "sysemu/block-backend.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/device_tree.h"
> #include "qemu/error-report.h"
> #include "bootparam.h"
> diff --git a/monitor.c b/monitor.c
> index baa73c98b7..29b71ff2bc 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -35,7 +35,7 @@
> #include "exec/gdbstub.h"
> #include "net/net.h"
> #include "net/slirp.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "ui/qemu-spice.h"
> #include "sysemu/numa.h"
> #include "monitor/monitor.h"
> diff --git a/net/colo-compare.c b/net/colo-compare.c
> index 2639c7f0a2..619335d5e8 100644
> --- a/net/colo-compare.c
> +++ b/net/colo-compare.c
> @@ -25,7 +25,7 @@
> #include "qom/object.h"
> #include "qemu/typedefs.h"
> #include "net/queue.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/sockets.h"
> #include "qapi-visit.h"
> #include "net/colo.h"
> diff --git a/net/filter-mirror.c b/net/filter-mirror.c
> index 8b1b06977d..7adc2c10d2 100644
> --- a/net/filter-mirror.c
> +++ b/net/filter-mirror.c
> @@ -20,7 +20,7 @@
> #include "qemu/main-loop.h"
> #include "qemu/error-report.h"
> #include "trace.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/iov.h"
> #include "qemu/sockets.h"
>
> diff --git a/net/slirp.c b/net/slirp.c
> index c705a60b62..af3e8b22ac 100644
> --- a/net/slirp.c
> +++ b/net/slirp.c
> @@ -37,7 +37,7 @@
> #include "qemu/sockets.h"
> #include "slirp/libslirp.h"
> #include "slirp/ip6.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/sysemu.h"
> #include "qemu/cutils.h"
> #include "qapi/error.h"
> diff --git a/net/vhost-user.c b/net/vhost-user.c
> index 00a0c1cbc5..77d2ce22a6 100644
> --- a/net/vhost-user.c
> +++ b/net/vhost-user.c
> @@ -12,7 +12,7 @@
> #include "clients.h"
> #include "net/vhost_net.h"
> #include "net/vhost-user.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/config-file.h"
> #include "qemu/error-report.h"
> #include "qmp-commands.h"
> diff --git a/qmp.c b/qmp.c
> index f656940769..59448dcd16 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -21,7 +21,7 @@
> #include "qemu/config-file.h"
> #include "qemu/uuid.h"
> #include "qmp-commands.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "ui/qemu-spice.h"
> #include "ui/vnc.h"
> #include "sysemu/kvm.h"
> diff --git a/qtest.c b/qtest.c
> index 5aa6636ca8..dbf70a7018 100644
> --- a/qtest.c
> +++ b/qtest.c
> @@ -17,7 +17,7 @@
> #include "cpu.h"
> #include "sysemu/qtest.h"
> #include "hw/qdev.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "exec/ioport.h"
> #include "exec/memory.h"
> #include "hw/irq.h"
> diff --git a/replay/replay-char.c b/replay/replay-char.c
> index aa65955942..cbf7c04a9f 100755
> --- a/replay/replay-char.c
> +++ b/replay/replay-char.c
> @@ -14,7 +14,7 @@
> #include "sysemu/replay.h"
> #include "replay-internal.h"
> #include "sysemu/sysemu.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
>
> /* Char drivers that generate qemu_chr_be_write events
> that should be saved into the log. */
> diff --git a/slirp/slirp.c b/slirp/slirp.c
> index 2f2ec2c1b3..3b92cb54ce 100644
> --- a/slirp/slirp.c
> +++ b/slirp/slirp.c
> @@ -25,7 +25,7 @@
> #include "qemu-common.h"
> #include "qemu/timer.h"
> #include "qemu/error-report.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "slirp.h"
> #include "hw/hw.h"
> #include "qemu/cutils.h"
> diff --git a/spice-qemu-char.c b/spice-qemu-char.c
> index 4d1c76e8a4..1c6c2e3969 100644
> --- a/spice-qemu-char.c
> +++ b/spice-qemu-char.c
> @@ -1,7 +1,7 @@
> #include "qemu/osdep.h"
> #include "trace-root.h"
> #include "ui/qemu-spice.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/error-report.h"
> #include <spice.h>
> #include <spice/protocol.h>
> diff --git a/tests/postcopy-test.c b/tests/postcopy-test.c
> index e86f87656a..8142f2ab90 100644
> --- a/tests/postcopy-test.c
> +++ b/tests/postcopy-test.c
> @@ -16,7 +16,7 @@
> #include "qemu/option.h"
> #include "qemu/range.h"
> #include "qemu/sockets.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/sysemu.h"
> #include "hw/nvram/chrp_nvram.h"
>
> diff --git a/tests/test-char.c b/tests/test-char.c
> index 124d0c5439..9340c55058 100644
> --- a/tests/test-char.c
> +++ b/tests/test-char.c
> @@ -4,7 +4,7 @@
> #include "qemu-common.h"
> #include "qemu/config-file.h"
> #include "qemu/sockets.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/sysemu.h"
> #include "qapi/error.h"
> #include "qom/qom-qobject.h"
> diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
> index 9095af267e..acc392d046 100644
> --- a/tests/vhost-user-test.c
> +++ b/tests/vhost-user-test.c
> @@ -16,7 +16,7 @@
> #include "qemu/option.h"
> #include "qemu/range.h"
> #include "qemu/sockets.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "sysemu/sysemu.h"
> #include "libqos/libqos.h"
> #include "libqos/pci-pc.h"
> diff --git a/ui/console.c b/ui/console.c
> index ac66b3c910..6cf795a23d 100644
> --- a/ui/console.c
> +++ b/ui/console.c
> @@ -27,7 +27,7 @@
> #include "hw/qdev-core.h"
> #include "qemu/timer.h"
> #include "qmp-commands.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "trace.h"
> #include "exec/memory.h"
>
> diff --git a/ui/gtk.c b/ui/gtk.c
> index 0213ad0efc..5bd87c265a 100644
> --- a/ui/gtk.c
> +++ b/ui/gtk.c
> @@ -54,7 +54,7 @@
> #include "qmp-commands.h"
> #include "x_keymap.h"
> #include "keymaps.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qom/object.h"
>
> #define MAX_VCS 10
> diff --git a/vl.c b/vl.c
> index 3465121217..009dfa58b4 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -81,7 +81,7 @@ int main(int argc, char **argv)
> #include "sysemu/numa.h"
> #include "exec/gdbstub.h"
> #include "qemu/timer.h"
> -#include "sysemu/char.h"
> +#include "chardev/char.h"
> #include "qemu/bitmap.h"
> #include "qemu/log.h"
> #include "sysemu/blockdev.h"
> diff --git a/MAINTAINERS b/MAINTAINERS
> index ef2ec58a94..59e03436ad 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1230,6 +1230,7 @@ M: Paolo Bonzini <pbonzini@redhat.com>
> M: Marc-André Lureau <marcandre.lureau@redhat.com>
> S: Maintained
> F: chardev/
> +F: include/chardev/
> F: backends/msmouse.c
> F: backends/testdev.c
>
>
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 08/14] chardev: serial & parallel declaration to own headers
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 08/14] chardev: serial & parallel declaration to own headers Marc-André Lureau
@ 2017-05-29 21:03 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 33+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-29 21:03 UTC (permalink / raw)
To: Marc-André Lureau, qemu-devel; +Cc: pbonzini
On 05/29/2017 05:45 AM, Marc-André Lureau wrote:
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> include/chardev/char-parallel.h | 20 +++++++++++++++++++-
> include/chardev/char-serial.h | 22 ++++++++++++++++++++++
> include/chardev/char.h | 36 ------------------------------------
> backends/wctablet.c | 2 +-
> hw/arm/strongarm.c | 2 +-
> hw/bt/hci-csr.c | 2 +-
> hw/char/cadence_uart.c | 2 +-
> hw/char/escc.c | 2 +-
> hw/char/exynos4210_uart.c | 2 +-
> hw/char/parallel.c | 2 +-
> hw/char/serial.c | 2 +-
> hw/usb/dev-serial.c | 2 +-
> 12 files changed, 50 insertions(+), 46 deletions(-)
>
> diff --git a/include/chardev/char-parallel.h b/include/chardev/char-parallel.h
> index 26742f9d5c..3284a1b96b 100644
> --- a/include/chardev/char-parallel.h
> +++ b/include/chardev/char-parallel.h
> @@ -24,9 +24,27 @@
> #ifndef CHAR_PARALLEL_H
> #define CHAR_PARALLEL_H
>
> -#if defined(__linux__) || defined(__FreeBSD__) || \
> +#include "chardev/char.h"
> +
> +#if defined(__linux__) || defined(__FreeBSD__) || \
> defined(__FreeBSD_kernel__) || defined(__DragonFly__)
> #define HAVE_CHARDEV_PARPORT 1
> #endif
>
> +#define CHR_IOCTL_PP_READ_DATA 3
> +#define CHR_IOCTL_PP_WRITE_DATA 4
> +#define CHR_IOCTL_PP_READ_CONTROL 5
> +#define CHR_IOCTL_PP_WRITE_CONTROL 6
> +#define CHR_IOCTL_PP_READ_STATUS 7
> +#define CHR_IOCTL_PP_EPP_READ_ADDR 8
> +#define CHR_IOCTL_PP_EPP_READ 9
> +#define CHR_IOCTL_PP_EPP_WRITE_ADDR 10
> +#define CHR_IOCTL_PP_EPP_WRITE 11
> +#define CHR_IOCTL_PP_DATA_DIR 12
> +
> +struct ParallelIOArg {
> + void *buffer;
> + int count;
> +};
> +
> #endif /* CHAR_PARALLEL_H */
> diff --git a/include/chardev/char-serial.h b/include/chardev/char-serial.h
> index 64a27f63b1..cb2e59e82a 100644
> --- a/include/chardev/char-serial.h
> +++ b/include/chardev/char-serial.h
> @@ -24,6 +24,8 @@
> #ifndef CHAR_SERIAL_H
> #define CHAR_SERIAL_H
>
> +#include "chardev/char.h"
> +
> #ifdef _WIN32
> #define HAVE_CHARDEV_SERIAL 1
> #elif defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
> @@ -32,4 +34,24 @@
> #define HAVE_CHARDEV_SERIAL 1
> #endif
>
> +#define CHR_IOCTL_SERIAL_SET_PARAMS 1
> +typedef struct {
> + int speed;
> + int parity;
> + int data_bits;
> + int stop_bits;
> +} QEMUSerialSetParams;
> +
> +#define CHR_IOCTL_SERIAL_SET_BREAK 2
> +
> +#define CHR_IOCTL_SERIAL_SET_TIOCM 13
> +#define CHR_IOCTL_SERIAL_GET_TIOCM 14
> +
> +#define CHR_TIOCM_CTS 0x020
> +#define CHR_TIOCM_CAR 0x040
> +#define CHR_TIOCM_DSR 0x100
> +#define CHR_TIOCM_RI 0x080
> +#define CHR_TIOCM_DTR 0x002
> +#define CHR_TIOCM_RTS 0x004
> +
> #endif
> diff --git a/include/chardev/char.h b/include/chardev/char.h
> index fffc0f40d4..95273e10ae 100644
> --- a/include/chardev/char.h
> +++ b/include/chardev/char.h
> @@ -27,42 +27,6 @@ typedef enum {
>
> #define CHR_READ_BUF_LEN 4096
>
> -#define CHR_IOCTL_SERIAL_SET_PARAMS 1
> -typedef struct {
> - int speed;
> - int parity;
> - int data_bits;
> - int stop_bits;
> -} QEMUSerialSetParams;
> -
> -#define CHR_IOCTL_SERIAL_SET_BREAK 2
> -
> -#define CHR_IOCTL_PP_READ_DATA 3
> -#define CHR_IOCTL_PP_WRITE_DATA 4
> -#define CHR_IOCTL_PP_READ_CONTROL 5
> -#define CHR_IOCTL_PP_WRITE_CONTROL 6
> -#define CHR_IOCTL_PP_READ_STATUS 7
> -#define CHR_IOCTL_PP_EPP_READ_ADDR 8
> -#define CHR_IOCTL_PP_EPP_READ 9
> -#define CHR_IOCTL_PP_EPP_WRITE_ADDR 10
> -#define CHR_IOCTL_PP_EPP_WRITE 11
> -#define CHR_IOCTL_PP_DATA_DIR 12
> -
> -struct ParallelIOArg {
> - void *buffer;
> - int count;
> -};
> -
> -#define CHR_IOCTL_SERIAL_SET_TIOCM 13
> -#define CHR_IOCTL_SERIAL_GET_TIOCM 14
> -
> -#define CHR_TIOCM_CTS 0x020
> -#define CHR_TIOCM_CAR 0x040
> -#define CHR_TIOCM_DSR 0x100
> -#define CHR_TIOCM_RI 0x080
> -#define CHR_TIOCM_DTR 0x002
> -#define CHR_TIOCM_RTS 0x004
> -
> typedef void IOEventHandler(void *opaque, int event);
>
> typedef enum {
> diff --git a/backends/wctablet.c b/backends/wctablet.c
> index 07a4cde956..6c13c2c58a 100644
> --- a/backends/wctablet.c
> +++ b/backends/wctablet.c
> @@ -32,7 +32,7 @@
>
> #include "qemu/osdep.h"
> #include "qemu-common.h"
> -#include "chardev/char.h"
> +#include "chardev/char-serial.h"
> #include "ui/console.h"
> #include "ui/input.h"
> #include "trace.h"
> diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
> index 66cad198d4..967caea749 100644
> --- a/hw/arm/strongarm.c
> +++ b/hw/arm/strongarm.c
> @@ -34,7 +34,7 @@
> #include "strongarm.h"
> #include "qemu/error-report.h"
> #include "hw/arm/arm.h"
> -#include "chardev/char.h"
> +#include "chardev/char-serial.h"
> #include "sysemu/sysemu.h"
> #include "hw/ssi/ssi.h"
> #include "qemu/cutils.h"
> diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c
> index cc2087392e..0f2021086d 100644
> --- a/hw/bt/hci-csr.c
> +++ b/hw/bt/hci-csr.c
> @@ -20,7 +20,7 @@
>
> #include "qemu/osdep.h"
> #include "qemu-common.h"
> -#include "chardev/char.h"
> +#include "chardev/char-serial.h"
> #include "qemu/timer.h"
> #include "qemu/bswap.h"
> #include "hw/irq.h"
> diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
> index cf4c1d56ff..4bfc185376 100644
> --- a/hw/char/cadence_uart.c
> +++ b/hw/char/cadence_uart.c
> @@ -23,7 +23,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-serial.h"
> #include "qemu/timer.h"
> #include "qemu/log.h"
> #include "hw/char/cadence_uart.h"
> diff --git a/hw/char/escc.c b/hw/char/escc.c
> index df89d58eed..81d792cb47 100644
> --- a/hw/char/escc.c
> +++ b/hw/char/escc.c
> @@ -26,7 +26,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "hw/char/escc.h"
> -#include "chardev/char.h"
> +#include "chardev/char-serial.h"
> #include "ui/console.h"
> #include "ui/input.h"
> #include "trace.h"
> diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
> index 94952fb90f..d93125645a 100644
> --- a/hw/char/exynos4210_uart.c
> +++ b/hw/char/exynos4210_uart.c
> @@ -23,7 +23,7 @@
> #include "hw/sysbus.h"
> #include "qemu/error-report.h"
> #include "sysemu/sysemu.h"
> -#include "chardev/char.h"
> +#include "chardev/char-serial.h"
>
> #include "hw/arm/exynos4210.h"
>
> diff --git a/hw/char/parallel.c b/hw/char/parallel.c
> index c926df0bee..1d6c6e9f33 100644
> --- a/hw/char/parallel.c
> +++ b/hw/char/parallel.c
> @@ -25,7 +25,7 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "hw/hw.h"
> -#include "chardev/char.h"
> +#include "chardev/char-parallel.h"
> #include "hw/isa/isa.h"
> #include "hw/i386/pc.h"
> #include "sysemu/sysemu.h"
> diff --git a/hw/char/serial.c b/hw/char/serial.c
> index aa336333be..23e5fe9d18 100644
> --- a/hw/char/serial.c
> +++ b/hw/char/serial.c
> @@ -25,7 +25,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/char/serial.h"
> -#include "chardev/char.h"
> +#include "chardev/char-serial.h"
> #include "qapi/error.h"
> #include "qemu/timer.h"
> #include "exec/address-spaces.h"
> diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
> index 578760e1b3..a145c919e9 100644
> --- a/hw/usb/dev-serial.c
> +++ b/hw/usb/dev-serial.c
> @@ -15,7 +15,7 @@
> #include "qemu/error-report.h"
> #include "hw/usb.h"
> #include "hw/usb/desc.h"
> -#include "chardev/char.h"
> +#include "chardev/char-serial.h"
>
> //#define DEBUG_Serial
>
>
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 10/14] char: generalize qemu_chr_write_all()
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 10/14] char: generalize qemu_chr_write_all() Marc-André Lureau
@ 2017-05-29 21:09 ` Philippe Mathieu-Daudé
2017-05-30 5:59 ` Marc-André Lureau
0 siblings, 1 reply; 33+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-29 21:09 UTC (permalink / raw)
To: Marc-André Lureau, qemu-devel; +Cc: pbonzini
Hi Marc-André,
On 05/29/2017 05:45 AM, Marc-André Lureau wrote:
> qemu_chr_fe_write() is similar to qemu_chr_write_all(): the later write
> all with a chardev backend.
>
> Make qemu_chr_write() and qemu_chr_fe_write_buffer() take an 'all'
> argument. If false, handle 'partial' write the way qemu_chr_fe_write()
> use to, and call qemu_chr_write() from qemu_chr_fe_write().
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> chardev/char.c | 70 +++++++++++++++++++++++-----------------------------------
> 1 file changed, 28 insertions(+), 42 deletions(-)
>
> diff --git a/chardev/char.c b/chardev/char.c
> index a747e0279a..9a7c70c7aa 100644
> --- a/chardev/char.c
> +++ b/chardev/char.c
> @@ -96,7 +96,8 @@ static void qemu_chr_fe_write_log(Chardev *s,
> }
>
> static int qemu_chr_fe_write_buffer(Chardev *s,
> - const uint8_t *buf, int len, int *offset)
> + const uint8_t *buf, int len,
> + int *offset, bool write_all)
> {
> ChardevClass *cc = CHARDEV_GET_CLASS(s);
> int res = 0;
> @@ -106,7 +107,7 @@ static int qemu_chr_fe_write_buffer(Chardev *s,
> while (*offset < len) {
> retry:
> res = cc->chr_write(s, buf + *offset, len - *offset);
> - if (res < 0 && errno == EAGAIN) {
> + if (res < 0 && errno == EAGAIN && write_all) {
> g_usleep(100);
> goto retry;
> }
> @@ -116,6 +117,9 @@ static int qemu_chr_fe_write_buffer(Chardev *s,
> }
>
> *offset += res;
> + if (!write_all) {
> + break;
> + }
> }
> if (*offset > 0) {
> qemu_chr_fe_write_log(s, buf, *offset);
> @@ -130,54 +134,20 @@ static bool qemu_chr_replay(Chardev *chr)
> return qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_REPLAY);
> }
>
> -int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)
> +static int qemu_chr_write(Chardev *s, const uint8_t *buf, int len,
> + bool write_all)
> {
> - Chardev *s = be->chr;
> - ChardevClass *cc;
> - int ret;
> -
> - if (!s) {
> - return 0;
> - }
> -
> - if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
> - int offset;
> - replay_char_write_event_load(&ret, &offset);
> - assert(offset <= len);
> - qemu_chr_fe_write_buffer(s, buf, offset, &offset);
> - return ret;
> - }
> -
> - cc = CHARDEV_GET_CLASS(s);
> - qemu_mutex_lock(&s->chr_write_lock);
> - ret = cc->chr_write(s, buf, len);
> -
> - if (ret > 0) {
> - qemu_chr_fe_write_log(s, buf, ret);
> - }
> -
> - qemu_mutex_unlock(&s->chr_write_lock);
> -
> - if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
> - replay_char_write_event_save(ret, ret < 0 ? 0 : ret);
> - }
> -
> - return ret;
> -}
> -
> -int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len)
> -{
> - int offset;
> + int offset = 0;
> int res;
>
> if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
> replay_char_write_event_load(&res, &offset);
> assert(offset <= len);
> - qemu_chr_fe_write_buffer(s, buf, offset, &offset);
> + qemu_chr_fe_write_buffer(s, buf, offset, &offset, true);
> return res;
> }
>
> - res = qemu_chr_fe_write_buffer(s, buf, len, &offset);
> + res = qemu_chr_fe_write_buffer(s, buf, len, &offset, write_all);
>
> if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
> replay_char_write_event_save(res, offset);
> @@ -189,6 +159,22 @@ int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len)
> return offset;
> }
>
> +int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len)
> +{
> + return qemu_chr_write(s, buf, len, true);
> +}
> +
> +int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)
> +{
> + Chardev *s = be->chr;
> +
> + if (!s) {
> + return 0;
> + }
> +
> + return qemu_chr_write(s, buf, len, false);
> +}
> +
> int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len)
> {
> Chardev *s = be->chr;
> @@ -197,7 +183,7 @@ int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len)
> return 0;
> }
>
> - return qemu_chr_write_all(s, buf, len);
> + return qemu_chr_write(s, buf, len, true);
I think calling qemu_chr_write_all() is more readable.
Either ways:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> }
>
> int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len)
>
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit Marc-André Lureau
@ 2017-05-29 21:25 ` Philippe Mathieu-Daudé
2017-06-07 16:41 ` Anthony PERARD
1 sibling, 0 replies; 33+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-29 21:25 UTC (permalink / raw)
To: Marc-André Lureau, qemu-devel; +Cc: pbonzini
Hi Marc-André,
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
On 05/29/2017 05:45 AM, Marc-André Lureau wrote:
> Move all the fronted struct and methods to a seperate unit. This avoids
"frontend, separate"
> accidentally mixing backend and frontend calls, and helps with readibilty.
"readability"
Indeed this patch makes it much cleaner.
> Make qemu_chr_replay() a macro shared by both char and char-fe.
>
> Export qemu_chr_write(), and use a macro for qemu_chr_write_all()
This change seems related to the previous commit, is it possible to move
it there?
> (nb: yes, CharBackend is for char frontend :)
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> include/chardev/char-fe.h | 249 ++++++++++++++++++++++++++
> include/chardev/char-mux.h | 1 +
> include/chardev/char.h | 242 +-------------------------
> include/hw/char/bcm2835_aux.h | 2 +-
> include/hw/char/cadence_uart.h | 2 +-
> include/hw/char/digic-uart.h | 2 +-
> include/hw/char/imx_serial.h | 2 +-
> include/hw/char/serial.h | 2 +-
> include/hw/char/stm32f2xx_usart.h | 2 +-
> backends/rng-egd.c | 2 +-
> chardev/char-fe.c | 358 ++++++++++++++++++++++++++++++++++++++
> chardev/char.c | 343 +-----------------------------------
> gdbstub.c | 1 +
> hw/arm/omap2.c | 2 +-
> hw/arm/pxa2xx.c | 2 +-
> hw/arm/strongarm.c | 1 +
> hw/char/cadence_uart.c | 1 +
> hw/char/debugcon.c | 2 +-
> hw/char/digic-uart.c | 2 +-
> hw/char/escc.c | 1 +
> hw/char/etraxfs_ser.c | 2 +-
> hw/char/exynos4210_uart.c | 1 +
> hw/char/grlib_apbuart.c | 2 +-
> hw/char/ipoctal232.c | 2 +-
> hw/char/lm32_juart.c | 2 +-
> hw/char/lm32_uart.c | 2 +-
> hw/char/mcf_uart.c | 2 +-
> hw/char/milkymist-uart.c | 2 +-
> hw/char/parallel.c | 1 +
> hw/char/pl011.c | 2 +-
> hw/char/sclpconsole-lm.c | 2 +-
> hw/char/sclpconsole.c | 2 +-
> hw/char/sh_serial.c | 2 +-
> hw/char/spapr_vty.c | 2 +-
> hw/char/terminal3270.c | 2 +-
> hw/char/virtio-console.c | 2 +-
> hw/char/xen_console.c | 2 +-
> hw/char/xilinx_uartlite.c | 2 +-
> hw/core/qdev-properties-system.c | 2 +-
> hw/ipmi/ipmi_bmc_extern.c | 2 +-
> hw/misc/ivshmem.c | 2 +-
> hw/usb/ccid-card-passthru.c | 2 +-
> hw/usb/dev-serial.c | 1 +
> hw/usb/redirect.c | 2 +-
> hw/virtio/vhost-user.c | 2 +-
> monitor.c | 2 +-
> net/colo-compare.c | 2 +-
> net/filter-mirror.c | 2 +-
> net/slirp.c | 2 +-
> net/vhost-user.c | 2 +-
> qtest.c | 2 +-
> slirp/slirp.c | 2 +-
> tests/test-char.c | 2 +-
> tests/vhost-user-test.c | 2 +-
> ui/console.c | 2 +-
> chardev/Makefile.objs | 1 +
> 56 files changed, 664 insertions(+), 623 deletions(-)
> create mode 100644 include/chardev/char-fe.h
> create mode 100644 chardev/char-fe.c
>
> diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h
> new file mode 100644
> index 0000000000..bd82093218
> --- /dev/null
> +++ b/include/chardev/char-fe.h
> @@ -0,0 +1,249 @@
> +#ifndef QEMU_CHAR_FE_H
> +#define QEMU_CHAR_FE_H
> +
> +#include "chardev/char.h"
> +
> +typedef void IOEventHandler(void *opaque, int event);
> +
> +/* This is the backend as seen by frontend, the actual backend is
> + * Chardev */
> +struct CharBackend {
> + Chardev *chr;
> + IOEventHandler *chr_event;
> + IOCanReadHandler *chr_can_read;
> + IOReadHandler *chr_read;
> + void *opaque;
> + int tag;
> + int fe_open;
> +};
> +
> +/**
> + * @qemu_chr_fe_init:
> + *
> + * Initializes a front end for the given CharBackend and
> + * Chardev. Call qemu_chr_fe_deinit() to remove the association and
> + * release the driver.
> + *
> + * Returns: false on error.
> + */
> +bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp);
> +
> +/**
> + * @qemu_chr_fe_deinit:
> + *
> + * Dissociate the CharBackend from the Chardev.
> + *
> + * Safe to call without associated Chardev.
> + */
> +void qemu_chr_fe_deinit(CharBackend *b);
> +
> +/**
> + * @qemu_chr_fe_get_driver:
> + *
> + * Returns the driver associated with a CharBackend or NULL if no
> + * associated Chardev.
> + */
> +Chardev *qemu_chr_fe_get_driver(CharBackend *be);
> +
> +/**
> + * @qemu_chr_fe_set_handlers:
> + * @b: a CharBackend
> + * @fd_can_read: callback to get the amount of data the frontend may
> + * receive
> + * @fd_read: callback to receive data from char
> + * @fd_event: event callback
> + * @opaque: an opaque pointer for the callbacks
> + * @context: a main loop context or NULL for the default
> + * @set_open: whether to call qemu_chr_fe_set_open() implicitely when
> + * any of the handler is non-NULL
> + *
> + * Set the front end char handlers. The front end takes the focus if
> + * any of the handler is non-NULL.
> + *
> + * Without associated Chardev, nothing is changed.
> + */
> +void qemu_chr_fe_set_handlers(CharBackend *b,
> + IOCanReadHandler *fd_can_read,
> + IOReadHandler *fd_read,
> + IOEventHandler *fd_event,
> + void *opaque,
> + GMainContext *context,
> + bool set_open);
> +
> +/**
> + * @qemu_chr_fe_take_focus:
> + *
> + * Take the focus (if the front end is muxed).
> + *
> + * Without associated Chardev, nothing is changed.
> + */
> +void qemu_chr_fe_take_focus(CharBackend *b);
> +
> +/**
> + * @qemu_chr_fe_accept_input:
> + *
> + * Notify that the frontend is ready to receive data
> + */
> +void qemu_chr_fe_accept_input(CharBackend *be);
> +
> +/**
> + * @qemu_chr_fe_disconnect:
> + *
> + * Close a fd accpeted by character backend.
> + * Without associated Chardev, do nothing.
> + */
> +void qemu_chr_fe_disconnect(CharBackend *be);
> +
> +/**
> + * @qemu_chr_fe_wait_connected:
> + *
> + * Wait for characted backend to be connected, return < 0 on error or
> + * if no assicated Chardev.
> + */
> +int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp);
> +
> +/**
> + * @qemu_chr_fe_set_echo:
> + *
> + * Ask the backend to override its normal echo setting. This only really
> + * applies to the stdio backend and is used by the QMP server such that you
> + * can see what you type if you try to type QMP commands.
> + * Without associated Chardev, do nothing.
> + *
> + * @echo true to enable echo, false to disable echo
> + */
> +void qemu_chr_fe_set_echo(CharBackend *be, bool echo);
> +
> +/**
> + * @qemu_chr_fe_set_open:
> + *
> + * Set character frontend open status. This is an indication that the
> + * front end is ready (or not) to begin doing I/O.
> + * Without associated Chardev, do nothing.
> + */
> +void qemu_chr_fe_set_open(CharBackend *be, int fe_open);
> +
> +/**
> + * @qemu_chr_fe_printf:
> + *
> + * Write to a character backend using a printf style interface. This
> + * function is thread-safe. It does nothing without associated
> + * Chardev.
> + *
> + * @fmt see #printf
> + */
> +void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...)
> + GCC_FMT_ATTR(2, 3);
> +
> +/**
> + * @qemu_chr_fe_add_watch:
> + *
> + * If the backend is connected, create and add a #GSource that fires
> + * when the given condition (typically G_IO_OUT|G_IO_HUP or G_IO_HUP)
> + * is active; return the #GSource's tag. If it is disconnected,
> + * or without associated Chardev, return 0.
> + *
> + * @cond the condition to poll for
> + * @func the function to call when the condition happens
> + * @user_data the opaque pointer to pass to @func
> + *
> + * Returns: the source tag
> + */
> +guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond,
> + GIOFunc func, void *user_data);
> +
> +/**
> + * @qemu_chr_fe_write:
> + *
> + * Write data to a character backend from the front end. This function
> + * will send data from the front end to the back end. This function
> + * is thread-safe.
> + *
> + * @buf the data
> + * @len the number of bytes to send
> + *
> + * Returns: the number of bytes consumed (0 if no assicated Chardev)
> + */
> +int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len);
> +
> +/**
> + * @qemu_chr_fe_write_all:
> + *
> + * Write data to a character backend from the front end. This function will
> + * send data from the front end to the back end. Unlike @qemu_chr_fe_write,
> + * this function will block if the back end cannot consume all of the data
> + * attempted to be written. This function is thread-safe.
> + *
> + * @buf the data
> + * @len the number of bytes to send
> + *
> + * Returns: the number of bytes consumed (0 if no assicated Chardev)
> + */
> +int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len);
> +
> +/**
> + * @qemu_chr_fe_read_all:
> + *
> + * Read data to a buffer from the back end.
> + *
> + * @buf the data buffer
> + * @len the number of bytes to read
> + *
> + * Returns: the number of bytes read (0 if no assicated Chardev)
> + */
> +int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len);
> +
> +/**
> + * @qemu_chr_fe_ioctl:
> + *
> + * Issue a device specific ioctl to a backend. This function is thread-safe.
> + *
> + * @cmd see CHR_IOCTL_*
> + * @arg the data associated with @cmd
> + *
> + * Returns: if @cmd is not supported by the backend or there is no
> + * associated Chardev, -ENOTSUP, otherwise the return
> + * value depends on the semantics of @cmd
> + */
> +int qemu_chr_fe_ioctl(CharBackend *be, int cmd, void *arg);
> +
> +/**
> + * @qemu_chr_fe_get_msgfd:
> + *
> + * For backends capable of fd passing, return the latest file descriptor passed
> + * by a client.
> + *
> + * Returns: -1 if fd passing isn't supported or there is no pending file
> + * descriptor. If a file descriptor is returned, subsequent calls to
> + * this function will return -1 until a client sends a new file
> + * descriptor.
> + */
> +int qemu_chr_fe_get_msgfd(CharBackend *be);
> +
> +/**
> + * @qemu_chr_fe_get_msgfds:
> + *
> + * For backends capable of fd passing, return the number of file received
> + * descriptors and fills the fds array up to num elements
> + *
> + * Returns: -1 if fd passing isn't supported or there are no pending file
> + * descriptors. If file descriptors are returned, subsequent calls to
> + * this function will return -1 until a client sends a new set of file
> + * descriptors.
> + */
> +int qemu_chr_fe_get_msgfds(CharBackend *be, int *fds, int num);
> +
> +/**
> + * @qemu_chr_fe_set_msgfds:
> + *
> + * For backends capable of fd passing, set an array of fds to be passed with
> + * the next send operation.
> + * A subsequent call to this function before calling a write function will
> + * result in overwriting the fd array with the new value without being send.
> + * Upon writing the message the fd array is freed.
> + *
> + * Returns: -1 if fd passing isn't supported or no associated Chardev.
> + */
> +int qemu_chr_fe_set_msgfds(CharBackend *be, int *fds, int num);
> +
> +#endif /* QEMU_CHAR_FE_H */
> diff --git a/include/chardev/char-mux.h b/include/chardev/char-mux.h
> index 45cdfc7e67..8928977897 100644
> --- a/include/chardev/char-mux.h
> +++ b/include/chardev/char-mux.h
> @@ -25,6 +25,7 @@
> #define CHAR_MUX_H
>
> #include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> extern bool muxes_realized;
>
> diff --git a/include/chardev/char.h b/include/chardev/char.h
> index 95273e10ae..8a9ade4931 100644
> --- a/include/chardev/char.h
> +++ b/include/chardev/char.h
> @@ -16,6 +16,7 @@
> #define IAC 255
>
> /* character device */
> +typedef struct CharBackend CharBackend;
>
> typedef enum {
> CHR_EVENT_BREAK, /* serial break char */
> @@ -27,8 +28,6 @@ typedef enum {
>
> #define CHR_READ_BUF_LEN 4096
>
> -typedef void IOEventHandler(void *opaque, int event);
> -
> typedef enum {
> /* Whether the chardev peer is able to close and
> * reopen the data channel, thus requiring support
> @@ -44,17 +43,7 @@ typedef enum {
> QEMU_CHAR_FEATURE_LAST,
> } ChardevFeature;
>
> -/* This is the backend as seen by frontend, the actual backend is
> - * Chardev */
> -typedef struct CharBackend {
> - Chardev *chr;
> - IOEventHandler *chr_event;
> - IOCanReadHandler *chr_can_read;
> - IOReadHandler *chr_read;
> - void *opaque;
> - int tag;
> - int fe_open;
> -} CharBackend;
> +#define qemu_chr_replay(chr) qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_REPLAY)
>
> struct Chardev {
> Object parent_obj;
> @@ -103,15 +92,6 @@ void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend);
> */
> Chardev *qemu_chr_new(const char *label, const char *filename);
>
> -
> -/**
> - * @qemu_chr_fe_disconnect:
> - *
> - * Close a fd accpeted by character backend.
> - * Without associated Chardev, do nothing.
> - */
> -void qemu_chr_fe_disconnect(CharBackend *be);
> -
> /**
> * @qemu_chr_cleanup:
> *
> @@ -120,14 +100,6 @@ void qemu_chr_fe_disconnect(CharBackend *be);
> void qemu_chr_cleanup(void);
>
> /**
> - * @qemu_chr_fe_wait_connected:
> - *
> - * Wait for characted backend to be connected, return < 0 on error or
> - * if no assicated Chardev.
> - */
> -int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp);
> -
> -/**
> * @qemu_chr_new_noreplay:
> *
> * Create a new character backend from a URI.
> @@ -142,150 +114,6 @@ int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp);
> Chardev *qemu_chr_new_noreplay(const char *label, const char *filename);
>
> /**
> - * @qemu_chr_fe_set_echo:
> - *
> - * Ask the backend to override its normal echo setting. This only really
> - * applies to the stdio backend and is used by the QMP server such that you
> - * can see what you type if you try to type QMP commands.
> - * Without associated Chardev, do nothing.
> - *
> - * @echo true to enable echo, false to disable echo
> - */
> -void qemu_chr_fe_set_echo(CharBackend *be, bool echo);
> -
> -/**
> - * @qemu_chr_fe_set_open:
> - *
> - * Set character frontend open status. This is an indication that the
> - * front end is ready (or not) to begin doing I/O.
> - * Without associated Chardev, do nothing.
> - */
> -void qemu_chr_fe_set_open(CharBackend *be, int fe_open);
> -
> -/**
> - * @qemu_chr_fe_printf:
> - *
> - * Write to a character backend using a printf style interface. This
> - * function is thread-safe. It does nothing without associated
> - * Chardev.
> - *
> - * @fmt see #printf
> - */
> -void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...)
> - GCC_FMT_ATTR(2, 3);
> -
> -/**
> - * @qemu_chr_fe_add_watch:
> - *
> - * If the backend is connected, create and add a #GSource that fires
> - * when the given condition (typically G_IO_OUT|G_IO_HUP or G_IO_HUP)
> - * is active; return the #GSource's tag. If it is disconnected,
> - * or without associated Chardev, return 0.
> - *
> - * @cond the condition to poll for
> - * @func the function to call when the condition happens
> - * @user_data the opaque pointer to pass to @func
> - *
> - * Returns: the source tag
> - */
> -guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond,
> - GIOFunc func, void *user_data);
> -
> -/**
> - * @qemu_chr_fe_write:
> - *
> - * Write data to a character backend from the front end. This function
> - * will send data from the front end to the back end. This function
> - * is thread-safe.
> - *
> - * @buf the data
> - * @len the number of bytes to send
> - *
> - * Returns: the number of bytes consumed (0 if no assicated Chardev)
> - */
> -int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len);
> -
> -/**
> - * @qemu_chr_fe_write_all:
> - *
> - * Write data to a character backend from the front end. This function will
> - * send data from the front end to the back end. Unlike @qemu_chr_fe_write,
> - * this function will block if the back end cannot consume all of the data
> - * attempted to be written. This function is thread-safe.
> - *
> - * @buf the data
> - * @len the number of bytes to send
> - *
> - * Returns: the number of bytes consumed (0 if no assicated Chardev)
> - */
> -int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len);
> -
> -/**
> - * @qemu_chr_fe_read_all:
> - *
> - * Read data to a buffer from the back end.
> - *
> - * @buf the data buffer
> - * @len the number of bytes to read
> - *
> - * Returns: the number of bytes read (0 if no assicated Chardev)
> - */
> -int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len);
> -
> -/**
> - * @qemu_chr_fe_ioctl:
> - *
> - * Issue a device specific ioctl to a backend. This function is thread-safe.
> - *
> - * @cmd see CHR_IOCTL_*
> - * @arg the data associated with @cmd
> - *
> - * Returns: if @cmd is not supported by the backend or there is no
> - * associated Chardev, -ENOTSUP, otherwise the return
> - * value depends on the semantics of @cmd
> - */
> -int qemu_chr_fe_ioctl(CharBackend *be, int cmd, void *arg);
> -
> -/**
> - * @qemu_chr_fe_get_msgfd:
> - *
> - * For backends capable of fd passing, return the latest file descriptor passed
> - * by a client.
> - *
> - * Returns: -1 if fd passing isn't supported or there is no pending file
> - * descriptor. If a file descriptor is returned, subsequent calls to
> - * this function will return -1 until a client sends a new file
> - * descriptor.
> - */
> -int qemu_chr_fe_get_msgfd(CharBackend *be);
> -
> -/**
> - * @qemu_chr_fe_get_msgfds:
> - *
> - * For backends capable of fd passing, return the number of file received
> - * descriptors and fills the fds array up to num elements
> - *
> - * Returns: -1 if fd passing isn't supported or there are no pending file
> - * descriptors. If file descriptors are returned, subsequent calls to
> - * this function will return -1 until a client sends a new set of file
> - * descriptors.
> - */
> -int qemu_chr_fe_get_msgfds(CharBackend *be, int *fds, int num);
> -
> -/**
> - * @qemu_chr_fe_set_msgfds:
> - *
> - * For backends capable of fd passing, set an array of fds to be passed with
> - * the next send operation.
> - * A subsequent call to this function before calling a write function will
> - * result in overwriting the fd array with the new value without being send.
> - * Upon writing the message the fd array is freed.
> - *
> - * Returns: -1 if fd passing isn't supported or no associated Chardev.
> - */
> -int qemu_chr_fe_set_msgfds(CharBackend *be, int *fds, int num);
> -
> -/**
> * @qemu_chr_be_can_write:
> *
> * Determine how much data the front end can currently accept. This function
> @@ -328,69 +156,6 @@ void qemu_chr_be_write_impl(Chardev *s, uint8_t *buf, int len);
> */
> void qemu_chr_be_event(Chardev *s, int event);
>
> -/**
> - * @qemu_chr_fe_init:
> - *
> - * Initializes a front end for the given CharBackend and
> - * Chardev. Call qemu_chr_fe_deinit() to remove the association and
> - * release the driver.
> - *
> - * Returns: false on error.
> - */
> -bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp);
> -
> -/**
> - * @qemu_chr_fe_get_driver:
> - *
> - * Returns the driver associated with a CharBackend or NULL if no
> - * associated Chardev.
> - */
> -Chardev *qemu_chr_fe_get_driver(CharBackend *be);
> -
> -/**
> - * @qemu_chr_fe_deinit:
> - *
> - * Dissociate the CharBackend from the Chardev.
> - *
> - * Safe to call without associated Chardev.
> - */
> -void qemu_chr_fe_deinit(CharBackend *b);
> -
> -/**
> - * @qemu_chr_fe_set_handlers:
> - * @b: a CharBackend
> - * @fd_can_read: callback to get the amount of data the frontend may
> - * receive
> - * @fd_read: callback to receive data from char
> - * @fd_event: event callback
> - * @opaque: an opaque pointer for the callbacks
> - * @context: a main loop context or NULL for the default
> - * @set_open: whether to call qemu_chr_fe_set_open() implicitely when
> - * any of the handler is non-NULL
> - *
> - * Set the front end char handlers. The front end takes the focus if
> - * any of the handler is non-NULL.
> - *
> - * Without associated Chardev, nothing is changed.
> - */
> -void qemu_chr_fe_set_handlers(CharBackend *b,
> - IOCanReadHandler *fd_can_read,
> - IOReadHandler *fd_read,
> - IOEventHandler *fd_event,
> - void *opaque,
> - GMainContext *context,
> - bool set_open);
> -
> -/**
> - * @qemu_chr_fe_take_focus:
> - *
> - * Take the focus (if the front end is muxed).
> - *
> - * Without associated Chardev, nothing is changed.
> - */
> -void qemu_chr_fe_take_focus(CharBackend *b);
> -
> -void qemu_chr_fe_accept_input(CharBackend *be);
> int qemu_chr_add_client(Chardev *s, int fd);
> Chardev *qemu_chr_find(const char *name);
>
> @@ -399,7 +164,8 @@ bool qemu_chr_has_feature(Chardev *chr,
> void qemu_chr_set_feature(Chardev *chr,
> ChardevFeature feature);
> QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename);
> -int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len);
> +int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all);
> +#define qemu_chr_write_all(s, buf, len) qemu_chr_write(s, buf, len, true)
(change to move to previous commit?)
> int qemu_chr_wait_connected(Chardev *chr, Error **errp);
>
> #define TYPE_CHARDEV "chardev"
> diff --git a/include/hw/char/bcm2835_aux.h b/include/hw/char/bcm2835_aux.h
> index 2a051c5646..cdbf7e3e37 100644
> --- a/include/hw/char/bcm2835_aux.h
> +++ b/include/hw/char/bcm2835_aux.h
> @@ -9,7 +9,7 @@
> #define BCM2835_AUX_H
>
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> #define TYPE_BCM2835_AUX "bcm2835-aux"
> #define BCM2835_AUX(obj) OBJECT_CHECK(BCM2835AuxState, (obj), TYPE_BCM2835_AUX)
> diff --git a/include/hw/char/cadence_uart.h b/include/hw/char/cadence_uart.h
> index eed7d8d358..118e3f10de 100644
> --- a/include/hw/char/cadence_uart.h
> +++ b/include/hw/char/cadence_uart.h
> @@ -19,7 +19,7 @@
> #ifndef CADENCE_UART_H
>
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/timer.h"
>
> #define CADENCE_UART_RX_FIFO_SIZE 16
> diff --git a/include/hw/char/digic-uart.h b/include/hw/char/digic-uart.h
> index 370b48a6c5..de9a3e3551 100644
> --- a/include/hw/char/digic-uart.h
> +++ b/include/hw/char/digic-uart.h
> @@ -19,7 +19,7 @@
> #define HW_CHAR_DIGIC_UART_H
>
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> #define TYPE_DIGIC_UART "digic-uart"
> #define DIGIC_UART(obj) \
> diff --git a/include/hw/char/imx_serial.h b/include/hw/char/imx_serial.h
> index 05500f5346..baeec3183f 100644
> --- a/include/hw/char/imx_serial.h
> +++ b/include/hw/char/imx_serial.h
> @@ -19,7 +19,7 @@
> #define IMX_SERIAL_H
>
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> #define TYPE_IMX_SERIAL "imx.serial"
> #define IMX_SERIAL(obj) OBJECT_CHECK(IMXSerialState, (obj), TYPE_IMX_SERIAL)
> diff --git a/include/hw/char/serial.h b/include/hw/char/serial.h
> index 01dcd2a8d2..c4daf11a14 100644
> --- a/include/hw/char/serial.h
> +++ b/include/hw/char/serial.h
> @@ -28,7 +28,7 @@
>
> #include "hw/hw.h"
> #include "sysemu/sysemu.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "exec/memory.h"
> #include "qemu/fifo8.h"
> #include "chardev/char.h"
> diff --git a/include/hw/char/stm32f2xx_usart.h b/include/hw/char/stm32f2xx_usart.h
> index 4259dbeb1e..9d03a7527c 100644
> --- a/include/hw/char/stm32f2xx_usart.h
> +++ b/include/hw/char/stm32f2xx_usart.h
> @@ -26,7 +26,7 @@
> #define HW_STM32F2XX_USART_H
>
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "hw/hw.h"
>
> #define USART_SR 0x00
> diff --git a/backends/rng-egd.c b/backends/rng-egd.c
> index 5448f6e5f5..ad3e1e5edf 100644
> --- a/backends/rng-egd.c
> +++ b/backends/rng-egd.c
> @@ -12,7 +12,7 @@
>
> #include "qemu/osdep.h"
> #include "sysemu/rng.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qapi/error.h"
> #include "qapi/qmp/qerror.h"
>
> diff --git a/chardev/char-fe.c b/chardev/char-fe.c
> new file mode 100644
> index 0000000000..341221d029
> --- /dev/null
> +++ b/chardev/char-fe.c
> @@ -0,0 +1,358 @@
> +/*
> + * QEMU System Emulator
> + *
> + * Copyright (c) 2003-2008 Fabrice Bellard
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a copy
> + * of this software and associated documentation files (the "Software"), to deal
> + * in the Software without restriction, including without limitation the rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> + * THE SOFTWARE.
> + */
> +#include "qemu/osdep.h"
> +#include "qemu/error-report.h"
> +#include "qapi/error.h"
> +#include "qapi-visit.h"
> +#include "sysemu/replay.h"
> +
> +#include "chardev/char-fe.h"
> +#include "chardev/char-io.h"
> +#include "chardev/char-mux.h"
> +
> +int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)
> +{
> + Chardev *s = be->chr;
> +
> + if (!s) {
> + return 0;
> + }
> +
> + return qemu_chr_write(s, buf, len, false);
> +}
> +
> +int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len)
> +{
> + Chardev *s = be->chr;
> +
> + if (!s) {
> + return 0;
> + }
> +
> + return qemu_chr_write(s, buf, len, true);
> +}
> +
> +int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len)
> +{
> + Chardev *s = be->chr;
> + int offset = 0, counter = 10;
> + int res;
> +
> + if (!s || !CHARDEV_GET_CLASS(s)->chr_sync_read) {
> + return 0;
> + }
> +
> + if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
> + return replay_char_read_all_load(buf);
> + }
> +
> + while (offset < len) {
> + retry:
> + res = CHARDEV_GET_CLASS(s)->chr_sync_read(s, buf + offset,
> + len - offset);
> + if (res == -1 && errno == EAGAIN) {
> + g_usleep(100);
> + goto retry;
> + }
> +
> + if (res == 0) {
> + break;
> + }
> +
> + if (res < 0) {
> + if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
> + replay_char_read_all_save_error(res);
> + }
> + return res;
> + }
> +
> + offset += res;
> +
> + if (!counter--) {
> + break;
> + }
> + }
> +
> + if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
> + replay_char_read_all_save_buf(buf, offset);
> + }
> + return offset;
> +}
> +
> +int qemu_chr_fe_ioctl(CharBackend *be, int cmd, void *arg)
> +{
> + Chardev *s = be->chr;
> + int res;
> +
> + if (!s || !CHARDEV_GET_CLASS(s)->chr_ioctl || qemu_chr_replay(s)) {
> + res = -ENOTSUP;
> + } else {
> + res = CHARDEV_GET_CLASS(s)->chr_ioctl(s, cmd, arg);
> + }
> +
> + return res;
> +}
> +
> +int qemu_chr_fe_get_msgfd(CharBackend *be)
> +{
> + Chardev *s = be->chr;
> + int fd;
> + int res = (qemu_chr_fe_get_msgfds(be, &fd, 1) == 1) ? fd : -1;
> + if (s && qemu_chr_replay(s)) {
> + error_report("Replay: get msgfd is not supported "
> + "for serial devices yet");
> + exit(1);
> + }
> + return res;
> +}
> +
> +int qemu_chr_fe_get_msgfds(CharBackend *be, int *fds, int len)
> +{
> + Chardev *s = be->chr;
> +
> + if (!s) {
> + return -1;
> + }
> +
> + return CHARDEV_GET_CLASS(s)->get_msgfds ?
> + CHARDEV_GET_CLASS(s)->get_msgfds(s, fds, len) : -1;
> +}
> +
> +int qemu_chr_fe_set_msgfds(CharBackend *be, int *fds, int num)
> +{
> + Chardev *s = be->chr;
> +
> + if (!s) {
> + return -1;
> + }
> +
> + return CHARDEV_GET_CLASS(s)->set_msgfds ?
> + CHARDEV_GET_CLASS(s)->set_msgfds(s, fds, num) : -1;
> +}
> +
> +void qemu_chr_fe_accept_input(CharBackend *be)
> +{
> + Chardev *s = be->chr;
> +
> + if (!s) {
> + return;
> + }
> +
> + if (CHARDEV_GET_CLASS(s)->chr_accept_input) {
> + CHARDEV_GET_CLASS(s)->chr_accept_input(s);
> + }
> + qemu_notify_event();
> +}
> +
> +void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...)
> +{
> + char buf[CHR_READ_BUF_LEN];
> + va_list ap;
> + va_start(ap, fmt);
> + vsnprintf(buf, sizeof(buf), fmt, ap);
> + /* XXX this blocks entire thread. Rewrite to use
> + * qemu_chr_fe_write and background I/O callbacks */
> + qemu_chr_fe_write_all(be, (uint8_t *)buf, strlen(buf));
> + va_end(ap);
> +}
> +
> +Chardev *qemu_chr_fe_get_driver(CharBackend *be)
> +{
> + return be->chr;
> +}
> +
> +bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp)
> +{
> + int tag = 0;
> +
> + if (CHARDEV_IS_MUX(s)) {
> + MuxChardev *d = MUX_CHARDEV(s);
> +
> + if (d->mux_cnt >= MAX_MUX) {
> + goto unavailable;
> + }
> +
> + d->backends[d->mux_cnt] = b;
> + tag = d->mux_cnt++;
> + } else if (s->be) {
> + goto unavailable;
> + } else {
> + s->be = b;
> + }
> +
> + b->fe_open = false;
> + b->tag = tag;
> + b->chr = s;
> + return true;
> +
> +unavailable:
> + error_setg(errp, QERR_DEVICE_IN_USE, s->label);
> + return false;
> +}
> +
> +void qemu_chr_fe_deinit(CharBackend *b)
> +{
> + assert(b);
> +
> + if (b->chr) {
> + qemu_chr_fe_set_handlers(b, NULL, NULL, NULL, NULL, NULL, true);
> + if (b->chr->be == b) {
> + b->chr->be = NULL;
> + }
> + if (CHARDEV_IS_MUX(b->chr)) {
> + MuxChardev *d = MUX_CHARDEV(b->chr);
> + d->backends[b->tag] = NULL;
> + }
> + b->chr = NULL;
> + }
> +}
> +
> +void qemu_chr_fe_set_handlers(CharBackend *b,
> + IOCanReadHandler *fd_can_read,
> + IOReadHandler *fd_read,
> + IOEventHandler *fd_event,
> + void *opaque,
> + GMainContext *context,
> + bool set_open)
> +{
> + Chardev *s;
> + ChardevClass *cc;
> + int fe_open;
> +
> + s = b->chr;
> + if (!s) {
> + return;
> + }
> +
> + cc = CHARDEV_GET_CLASS(s);
> + if (!opaque && !fd_can_read && !fd_read && !fd_event) {
> + fe_open = 0;
> + remove_fd_in_watch(s);
> + } else {
> + fe_open = 1;
> + }
> + b->chr_can_read = fd_can_read;
> + b->chr_read = fd_read;
> + b->chr_event = fd_event;
> + b->opaque = opaque;
> + if (cc->chr_update_read_handler) {
> + cc->chr_update_read_handler(s, context);
> + }
> +
> + if (set_open) {
> + qemu_chr_fe_set_open(b, fe_open);
> + }
> +
> + if (fe_open) {
> + qemu_chr_fe_take_focus(b);
> + /* We're connecting to an already opened device, so let's make sure we
> + also get the open event */
> + if (s->be_open) {
> + qemu_chr_be_event(s, CHR_EVENT_OPENED);
> + }
> + }
> +
> + if (CHARDEV_IS_MUX(s)) {
> + mux_chr_set_handlers(s, context);
> + }
> +}
> +
> +void qemu_chr_fe_take_focus(CharBackend *b)
> +{
> + if (!b->chr) {
> + return;
> + }
> +
> + if (CHARDEV_IS_MUX(b->chr)) {
> + mux_set_focus(b->chr, b->tag);
> + }
> +}
> +
> +int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp)
> +{
> + if (!be->chr) {
> + error_setg(errp, "missing associated backend");
> + return -1;
> + }
> +
> + return qemu_chr_wait_connected(be->chr, errp);
> +}
> +
> +void qemu_chr_fe_set_echo(CharBackend *be, bool echo)
> +{
> + Chardev *chr = be->chr;
> +
> + if (chr && CHARDEV_GET_CLASS(chr)->chr_set_echo) {
> + CHARDEV_GET_CLASS(chr)->chr_set_echo(chr, echo);
> + }
> +}
> +
> +void qemu_chr_fe_set_open(CharBackend *be, int fe_open)
> +{
> + Chardev *chr = be->chr;
> +
> + if (!chr) {
> + return;
> + }
> +
> + if (be->fe_open == fe_open) {
> + return;
> + }
> + be->fe_open = fe_open;
> + if (CHARDEV_GET_CLASS(chr)->chr_set_fe_open) {
> + CHARDEV_GET_CLASS(chr)->chr_set_fe_open(chr, fe_open);
> + }
> +}
> +
> +guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond,
> + GIOFunc func, void *user_data)
> +{
> + Chardev *s = be->chr;
> + GSource *src;
> + guint tag;
> +
> + if (!s || CHARDEV_GET_CLASS(s)->chr_add_watch == NULL) {
> + return 0;
> + }
> +
> + src = CHARDEV_GET_CLASS(s)->chr_add_watch(s, cond);
> + if (!src) {
> + return 0;
> + }
> +
> + g_source_set_callback(src, (GSourceFunc)func, user_data, NULL);
> + tag = g_source_attach(src, NULL);
> + g_source_unref(src);
> +
> + return tag;
> +}
> +
> +void qemu_chr_fe_disconnect(CharBackend *be)
> +{
> + Chardev *chr = be->chr;
> +
> + if (chr && CHARDEV_GET_CLASS(chr)->chr_disconnect) {
> + CHARDEV_GET_CLASS(chr)->chr_disconnect(chr);
> + }
> +}
> diff --git a/chardev/char.c b/chardev/char.c
> index 9a7c70c7aa..3d5316166e 100644
> --- a/chardev/char.c
> +++ b/chardev/char.c
> @@ -22,7 +22,6 @@
> * THE SOFTWARE.
> */
> #include "qemu/osdep.h"
> -#include "qemu-common.h"
> #include "qemu/cutils.h"
> #include "monitor/monitor.h"
> #include "sysemu/sysemu.h"
> @@ -35,9 +34,6 @@
> #include "qemu/help_option.h"
>
> #include "chardev/char-mux.h"
> -#include "chardev/char-io.h"
> -#include "chardev/char-parallel.h"
> -#include "chardev/char-serial.h"
>
> /***********************************************************/
> /* character device */
> @@ -129,13 +125,7 @@ static int qemu_chr_fe_write_buffer(Chardev *s,
> return res;
> }
>
> -static bool qemu_chr_replay(Chardev *chr)
> -{
> - return qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_REPLAY);
> -}
> -
> -static int qemu_chr_write(Chardev *s, const uint8_t *buf, int len,
> - bool write_all)
> +int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all)
> {
> int offset = 0;
> int res;
> @@ -159,94 +149,6 @@ static int qemu_chr_write(Chardev *s, const uint8_t *buf, int len,
> return offset;
> }
>
> -int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len)
> -{
> - return qemu_chr_write(s, buf, len, true);
> -}
> -
> -int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)
> -{
> - Chardev *s = be->chr;
> -
> - if (!s) {
> - return 0;
> - }
> -
> - return qemu_chr_write(s, buf, len, false);
> -}
> -
> -int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len)
> -{
> - Chardev *s = be->chr;
> -
> - if (!s) {
> - return 0;
> - }
> -
> - return qemu_chr_write(s, buf, len, true);
> -}
> -
> -int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int len)
> -{
> - Chardev *s = be->chr;
> - int offset = 0, counter = 10;
> - int res;
> -
> - if (!s || !CHARDEV_GET_CLASS(s)->chr_sync_read) {
> - return 0;
> - }
> -
> - if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
> - return replay_char_read_all_load(buf);
> - }
> -
> - while (offset < len) {
> - retry:
> - res = CHARDEV_GET_CLASS(s)->chr_sync_read(s, buf + offset,
> - len - offset);
> - if (res == -1 && errno == EAGAIN) {
> - g_usleep(100);
> - goto retry;
> - }
> -
> - if (res == 0) {
> - break;
> - }
> -
> - if (res < 0) {
> - if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
> - replay_char_read_all_save_error(res);
> - }
> - return res;
> - }
> -
> - offset += res;
> -
> - if (!counter--) {
> - break;
> - }
> - }
> -
> - if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
> - replay_char_read_all_save_buf(buf, offset);
> - }
> - return offset;
> -}
> -
> -int qemu_chr_fe_ioctl(CharBackend *be, int cmd, void *arg)
> -{
> - Chardev *s = be->chr;
> - int res;
> -
> - if (!s || !CHARDEV_GET_CLASS(s)->chr_ioctl || qemu_chr_replay(s)) {
> - res = -ENOTSUP;
> - } else {
> - res = CHARDEV_GET_CLASS(s)->chr_ioctl(s, cmd, arg);
> - }
> -
> - return res;
> -}
> -
> int qemu_chr_be_can_write(Chardev *s)
> {
> CharBackend *be = s->be;
> @@ -279,75 +181,12 @@ void qemu_chr_be_write(Chardev *s, uint8_t *buf, int len)
> }
> }
>
> -int qemu_chr_fe_get_msgfd(CharBackend *be)
> -{
> - Chardev *s = be->chr;
> - int fd;
> - int res = (qemu_chr_fe_get_msgfds(be, &fd, 1) == 1) ? fd : -1;
> - if (s && qemu_chr_replay(s)) {
> - error_report("Replay: get msgfd is not supported "
> - "for serial devices yet");
> - exit(1);
> - }
> - return res;
> -}
> -
> -int qemu_chr_fe_get_msgfds(CharBackend *be, int *fds, int len)
> -{
> - Chardev *s = be->chr;
> -
> - if (!s) {
> - return -1;
> - }
> -
> - return CHARDEV_GET_CLASS(s)->get_msgfds ?
> - CHARDEV_GET_CLASS(s)->get_msgfds(s, fds, len) : -1;
> -}
> -
> -int qemu_chr_fe_set_msgfds(CharBackend *be, int *fds, int num)
> -{
> - Chardev *s = be->chr;
> -
> - if (!s) {
> - return -1;
> - }
> -
> - return CHARDEV_GET_CLASS(s)->set_msgfds ?
> - CHARDEV_GET_CLASS(s)->set_msgfds(s, fds, num) : -1;
> -}
> -
> int qemu_chr_add_client(Chardev *s, int fd)
> {
> return CHARDEV_GET_CLASS(s)->chr_add_client ?
> CHARDEV_GET_CLASS(s)->chr_add_client(s, fd) : -1;
> }
>
> -void qemu_chr_fe_accept_input(CharBackend *be)
> -{
> - Chardev *s = be->chr;
> -
> - if (!s) {
> - return;
> - }
> -
> - if (CHARDEV_GET_CLASS(s)->chr_accept_input) {
> - CHARDEV_GET_CLASS(s)->chr_accept_input(s);
> - }
> - qemu_notify_event();
> -}
> -
> -void qemu_chr_fe_printf(CharBackend *be, const char *fmt, ...)
> -{
> - char buf[CHR_READ_BUF_LEN];
> - va_list ap;
> - va_start(ap, fmt);
> - vsnprintf(buf, sizeof(buf), fmt, ap);
> - /* XXX this blocks entire thread. Rewrite to use
> - * qemu_chr_fe_write and background I/O callbacks */
> - qemu_chr_fe_write_all(be, (uint8_t *)buf, strlen(buf));
> - va_end(ap);
> -}
> -
> static void qemu_char_open(Chardev *chr, ChardevBackend *backend,
> bool *be_opened, Error **errp)
> {
> @@ -459,40 +298,6 @@ static Notifier muxes_realize_notify = {
> .notify = muxes_realize_done,
> };
>
> -Chardev *qemu_chr_fe_get_driver(CharBackend *be)
> -{
> - return be->chr;
> -}
> -
> -bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp)
> -{
> - int tag = 0;
> -
> - if (CHARDEV_IS_MUX(s)) {
> - MuxChardev *d = MUX_CHARDEV(s);
> -
> - if (d->mux_cnt >= MAX_MUX) {
> - goto unavailable;
> - }
> -
> - d->backends[d->mux_cnt] = b;
> - tag = d->mux_cnt++;
> - } else if (s->be) {
> - goto unavailable;
> - } else {
> - s->be = b;
> - }
> -
> - b->fe_open = false;
> - b->tag = tag;
> - b->chr = s;
> - return true;
> -
> -unavailable:
> - error_setg(errp, QERR_DEVICE_IN_USE, s->label);
> - return false;
> -}
> -
> static bool qemu_chr_is_busy(Chardev *s)
> {
> if (CHARDEV_IS_MUX(s)) {
> @@ -503,84 +308,6 @@ static bool qemu_chr_is_busy(Chardev *s)
> }
> }
>
> -void qemu_chr_fe_deinit(CharBackend *b)
> -{
> - assert(b);
> -
> - if (b->chr) {
> - qemu_chr_fe_set_handlers(b, NULL, NULL, NULL, NULL, NULL, true);
> - if (b->chr->be == b) {
> - b->chr->be = NULL;
> - }
> - if (CHARDEV_IS_MUX(b->chr)) {
> - MuxChardev *d = MUX_CHARDEV(b->chr);
> - d->backends[b->tag] = NULL;
> - }
> - b->chr = NULL;
> - }
> -}
> -
> -void qemu_chr_fe_set_handlers(CharBackend *b,
> - IOCanReadHandler *fd_can_read,
> - IOReadHandler *fd_read,
> - IOEventHandler *fd_event,
> - void *opaque,
> - GMainContext *context,
> - bool set_open)
> -{
> - Chardev *s;
> - ChardevClass *cc;
> - int fe_open;
> -
> - s = b->chr;
> - if (!s) {
> - return;
> - }
> -
> - cc = CHARDEV_GET_CLASS(s);
> - if (!opaque && !fd_can_read && !fd_read && !fd_event) {
> - fe_open = 0;
> - remove_fd_in_watch(s);
> - } else {
> - fe_open = 1;
> - }
> - b->chr_can_read = fd_can_read;
> - b->chr_read = fd_read;
> - b->chr_event = fd_event;
> - b->opaque = opaque;
> - if (cc->chr_update_read_handler) {
> - cc->chr_update_read_handler(s, context);
> - }
> -
> - if (set_open) {
> - qemu_chr_fe_set_open(b, fe_open);
> - }
> -
> - if (fe_open) {
> - qemu_chr_fe_take_focus(b);
> - /* We're connecting to an already opened device, so let's make sure we
> - also get the open event */
> - if (s->be_open) {
> - qemu_chr_be_event(s, CHR_EVENT_OPENED);
> - }
> - }
> -
> - if (CHARDEV_IS_MUX(s)) {
> - mux_chr_set_handlers(s, context);
> - }
> -}
> -
> -void qemu_chr_fe_take_focus(CharBackend *b)
> -{
> - if (!b->chr) {
> - return;
> - }
> -
> - if (CHARDEV_IS_MUX(b->chr)) {
> - mux_set_focus(b->chr, b->tag);
> - }
> -}
> -
> int qemu_chr_wait_connected(Chardev *chr, Error **errp)
> {
> ChardevClass *cc = CHARDEV_GET_CLASS(chr);
> @@ -592,16 +319,6 @@ int qemu_chr_wait_connected(Chardev *chr, Error **errp)
> return 0;
> }
>
> -int qemu_chr_fe_wait_connected(CharBackend *be, Error **errp)
> -{
> - if (!be->chr) {
> - error_setg(errp, "missing associated backend");
> - return -1;
> - }
> -
> - return qemu_chr_wait_connected(be->chr, errp);
> -}
> -
> QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
> {
> char host[65], port[33], width[8], height[8];
> @@ -978,64 +695,6 @@ Chardev *qemu_chr_new(const char *label, const char *filename)
> return chr;
> }
>
> -void qemu_chr_fe_set_echo(CharBackend *be, bool echo)
> -{
> - Chardev *chr = be->chr;
> -
> - if (chr && CHARDEV_GET_CLASS(chr)->chr_set_echo) {
> - CHARDEV_GET_CLASS(chr)->chr_set_echo(chr, echo);
> - }
> -}
> -
> -void qemu_chr_fe_set_open(CharBackend *be, int fe_open)
> -{
> - Chardev *chr = be->chr;
> -
> - if (!chr) {
> - return;
> - }
> -
> - if (be->fe_open == fe_open) {
> - return;
> - }
> - be->fe_open = fe_open;
> - if (CHARDEV_GET_CLASS(chr)->chr_set_fe_open) {
> - CHARDEV_GET_CLASS(chr)->chr_set_fe_open(chr, fe_open);
> - }
> -}
> -
> -guint qemu_chr_fe_add_watch(CharBackend *be, GIOCondition cond,
> - GIOFunc func, void *user_data)
> -{
> - Chardev *s = be->chr;
> - GSource *src;
> - guint tag;
> -
> - if (!s || CHARDEV_GET_CLASS(s)->chr_add_watch == NULL) {
> - return 0;
> - }
> -
> - src = CHARDEV_GET_CLASS(s)->chr_add_watch(s, cond);
> - if (!src) {
> - return 0;
> - }
> -
> - g_source_set_callback(src, (GSourceFunc)func, user_data, NULL);
> - tag = g_source_attach(src, NULL);
> - g_source_unref(src);
> -
> - return tag;
> -}
> -
> -void qemu_chr_fe_disconnect(CharBackend *be)
> -{
> - Chardev *chr = be->chr;
> -
> - if (chr && CHARDEV_GET_CLASS(chr)->chr_disconnect) {
> - CHARDEV_GET_CLASS(chr)->chr_disconnect(chr);
> - }
> -}
> -
> static int qmp_query_chardev_foreach(Object *obj, void *data)
> {
> Chardev *chr = CHARDEV(obj);
> diff --git a/gdbstub.c b/gdbstub.c
> index 6515c635dc..4251d23898 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -26,6 +26,7 @@
> #else
> #include "monitor/monitor.h"
> #include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "sysemu/sysemu.h"
> #include "exec/gdbstub.h"
> #endif
> diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
> index 566749a9eb..4b4c024693 100644
> --- a/hw/arm/omap2.c
> +++ b/hw/arm/omap2.c
> @@ -30,7 +30,7 @@
> #include "hw/arm/omap.h"
> #include "sysemu/sysemu.h"
> #include "qemu/timer.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "hw/block/flash.h"
> #include "hw/arm/soc_dma.h"
> #include "hw/sysbus.h"
> diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
> index 0d43cc707c..629e6c64e6 100644
> --- a/hw/arm/pxa2xx.c
> +++ b/hw/arm/pxa2xx.c
> @@ -17,7 +17,7 @@
> #include "hw/char/serial.h"
> #include "hw/i2c/i2c.h"
> #include "hw/ssi/ssi.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "sysemu/block-backend.h"
> #include "sysemu/blockdev.h"
> #include "qemu/cutils.h"
> diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c
> index 967caea749..7683edc9e5 100644
> --- a/hw/arm/strongarm.c
> +++ b/hw/arm/strongarm.c
> @@ -34,6 +34,7 @@
> #include "strongarm.h"
> #include "qemu/error-report.h"
> #include "hw/arm/arm.h"
> +#include "chardev/char-fe.h"
> #include "chardev/char-serial.h"
> #include "sysemu/sysemu.h"
> #include "hw/ssi/ssi.h"
> diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
> index 4bfc185376..4a2c124104 100644
> --- a/hw/char/cadence_uart.c
> +++ b/hw/char/cadence_uart.c
> @@ -23,6 +23,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> +#include "chardev/char-fe.h"
> #include "chardev/char-serial.h"
> #include "qemu/timer.h"
> #include "qemu/log.h"
> diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c
> index 77d91c8558..762e3d8ada 100644
> --- a/hw/char/debugcon.c
> +++ b/hw/char/debugcon.c
> @@ -27,7 +27,7 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "hw/hw.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "hw/isa/isa.h"
> #include "hw/i386/pc.h"
>
> diff --git a/hw/char/digic-uart.c b/hw/char/digic-uart.c
> index 4f1dec7f1d..34306e11ff 100644
> --- a/hw/char/digic-uart.c
> +++ b/hw/char/digic-uart.c
> @@ -29,7 +29,7 @@
> #include "qemu/osdep.h"
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/log.h"
>
> #include "hw/char/digic-uart.h"
> diff --git a/hw/char/escc.c b/hw/char/escc.c
> index 81d792cb47..3f787632c7 100644
> --- a/hw/char/escc.c
> +++ b/hw/char/escc.c
> @@ -26,6 +26,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "hw/char/escc.h"
> +#include "chardev/char-fe.h"
> #include "chardev/char-serial.h"
> #include "ui/console.h"
> #include "ui/input.h"
> diff --git a/hw/char/etraxfs_ser.c b/hw/char/etraxfs_ser.c
> index 33e3e16397..c1fba9f50f 100644
> --- a/hw/char/etraxfs_ser.c
> +++ b/hw/char/etraxfs_ser.c
> @@ -24,7 +24,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/log.h"
>
> #define D(x)
> diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
> index d93125645a..b51d44a321 100644
> --- a/hw/char/exynos4210_uart.c
> +++ b/hw/char/exynos4210_uart.c
> @@ -23,6 +23,7 @@
> #include "hw/sysbus.h"
> #include "qemu/error-report.h"
> #include "sysemu/sysemu.h"
> +#include "chardev/char-fe.h"
> #include "chardev/char-serial.h"
>
> #include "hw/arm/exynos4210.h"
> diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c
> index 39d1133c61..32d98edf49 100644
> --- a/hw/char/grlib_apbuart.c
> +++ b/hw/char/grlib_apbuart.c
> @@ -24,7 +24,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> #include "trace.h"
>
> diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c
> index b8a3c92c9e..337a3e566a 100644
> --- a/hw/char/ipoctal232.c
> +++ b/hw/char/ipoctal232.c
> @@ -11,7 +11,7 @@
> #include "qemu/osdep.h"
> #include "hw/ipack/ipack.h"
> #include "qemu/bitops.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> /* #define DEBUG_IPOCTAL */
>
> diff --git a/hw/char/lm32_juart.c b/hw/char/lm32_juart.c
> index 6b0633e518..3948dcd332 100644
> --- a/hw/char/lm32_juart.c
> +++ b/hw/char/lm32_juart.c
> @@ -21,7 +21,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "trace.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> #include "hw/char/lm32_juart.h"
>
> diff --git a/hw/char/lm32_uart.c b/hw/char/lm32_uart.c
> index a7610c28ce..cff8c38f90 100644
> --- a/hw/char/lm32_uart.c
> +++ b/hw/char/lm32_uart.c
> @@ -26,7 +26,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "trace.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/error-report.h"
>
> enum {
> diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c
> index b639b53c83..fe12ad5ccb 100644
> --- a/hw/char/mcf_uart.c
> +++ b/hw/char/mcf_uart.c
> @@ -9,7 +9,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "hw/m68k/mcf.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "exec/address-spaces.h"
> #include "qapi/error.h"
>
> diff --git a/hw/char/milkymist-uart.c b/hw/char/milkymist-uart.c
> index 5ef847c5eb..e19d0f6520 100644
> --- a/hw/char/milkymist-uart.c
> +++ b/hw/char/milkymist-uart.c
> @@ -25,7 +25,7 @@
> #include "hw/hw.h"
> #include "hw/sysbus.h"
> #include "trace.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/error-report.h"
>
> enum {
> diff --git a/hw/char/parallel.c b/hw/char/parallel.c
> index 1d6c6e9f33..75a1a2f55e 100644
> --- a/hw/char/parallel.c
> +++ b/hw/char/parallel.c
> @@ -26,6 +26,7 @@
> #include "qapi/error.h"
> #include "hw/hw.h"
> #include "chardev/char-parallel.h"
> +#include "chardev/char-fe.h"
> #include "hw/isa/isa.h"
> #include "hw/i386/pc.h"
> #include "sysemu/sysemu.h"
> diff --git a/hw/char/pl011.c b/hw/char/pl011.c
> index 1757035bb3..33802f00c8 100644
> --- a/hw/char/pl011.c
> +++ b/hw/char/pl011.c
> @@ -9,7 +9,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/log.h"
> #include "trace.h"
>
> diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c
> index 755d514188..1b15046690 100644
> --- a/hw/char/sclpconsole-lm.c
> +++ b/hw/char/sclpconsole-lm.c
> @@ -17,7 +17,7 @@
> #include "hw/qdev.h"
> #include "qemu/thread.h"
> #include "qemu/error-report.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> #include "hw/s390x/sclp.h"
> #include "hw/s390x/event-facility.h"
> diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c
> index 0fd3cb4887..4a107a268d 100644
> --- a/hw/char/sclpconsole.c
> +++ b/hw/char/sclpconsole.c
> @@ -19,7 +19,7 @@
>
> #include "hw/s390x/sclp.h"
> #include "hw/s390x/event-facility.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> typedef struct ASCIIConsoleData {
> EventBufferHeader ebh;
> diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c
> index 80c7696d8d..ca9816d045 100644
> --- a/hw/char/sh_serial.c
> +++ b/hw/char/sh_serial.c
> @@ -27,7 +27,7 @@
> #include "qemu/osdep.h"
> #include "hw/hw.h"
> #include "hw/sh4/sh.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "exec/address-spaces.h"
> #include "qapi/error.h"
>
> diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c
> index 2317e45404..8f02f3a612 100644
> --- a/hw/char/spapr_vty.c
> +++ b/hw/char/spapr_vty.c
> @@ -4,7 +4,7 @@
> #include "qemu-common.h"
> #include "cpu.h"
> #include "hw/qdev.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "hw/ppc/spapr.h"
> #include "hw/ppc/spapr_vio.h"
>
> diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c
> index c043104185..7b10a04f18 100644
> --- a/hw/char/terminal3270.c
> +++ b/hw/char/terminal3270.c
> @@ -13,7 +13,7 @@
>
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "hw/s390x/3270-ccw.h"
>
> /* Enough spaces for different window sizes. */
> diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c
> index 8418db6a07..0cb1668c8a 100644
> --- a/hw/char/virtio-console.c
> +++ b/hw/char/virtio-console.c
> @@ -11,7 +11,7 @@
> */
>
> #include "qemu/osdep.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/error-report.h"
> #include "trace.h"
> #include "hw/virtio/virtio-serial.h"
> diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c
> index 1cdbe59f8a..cb849c2e3e 100644
> --- a/hw/char/xen_console.c
> +++ b/hw/char/xen_console.c
> @@ -25,7 +25,7 @@
>
> #include "qapi/error.h"
> #include "hw/hw.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "hw/xen/xen_backend.h"
> #include "qapi/error.h"
>
> diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c
> index bcebdae3da..71ed2fc1be 100644
> --- a/hw/char/xilinx_uartlite.c
> +++ b/hw/char/xilinx_uartlite.c
> @@ -24,7 +24,7 @@
>
> #include "qemu/osdep.h"
> #include "hw/sysbus.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> #define DUART(x)
>
> diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
> index 4da0c6a24e..a549d39030 100644
> --- a/hw/core/qdev-properties-system.c
> +++ b/hw/core/qdev-properties-system.c
> @@ -20,7 +20,7 @@
> #include "hw/block/block.h"
> #include "net/hub.h"
> #include "qapi/visitor.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "sysemu/iothread.h"
>
> static void get_pointer(Object *obj, Visitor *v, Property *prop,
> diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
> index 35285383fd..329b03e17f 100644
> --- a/hw/ipmi/ipmi_bmc_extern.c
> +++ b/hw/ipmi/ipmi_bmc_extern.c
> @@ -30,7 +30,7 @@
> #include "qemu/osdep.h"
> #include "qapi/error.h"
> #include "qemu/timer.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "sysemu/sysemu.h"
> #include "hw/ipmi/ipmi.h"
>
> diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
> index cd064dcf8c..6367d041f0 100644
> --- a/hw/misc/ivshmem.c
> +++ b/hw/misc/ivshmem.c
> @@ -29,7 +29,7 @@
> #include "qemu/error-report.h"
> #include "qemu/event_notifier.h"
> #include "qom/object_interfaces.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "sysemu/hostmem.h"
> #include "sysemu/qtest.h"
> #include "qapi/visitor.h"
> diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c
> index c2096b25ab..fed3683a50 100644
> --- a/hw/usb/ccid-card-passthru.c
> +++ b/hw/usb/ccid-card-passthru.c
> @@ -9,7 +9,7 @@
> */
>
> #include "qemu/osdep.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/error-report.h"
> #include "qemu/sockets.h"
> #include "ccid.h"
> diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
> index a145c919e9..17d650f35a 100644
> --- a/hw/usb/dev-serial.c
> +++ b/hw/usb/dev-serial.c
> @@ -16,6 +16,7 @@
> #include "hw/usb.h"
> #include "hw/usb/desc.h"
> #include "chardev/char-serial.h"
> +#include "chardev/char-fe.h"
>
> //#define DEBUG_Serial
>
> diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
> index c862c1adea..d2b3a84a03 100644
> --- a/hw/usb/redirect.c
> +++ b/hw/usb/redirect.c
> @@ -33,7 +33,7 @@
> #include "qapi/qmp/qerror.h"
> #include "qemu/error-report.h"
> #include "qemu/iov.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
>
> #include <usbredirparser.h>
> #include <usbredirfilter.h>
> diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
> index ff4cee82e6..e60a7a1cfe 100644
> --- a/hw/virtio/vhost-user.c
> +++ b/hw/virtio/vhost-user.c
> @@ -13,7 +13,7 @@
> #include "hw/virtio/vhost.h"
> #include "hw/virtio/vhost-backend.h"
> #include "hw/virtio/virtio-net.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "sysemu/kvm.h"
> #include "qemu/error-report.h"
> #include "qemu/sockets.h"
> diff --git a/monitor.c b/monitor.c
> index 29b71ff2bc..37f8d5645f 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -35,7 +35,7 @@
> #include "exec/gdbstub.h"
> #include "net/net.h"
> #include "net/slirp.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "ui/qemu-spice.h"
> #include "sysemu/numa.h"
> #include "monitor/monitor.h"
> diff --git a/net/colo-compare.c b/net/colo-compare.c
> index 619335d5e8..2fb75bcca4 100644
> --- a/net/colo-compare.c
> +++ b/net/colo-compare.c
> @@ -25,7 +25,7 @@
> #include "qom/object.h"
> #include "qemu/typedefs.h"
> #include "net/queue.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/sockets.h"
> #include "qapi-visit.h"
> #include "net/colo.h"
> diff --git a/net/filter-mirror.c b/net/filter-mirror.c
> index 7adc2c10d2..a20330475c 100644
> --- a/net/filter-mirror.c
> +++ b/net/filter-mirror.c
> @@ -20,7 +20,7 @@
> #include "qemu/main-loop.h"
> #include "qemu/error-report.h"
> #include "trace.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/iov.h"
> #include "qemu/sockets.h"
>
> diff --git a/net/slirp.c b/net/slirp.c
> index af3e8b22ac..6a6d727999 100644
> --- a/net/slirp.c
> +++ b/net/slirp.c
> @@ -37,7 +37,7 @@
> #include "qemu/sockets.h"
> #include "slirp/libslirp.h"
> #include "slirp/ip6.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "sysemu/sysemu.h"
> #include "qemu/cutils.h"
> #include "qapi/error.h"
> diff --git a/net/vhost-user.c b/net/vhost-user.c
> index 77d2ce22a6..526290d8c1 100644
> --- a/net/vhost-user.c
> +++ b/net/vhost-user.c
> @@ -12,7 +12,7 @@
> #include "clients.h"
> #include "net/vhost_net.h"
> #include "net/vhost-user.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "qemu/config-file.h"
> #include "qemu/error-report.h"
> #include "qmp-commands.h"
> diff --git a/qtest.c b/qtest.c
> index dbf70a7018..9a5d1dc50d 100644
> --- a/qtest.c
> +++ b/qtest.c
> @@ -17,7 +17,7 @@
> #include "cpu.h"
> #include "sysemu/qtest.h"
> #include "hw/qdev.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "exec/ioport.h"
> #include "exec/memory.h"
> #include "hw/irq.h"
> diff --git a/slirp/slirp.c b/slirp/slirp.c
> index 3b92cb54ce..e79345bdfc 100644
> --- a/slirp/slirp.c
> +++ b/slirp/slirp.c
> @@ -25,7 +25,7 @@
> #include "qemu-common.h"
> #include "qemu/timer.h"
> #include "qemu/error-report.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "slirp.h"
> #include "hw/hw.h"
> #include "qemu/cutils.h"
> diff --git a/tests/test-char.c b/tests/test-char.c
> index 9340c55058..d7ecf1056a 100644
> --- a/tests/test-char.c
> +++ b/tests/test-char.c
> @@ -4,7 +4,7 @@
> #include "qemu-common.h"
> #include "qemu/config-file.h"
> #include "qemu/sockets.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "sysemu/sysemu.h"
> #include "qapi/error.h"
> #include "qom/qom-qobject.h"
> diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
> index acc392d046..4ca11ae28d 100644
> --- a/tests/vhost-user-test.c
> +++ b/tests/vhost-user-test.c
> @@ -16,7 +16,7 @@
> #include "qemu/option.h"
> #include "qemu/range.h"
> #include "qemu/sockets.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "sysemu/sysemu.h"
> #include "libqos/libqos.h"
> #include "libqos/pci-pc.h"
> diff --git a/ui/console.c b/ui/console.c
> index 6cf795a23d..d914cced53 100644
> --- a/ui/console.c
> +++ b/ui/console.c
> @@ -27,7 +27,7 @@
> #include "hw/qdev-core.h"
> #include "qemu/timer.h"
> #include "qmp-commands.h"
> -#include "chardev/char.h"
> +#include "chardev/char-fe.h"
> #include "trace.h"
> #include "exec/memory.h"
>
> diff --git a/chardev/Makefile.objs b/chardev/Makefile.objs
> index 1feda0f0ed..e0b37dbfd8 100644
> --- a/chardev/Makefile.objs
> +++ b/chardev/Makefile.objs
> @@ -1,6 +1,7 @@
> chardev-obj-y += char.o
> chardev-obj-$(CONFIG_WIN32) += char-console.o
> chardev-obj-$(CONFIG_POSIX) += char-fd.o
> +chardev-obj-y += char-fe.o
> chardev-obj-y += char-file.o
> chardev-obj-y += char-io.o
> chardev-obj-y += char-mux.o
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 14/14] char: move char devices to chardev/
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 14/14] char: move char devices to chardev/ Marc-André Lureau
@ 2017-05-29 21:31 ` Philippe Mathieu-Daudé
2017-05-30 15:18 ` Eric Blake
0 siblings, 1 reply; 33+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-29 21:31 UTC (permalink / raw)
To: Marc-André Lureau, qemu-devel; +Cc: pbonzini
On 05/29/2017 05:45 AM, Marc-André Lureau wrote:
> Suggested by Paolo Bonizini during series review.
Bonzini ;) "serie" singular
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> {backends => chardev}/baum.c | 0
> {backends => chardev}/msmouse.c | 0
> spice-qemu-char.c => chardev/spice.c | 2 +-
> {backends => chardev}/testdev.c | 0
> {backends => chardev}/wctablet.c | 0
> MAINTAINERS | 4 +---
> Makefile.objs | 4 ++--
> backends/Makefile.objs | 4 ----
> backends/trace-events | 10 ----------
> chardev/Makefile.objs | 6 ++++++
> chardev/trace-events | 18 ++++++++++++++++++
> trace-events | 7 -------
> 12 files changed, 28 insertions(+), 27 deletions(-)
> rename {backends => chardev}/baum.c (100%)
> rename {backends => chardev}/msmouse.c (100%)
> rename spice-qemu-char.c => chardev/spice.c (99%)
> rename {backends => chardev}/testdev.c (100%)
> rename {backends => chardev}/wctablet.c (100%)
> create mode 100644 chardev/trace-events
>
> diff --git a/backends/baum.c b/chardev/baum.c
> similarity index 100%
> rename from backends/baum.c
> rename to chardev/baum.c
> diff --git a/backends/msmouse.c b/chardev/msmouse.c
> similarity index 100%
> rename from backends/msmouse.c
> rename to chardev/msmouse.c
> diff --git a/spice-qemu-char.c b/chardev/spice.c
> similarity index 99%
> rename from spice-qemu-char.c
> rename to chardev/spice.c
> index 1c6c2e3969..a312078812 100644
> --- a/spice-qemu-char.c
> +++ b/chardev/spice.c
> @@ -1,5 +1,5 @@
> #include "qemu/osdep.h"
> -#include "trace-root.h"
> +#include "trace.h"
> #include "ui/qemu-spice.h"
> #include "chardev/char.h"
> #include "qemu/error-report.h"
> diff --git a/backends/testdev.c b/chardev/testdev.c
> similarity index 100%
> rename from backends/testdev.c
> rename to chardev/testdev.c
> diff --git a/backends/wctablet.c b/chardev/wctablet.c
> similarity index 100%
> rename from backends/wctablet.c
> rename to chardev/wctablet.c
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 59e03436ad..7ee69d0e42 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1231,13 +1231,11 @@ M: Marc-André Lureau <marcandre.lureau@redhat.com>
> S: Maintained
> F: chardev/
> F: include/chardev/
> -F: backends/msmouse.c
> -F: backends/testdev.c
>
> Character Devices (Braille)
> M: Samuel Thibault <samuel.thibault@ens-lyon.org>
> S: Maintained
> -F: backends/baum.c
> +F: chardev/baum.c
>
> Command line option argument parsing
> M: Markus Armbruster <armbru@redhat.com>
> diff --git a/Makefile.objs b/Makefile.objs
> index 2100845ce2..0575802440 100644
> --- a/Makefile.objs
> +++ b/Makefile.objs
> @@ -50,8 +50,6 @@ common-obj-$(CONFIG_LINUX) += fsdev/
>
> common-obj-y += migration/
>
> -common-obj-$(CONFIG_SPICE) += spice-qemu-char.o
> -
> common-obj-y += audio/
> common-obj-y += hw/
> common-obj-y += accel.o
> @@ -70,6 +68,7 @@ common-obj-y += tpm.o
> common-obj-$(CONFIG_SLIRP) += slirp/
>
> common-obj-y += backends/
> +common-obj-y += chardev/
>
> common-obj-$(CONFIG_SECCOMP) += qemu-seccomp.o
>
> @@ -121,6 +120,7 @@ trace-events-subdirs += io
> trace-events-subdirs += migration
> trace-events-subdirs += block
> trace-events-subdirs += backends
> +trace-events-subdirs += chardev
> trace-events-subdirs += hw/block
> trace-events-subdirs += hw/block/dataplane
> trace-events-subdirs += hw/char
> diff --git a/backends/Makefile.objs b/backends/Makefile.objs
> index 0e0f1567b2..0400799efd 100644
> --- a/backends/Makefile.objs
> +++ b/backends/Makefile.objs
> @@ -1,10 +1,6 @@
> common-obj-y += rng.o rng-egd.o
> common-obj-$(CONFIG_POSIX) += rng-random.o
>
> -common-obj-y += msmouse.o wctablet.o testdev.o
> -common-obj-$(CONFIG_BRLAPI) += baum.o
> -baum.o-cflags := $(SDL_CFLAGS)
> -
> common-obj-$(CONFIG_TPM) += tpm.o
>
> common-obj-y += hostmem.o hostmem-ram.o
> diff --git a/backends/trace-events b/backends/trace-events
> index 8c3289a3f9..e69de29bb2 100644
> --- a/backends/trace-events
> +++ b/backends/trace-events
> @@ -1,10 +0,0 @@
> -# See docs/tracing.txt for syntax documentation.
> -
> -# backends/wctablet.c
> -wct_init(void) ""
> -wct_cmd_re(void) ""
> -wct_cmd_st(void) ""
> -wct_cmd_sp(void) ""
> -wct_cmd_ts(int input) "0x%02x"
> -wct_cmd_other(const char *cmd) "%s"
> -wct_speed(int speed) "%d"
> diff --git a/chardev/Makefile.objs b/chardev/Makefile.objs
> index e0b37dbfd8..52a8127606 100644
> --- a/chardev/Makefile.objs
> +++ b/chardev/Makefile.objs
> @@ -16,3 +16,9 @@ chardev-obj-y += char-stdio.o
> chardev-obj-y += char-udp.o
> chardev-obj-$(CONFIG_WIN32) += char-win.o
> chardev-obj-$(CONFIG_WIN32) += char-win-stdio.o
> +
> +common-obj-y += msmouse.o wctablet.o testdev.o
> +common-obj-$(CONFIG_BRLAPI) += baum.o
> +baum.o-cflags := $(SDL_CFLAGS)
> +
> +common-obj-$(CONFIG_SPICE) += spice.o
> diff --git a/chardev/trace-events b/chardev/trace-events
> new file mode 100644
> index 0000000000..822dde668b
> --- /dev/null
> +++ b/chardev/trace-events
> @@ -0,0 +1,18 @@
> +# See docs/tracing.txt for syntax documentation.
> +
> +# chardev/wctablet.c
> +wct_init(void) ""
> +wct_cmd_re(void) ""
> +wct_cmd_st(void) ""
> +wct_cmd_sp(void) ""
> +wct_cmd_ts(int input) "0x%02x"
> +wct_cmd_other(const char *cmd) "%s"
> +wct_speed(int speed) "%d"
> +
> +# chardev/spice.c
> +spice_vmc_write(ssize_t out, int len) "spice wrote %zd of requested %d"
> +spice_vmc_read(int bytes, int len) "spice read %d of requested %d"
> +spice_vmc_register_interface(void *scd) "spice vmc registered interface %p"
> +spice_vmc_unregister_interface(void *scd) "spice vmc unregistered interface %p"
> +spice_vmc_event(int event) "spice vmc event %d"
> +
> diff --git a/trace-events b/trace-events
> index e582d6315d..c785af294a 100644
> --- a/trace-events
> +++ b/trace-events
> @@ -41,13 +41,6 @@ system_wakeup_request(int reason) "reason=%d"
> qemu_system_shutdown_request(void) ""
> qemu_system_powerdown_request(void) ""
>
> -# spice-qemu-char.c
> -spice_vmc_write(ssize_t out, int len) "spice wrote %zd of requested %d"
> -spice_vmc_read(int bytes, int len) "spice read %d of requested %d"
> -spice_vmc_register_interface(void *scd) "spice vmc registered interface %p"
> -spice_vmc_unregister_interface(void *scd) "spice vmc unregistered interface %p"
> -spice_vmc_event(int event) "spice vmc event %d"
> -
> # monitor.c
> monitor_protocol_event_handler(uint32_t event, void *qdict) "event=%d data=%p"
> monitor_protocol_event_emit(uint32_t event, void *data) "event=%d data=%p"
>
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 10/14] char: generalize qemu_chr_write_all()
2017-05-29 21:09 ` Philippe Mathieu-Daudé
@ 2017-05-30 5:59 ` Marc-André Lureau
0 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-30 5:59 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel; +Cc: pbonzini
Hi
On Tue, May 30, 2017 at 1:09 AM Philippe Mathieu-Daudé <f4bug@amsat.org>
wrote:
> Hi Marc-André,
>
> On 05/29/2017 05:45 AM, Marc-André Lureau wrote:
> > qemu_chr_fe_write() is similar to qemu_chr_write_all(): the later write
> > all with a chardev backend.
> >
> > Make qemu_chr_write() and qemu_chr_fe_write_buffer() take an 'all'
> > argument. If false, handle 'partial' write the way qemu_chr_fe_write()
> > use to, and call qemu_chr_write() from qemu_chr_fe_write().
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> > chardev/char.c | 70
> +++++++++++++++++++++++-----------------------------------
> > 1 file changed, 28 insertions(+), 42 deletions(-)
> >
> > diff --git a/chardev/char.c b/chardev/char.c
> > index a747e0279a..9a7c70c7aa 100644
> > --- a/chardev/char.c
> > +++ b/chardev/char.c
> > @@ -96,7 +96,8 @@ static void qemu_chr_fe_write_log(Chardev *s,
> > }
> >
> > static int qemu_chr_fe_write_buffer(Chardev *s,
> > - const uint8_t *buf, int len, int
> *offset)
> > + const uint8_t *buf, int len,
> > + int *offset, bool write_all)
> > {
> > ChardevClass *cc = CHARDEV_GET_CLASS(s);
> > int res = 0;
> > @@ -106,7 +107,7 @@ static int qemu_chr_fe_write_buffer(Chardev *s,
> > while (*offset < len) {
> > retry:
> > res = cc->chr_write(s, buf + *offset, len - *offset);
> > - if (res < 0 && errno == EAGAIN) {
> > + if (res < 0 && errno == EAGAIN && write_all) {
> > g_usleep(100);
> > goto retry;
> > }
> > @@ -116,6 +117,9 @@ static int qemu_chr_fe_write_buffer(Chardev *s,
> > }
> >
> > *offset += res;
> > + if (!write_all) {
> > + break;
> > + }
> > }
> > if (*offset > 0) {
> > qemu_chr_fe_write_log(s, buf, *offset);
> > @@ -130,54 +134,20 @@ static bool qemu_chr_replay(Chardev *chr)
> > return qemu_chr_has_feature(chr, QEMU_CHAR_FEATURE_REPLAY);
> > }
> >
> > -int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)
> > +static int qemu_chr_write(Chardev *s, const uint8_t *buf, int len,
> > + bool write_all)
> > {
> > - Chardev *s = be->chr;
> > - ChardevClass *cc;
> > - int ret;
> > -
> > - if (!s) {
> > - return 0;
> > - }
> > -
> > - if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
> > - int offset;
> > - replay_char_write_event_load(&ret, &offset);
> > - assert(offset <= len);
> > - qemu_chr_fe_write_buffer(s, buf, offset, &offset);
> > - return ret;
> > - }
> > -
> > - cc = CHARDEV_GET_CLASS(s);
> > - qemu_mutex_lock(&s->chr_write_lock);
> > - ret = cc->chr_write(s, buf, len);
> > -
> > - if (ret > 0) {
> > - qemu_chr_fe_write_log(s, buf, ret);
> > - }
> > -
> > - qemu_mutex_unlock(&s->chr_write_lock);
> > -
> > - if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
> > - replay_char_write_event_save(ret, ret < 0 ? 0 : ret);
> > - }
> > -
> > - return ret;
> > -}
> > -
> > -int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len)
> > -{
> > - int offset;
> > + int offset = 0;
> > int res;
> >
> > if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_PLAY) {
> > replay_char_write_event_load(&res, &offset);
> > assert(offset <= len);
> > - qemu_chr_fe_write_buffer(s, buf, offset, &offset);
> > + qemu_chr_fe_write_buffer(s, buf, offset, &offset, true);
> > return res;
> > }
> >
> > - res = qemu_chr_fe_write_buffer(s, buf, len, &offset);
> > + res = qemu_chr_fe_write_buffer(s, buf, len, &offset, write_all);
> >
> > if (qemu_chr_replay(s) && replay_mode == REPLAY_MODE_RECORD) {
> > replay_char_write_event_save(res, offset);
> > @@ -189,6 +159,22 @@ int qemu_chr_write_all(Chardev *s, const uint8_t
> *buf, int len)
> > return offset;
> > }
> >
> > +int qemu_chr_write_all(Chardev *s, const uint8_t *buf, int len)
> > +{
> > + return qemu_chr_write(s, buf, len, true);
> > +}
> > +
> > +int qemu_chr_fe_write(CharBackend *be, const uint8_t *buf, int len)
> > +{
> > + Chardev *s = be->chr;
> > +
> > + if (!s) {
> > + return 0;
> > + }
> > +
> > + return qemu_chr_write(s, buf, len, false);
> > +}
> > +
> > int qemu_chr_fe_write_all(CharBackend *be, const uint8_t *buf, int len)
> > {
> > Chardev *s = be->chr;
> > @@ -197,7 +183,7 @@ int qemu_chr_fe_write_all(CharBackend *be, const
> uint8_t *buf, int len)
> > return 0;
> > }
> >
> > - return qemu_chr_write_all(s, buf, len);
> > + return qemu_chr_write(s, buf, len, true);
>
> I think calling qemu_chr_write_all() is more readable.
>
qemu_chr_write_all() would imply that you cannot change the 'all'
behaviour to me, but this is a matter of taste I guess
> Either ways:
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
thanks
--
Marc-André Lureau
^ permalink raw reply [flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH] char: cast ARRAY_SIZE() as signed to silent warning on empty array
2017-05-29 9:23 ` [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups no-reply
@ 2017-05-30 12:09 ` Philippe Mathieu-Daudé
2017-05-30 12:38 ` Marc-André Lureau
0 siblings, 1 reply; 33+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-30 12:09 UTC (permalink / raw)
To: qemu-devel, Marc-André Lureau; +Cc: Philippe Mathieu-Daudé
chardev/char.c: In function 'chardev_name_foreach':
chardev/char.c:546:19: error: comparison of unsigned expression < 0 is always false [-Werror=type-limits]
for (i = 0; i < ARRAY_SIZE(chardev_alias_table); i++) {
^
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
chardev/char.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/chardev/char.c b/chardev/char.c
index 4e3808aefc..7aa0210765 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -543,7 +543,7 @@ chardev_name_foreach(void (*fn)(const char *name, void *opaque), void *opaque)
object_class_foreach(chardev_class_foreach, TYPE_CHARDEV, false, &fe);
- for (i = 0; i < ARRAY_SIZE(chardev_alias_table); i++) {
+ for (i = 0; i < (int)ARRAY_SIZE(chardev_alias_table); i++) {
fn(chardev_alias_table[i].alias, opaque);
}
}
@@ -589,7 +589,7 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts,
return NULL;
}
- for (i = 0; i < ARRAY_SIZE(chardev_alias_table); i++) {
+ for (i = 0; i < (int)ARRAY_SIZE(chardev_alias_table); i++) {
if (g_strcmp0(chardev_alias_table[i].alias, name) == 0) {
name = chardev_alias_table[i].typename;
break;
--
2.11.0
^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH] char: cast ARRAY_SIZE() as signed to silent warning on empty array
2017-05-30 12:09 ` [Qemu-devel] [PATCH] char: cast ARRAY_SIZE() as signed to silent warning on empty array Philippe Mathieu-Daudé
@ 2017-05-30 12:38 ` Marc-André Lureau
0 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-30 12:38 UTC (permalink / raw)
To: Philippe Mathieu-Daudé; +Cc: qemu-devel
----- Original Message -----
> chardev/char.c: In function 'chardev_name_foreach':
> chardev/char.c:546:19: error: comparison of unsigned expression < 0 is always
> false [-Werror=type-limits]
> for (i = 0; i < ARRAY_SIZE(chardev_alias_table); i++) {
> ^
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> chardev/char.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/chardev/char.c b/chardev/char.c
> index 4e3808aefc..7aa0210765 100644
> --- a/chardev/char.c
> +++ b/chardev/char.c
> @@ -543,7 +543,7 @@ chardev_name_foreach(void (*fn)(const char *name, void
> *opaque), void *opaque)
>
> object_class_foreach(chardev_class_foreach, TYPE_CHARDEV, false, &fe);
>
> - for (i = 0; i < ARRAY_SIZE(chardev_alias_table); i++) {
> + for (i = 0; i < (int)ARRAY_SIZE(chardev_alias_table); i++) {
> fn(chardev_alias_table[i].alias, opaque);
> }
> }
> @@ -589,7 +589,7 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts,
> return NULL;
> }
>
> - for (i = 0; i < ARRAY_SIZE(chardev_alias_table); i++) {
> + for (i = 0; i < (int)ARRAY_SIZE(chardev_alias_table); i++) {
> if (g_strcmp0(chardev_alias_table[i].alias, name) == 0) {
> name = chardev_alias_table[i].typename;
> break;
> --
> 2.11.0
>
>
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 14/14] char: move char devices to chardev/
2017-05-29 21:31 ` Philippe Mathieu-Daudé
@ 2017-05-30 15:18 ` Eric Blake
2017-05-31 14:01 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 33+ messages in thread
From: Eric Blake @ 2017-05-30 15:18 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, Marc-André Lureau, qemu-devel; +Cc: pbonzini
[-- Attachment #1: Type: text/plain, Size: 472 bytes --]
On 05/29/2017 04:31 PM, Philippe Mathieu-Daudé wrote:
> On 05/29/2017 05:45 AM, Marc-André Lureau wrote:
>> Suggested by Paolo Bonizini during series review.
>
> Bonzini ;) "serie" singular
No, "serie" is not a word. "series" is one of those weird English words
that is both singular and plural (another such word is "sheep").
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 13/14] char: make chr_fe_deinit() optionaly delete backend
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 13/14] char: make chr_fe_deinit() optionaly delete backend Marc-André Lureau
@ 2017-05-31 13:09 ` Marc-André Lureau
2017-06-02 4:52 ` Philippe Mathieu-Daudé
1 sibling, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-05-31 13:09 UTC (permalink / raw)
To: qemu-devel; +Cc: pbonzini, f4bug
ping, only patch left in the series without review
thanks
On Mon, May 29, 2017 at 12:56 PM Marc-André Lureau <
marcandre.lureau@redhat.com> wrote:
> This simplifies removing a backend for a frontend user (no need to
> retrive the associated driver and seperate delete call etc).
>
> NB: many frontends have questionable handling of ending a chardev. They
> should probably delete the backend to prevent broken reusage.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> include/chardev/char-fe.h | 6 ++++--
> backends/rng-egd.c | 2 +-
> chardev/char-fe.c | 5 ++++-
> chardev/char-mux.c | 2 +-
> gdbstub.c | 15 ++-------------
> hw/char/serial.c | 2 +-
> hw/char/xen_console.c | 2 +-
> hw/core/qdev-properties-system.c | 2 +-
> hw/usb/ccid-card-passthru.c | 5 +----
> hw/usb/redirect.c | 4 +---
> monitor.c | 2 +-
> net/colo-compare.c | 8 +++-----
> net/filter-mirror.c | 6 +++---
> net/vhost-user.c | 5 +----
> tests/test-char.c | 22 ++++++++--------------
> tests/vhost-user-test.c | 4 +---
> 16 files changed, 34 insertions(+), 58 deletions(-)
>
> diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h
> index bd82093218..2cbb262f66 100644
> --- a/include/chardev/char-fe.h
> +++ b/include/chardev/char-fe.h
> @@ -30,12 +30,14 @@ bool qemu_chr_fe_init(CharBackend *b, Chardev *s,
> Error **errp);
>
> /**
> * @qemu_chr_fe_deinit:
> - *
> + * @b: a CharBackend
> + * @del: if true, delete the chardev backend
> +*
> * Dissociate the CharBackend from the Chardev.
> *
> * Safe to call without associated Chardev.
> */
> -void qemu_chr_fe_deinit(CharBackend *b);
> +void qemu_chr_fe_deinit(CharBackend *b, bool del);
>
> /**
> * @qemu_chr_fe_get_driver:
> diff --git a/backends/rng-egd.c b/backends/rng-egd.c
> index ad3e1e5edf..e7ce2cac80 100644
> --- a/backends/rng-egd.c
> +++ b/backends/rng-egd.c
> @@ -145,7 +145,7 @@ static void rng_egd_finalize(Object *obj)
> {
> RngEgd *s = RNG_EGD(obj);
>
> - qemu_chr_fe_deinit(&s->chr);
> + qemu_chr_fe_deinit(&s->chr, false);
> g_free(s->chr_name);
> }
>
> diff --git a/chardev/char-fe.c b/chardev/char-fe.c
> index 341221d029..3f90f0567c 100644
> --- a/chardev/char-fe.c
> +++ b/chardev/char-fe.c
> @@ -211,7 +211,7 @@ unavailable:
> return false;
> }
>
> -void qemu_chr_fe_deinit(CharBackend *b)
> +void qemu_chr_fe_deinit(CharBackend *b, bool del)
> {
> assert(b);
>
> @@ -224,6 +224,9 @@ void qemu_chr_fe_deinit(CharBackend *b)
> MuxChardev *d = MUX_CHARDEV(b->chr);
> d->backends[b->tag] = NULL;
> }
> + if (del) {
> + object_unparent(OBJECT(b->chr));
> + }
> b->chr = NULL;
> }
> }
> diff --git a/chardev/char-mux.c b/chardev/char-mux.c
> index 106c682e7f..08570b915e 100644
> --- a/chardev/char-mux.c
> +++ b/chardev/char-mux.c
> @@ -266,7 +266,7 @@ static void char_mux_finalize(Object *obj)
> be->chr = NULL;
> }
> }
> - qemu_chr_fe_deinit(&d->chr);
> + qemu_chr_fe_deinit(&d->chr, false);
> }
>
> void mux_chr_set_handlers(Chardev *chr, GMainContext *context)
> diff --git a/gdbstub.c b/gdbstub.c
> index 4251d23898..ec4e4b25be 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -1678,9 +1678,6 @@ void gdb_exit(CPUArchState *env, int code)
> {
> GDBState *s;
> char buf[4];
> -#ifndef CONFIG_USER_ONLY
> - Chardev *chr;
> -#endif
>
> s = gdbserver_state;
> if (!s) {
> @@ -1690,19 +1687,13 @@ void gdb_exit(CPUArchState *env, int code)
> if (gdbserver_fd < 0 || s->fd < 0) {
> return;
> }
> -#else
> - chr = qemu_chr_fe_get_driver(&s->chr);
> - if (!chr) {
> - return;
> - }
> #endif
>
> snprintf(buf, sizeof(buf), "W%02x", (uint8_t)code);
> put_packet(s, buf);
>
> #ifndef CONFIG_USER_ONLY
> - qemu_chr_fe_deinit(&s->chr);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&s->chr, true);
> #endif
> }
>
> @@ -2002,9 +1993,7 @@ int gdbserver_start(const char *device)
> NULL, &error_abort);
> monitor_init(mon_chr, 0);
> } else {
> - if (qemu_chr_fe_get_driver(&s->chr)) {
> - object_unparent(OBJECT(qemu_chr_fe_get_driver(&s->chr)));
> - }
> + qemu_chr_fe_deinit(&s->chr, true);
> mon_chr = s->mon_chr;
> memset(s, 0, sizeof(GDBState));
> s->mon_chr = mon_chr;
> diff --git a/hw/char/serial.c b/hw/char/serial.c
> index 23e5fe9d18..e1f12507bf 100644
> --- a/hw/char/serial.c
> +++ b/hw/char/serial.c
> @@ -905,7 +905,7 @@ void serial_realize_core(SerialState *s, Error **errp)
>
> void serial_exit_core(SerialState *s)
> {
> - qemu_chr_fe_deinit(&s->chr);
> + qemu_chr_fe_deinit(&s->chr, false);
>
> timer_del(s->modem_status_poll);
> timer_free(s->modem_status_poll);
> diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c
> index cb849c2e3e..f9af8cadf4 100644
> --- a/hw/char/xen_console.c
> +++ b/hw/char/xen_console.c
> @@ -261,7 +261,7 @@ static void con_disconnect(struct XenDevice *xendev)
> {
> struct XenConsole *con = container_of(xendev, struct XenConsole,
> xendev);
>
> - qemu_chr_fe_deinit(&con->chr);
> + qemu_chr_fe_deinit(&con->chr, false);
> xen_pv_unbind_evtchn(&con->xendev);
>
> if (con->sring) {
> diff --git a/hw/core/qdev-properties-system.c
> b/hw/core/qdev-properties-system.c
> index a549d39030..3bef41914d 100644
> --- a/hw/core/qdev-properties-system.c
> +++ b/hw/core/qdev-properties-system.c
> @@ -225,7 +225,7 @@ static void release_chr(Object *obj, const char *name,
> void *opaque)
> Property *prop = opaque;
> CharBackend *be = qdev_get_prop_ptr(dev, prop);
>
> - qemu_chr_fe_deinit(be);
> + qemu_chr_fe_deinit(be, false);
> }
>
> PropertyInfo qdev_prop_chr = {
> diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c
> index fed3683a50..ac1725eeae 100644
> --- a/hw/usb/ccid-card-passthru.c
> +++ b/hw/usb/ccid-card-passthru.c
> @@ -264,10 +264,7 @@ static void
> ccid_card_vscard_handle_message(PassthruState *card,
>
> static void ccid_card_vscard_drop_connection(PassthruState *card)
> {
> - Chardev *chr = qemu_chr_fe_get_driver(&card->cs);
> -
> - qemu_chr_fe_deinit(&card->cs);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&card->cs, true);
> card->vscard_in_pos = card->vscard_in_hdr = 0;
> }
>
> diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
> index d2b3a84a03..aa22d69216 100644
> --- a/hw/usb/redirect.c
> +++ b/hw/usb/redirect.c
> @@ -1419,10 +1419,8 @@ static void
> usbredir_cleanup_device_queues(USBRedirDevice *dev)
> static void usbredir_unrealize(USBDevice *udev, Error **errp)
> {
> USBRedirDevice *dev = USB_REDIRECT(udev);
> - Chardev *chr = qemu_chr_fe_get_driver(&dev->cs);
>
> - qemu_chr_fe_deinit(&dev->cs);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&dev->cs, true);
>
> /* Note must be done after qemu_chr_close, as that causes a close
> event */
> qemu_bh_delete(dev->chardev_close_bh);
> diff --git a/monitor.c b/monitor.c
> index 37f8d5645f..75e7cd26d0 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -578,7 +578,7 @@ static void monitor_data_init(Monitor *mon)
>
> static void monitor_data_destroy(Monitor *mon)
> {
> - qemu_chr_fe_deinit(&mon->chr);
> + qemu_chr_fe_deinit(&mon->chr, false);
> if (monitor_is_qmp(mon)) {
> json_message_parser_destroy(&mon->qmp.parser);
> }
> diff --git a/net/colo-compare.c b/net/colo-compare.c
> index 2fb75bcca4..6d500e1dc4 100644
> --- a/net/colo-compare.c
> +++ b/net/colo-compare.c
> @@ -801,11 +801,9 @@ static void colo_compare_finalize(Object *obj)
> {
> CompareState *s = COLO_COMPARE(obj);
>
> - qemu_chr_fe_set_handlers(&s->chr_pri_in, NULL, NULL, NULL, NULL,
> - s->worker_context, true);
> - qemu_chr_fe_set_handlers(&s->chr_sec_in, NULL, NULL, NULL, NULL,
> - s->worker_context, true);
> - qemu_chr_fe_deinit(&s->chr_out);
> + qemu_chr_fe_deinit(&s->chr_pri_in, false);
> + qemu_chr_fe_deinit(&s->chr_sec_in, false);
> + qemu_chr_fe_deinit(&s->chr_out, false);
>
> g_main_loop_quit(s->compare_loop);
> qemu_thread_join(&s->thread);
> diff --git a/net/filter-mirror.c b/net/filter-mirror.c
> index a20330475c..52d978fce2 100644
> --- a/net/filter-mirror.c
> +++ b/net/filter-mirror.c
> @@ -178,15 +178,15 @@ static void filter_mirror_cleanup(NetFilterState *nf)
> {
> MirrorState *s = FILTER_MIRROR(nf);
>
> - qemu_chr_fe_deinit(&s->chr_out);
> + qemu_chr_fe_deinit(&s->chr_out, false);
> }
>
> static void filter_redirector_cleanup(NetFilterState *nf)
> {
> MirrorState *s = FILTER_REDIRECTOR(nf);
>
> - qemu_chr_fe_deinit(&s->chr_in);
> - qemu_chr_fe_deinit(&s->chr_out);
> + qemu_chr_fe_deinit(&s->chr_in, false);
> + qemu_chr_fe_deinit(&s->chr_out, false);
> }
>
> static void filter_mirror_setup(NetFilterState *nf, Error **errp)
> diff --git a/net/vhost-user.c b/net/vhost-user.c
> index 526290d8c1..a042ec6a34 100644
> --- a/net/vhost-user.c
> +++ b/net/vhost-user.c
> @@ -151,10 +151,7 @@ static void vhost_user_cleanup(NetClientState *nc)
> s->vhost_net = NULL;
> }
> if (nc->queue_index == 0) {
> - Chardev *chr = qemu_chr_fe_get_driver(&s->chr);
> -
> - qemu_chr_fe_deinit(&s->chr);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&s->chr, true);
> }
>
> qemu_purge_queued_packets(nc);
> diff --git a/tests/test-char.c b/tests/test-char.c
> index d7ecf1056a..dfe856cb85 100644
> --- a/tests/test-char.c
> +++ b/tests/test-char.c
> @@ -97,8 +97,7 @@ static void char_stdio_test_subprocess(void)
> ret = qemu_chr_fe_write(&be, (void *)"buf", 4);
> g_assert_cmpint(ret, ==, 4);
>
> - qemu_chr_fe_deinit(&be);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&be, true);
> }
>
> static void char_stdio_test(void)
> @@ -146,8 +145,7 @@ static void char_ringbuf_test(void)
> g_assert_cmpstr(data, ==, "");
> g_free(data);
>
> - qemu_chr_fe_deinit(&be);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&be, true);
>
> /* check alias */
> opts = qemu_opts_create(qemu_find_opts("chardev"), "memory-label",
> @@ -231,9 +229,8 @@ static void char_mux_test(void)
> g_assert_cmpint(strlen(data), !=, 0);
> g_free(data);
>
> - qemu_chr_fe_deinit(&chr_be1);
> - qemu_chr_fe_deinit(&chr_be2);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&chr_be1, false);
> + qemu_chr_fe_deinit(&chr_be2, true);
> }
>
> typedef struct SocketIdleData {
> @@ -396,8 +393,7 @@ static void char_pipe_test(void)
> g_assert_cmpint(fe.read_count, ==, 8);
> g_assert_cmpstr(fe.read_buf, ==, "pipe-in");
>
> - qemu_chr_fe_deinit(&be);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&be, true);
>
> g_assert(g_unlink(in) == 0);
> g_assert(g_unlink(out) == 0);
> @@ -511,8 +507,7 @@ static void char_file_test(void)
>
> g_assert_cmpint(fe.read_count, ==, 8);
> g_assert_cmpstr(fe.read_buf, ==, "fifo-in");
> - qemu_chr_fe_deinit(&be);
> - object_unref(OBJECT(chr));
> + qemu_chr_fe_deinit(&be, true);
> g_unlink(fifo);
> g_free(fifo);
> }
> @@ -549,7 +544,7 @@ static void char_null_test(void)
> error_free_or_abort(&err);
>
> /* deinit & reinit */
> - qemu_chr_fe_deinit(&be);
> + qemu_chr_fe_deinit(&be, false);
> qemu_chr_fe_init(&be, chr, &error_abort);
>
> qemu_chr_fe_set_open(&be, true);
> @@ -563,8 +558,7 @@ static void char_null_test(void)
> ret = qemu_chr_fe_write(&be, (void *)"buf", 4);
> g_assert_cmpint(ret, ==, 4);
>
> - qemu_chr_fe_deinit(&be);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&be, true);
> }
>
> static void char_invalid_test(void)
> diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
> index 4ca11ae28d..b3cc045765 100644
> --- a/tests/vhost-user-test.c
> +++ b/tests/vhost-user-test.c
> @@ -488,10 +488,8 @@ static inline void test_server_connect(TestServer
> *server)
> static gboolean _test_server_free(TestServer *server)
> {
> int i;
> - Chardev *chr = qemu_chr_fe_get_driver(&server->chr);
>
> - qemu_chr_fe_deinit(&server->chr);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&server->chr, true);
>
> for (i = 0; i < server->fds_num; i++) {
> close(server->fds[i]);
> --
> 2.13.0.91.g00982b8dd
>
>
> --
Marc-André Lureau
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 14/14] char: move char devices to chardev/
2017-05-30 15:18 ` Eric Blake
@ 2017-05-31 14:01 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 33+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-05-31 14:01 UTC (permalink / raw)
To: Eric Blake, Marc-André Lureau, qemu-devel; +Cc: pbonzini
On 05/30/2017 12:18 PM, Eric Blake wrote:
> On 05/29/2017 04:31 PM, Philippe Mathieu-Daudé wrote:
>> On 05/29/2017 05:45 AM, Marc-André Lureau wrote:
>>> Suggested by Paolo Bonizini during series review.
>>
>> Bonzini ;) "serie" singular
>
> No, "serie" is not a word. "series" is one of those weird English words
> that is both singular and plural (another such word is "sheep").
Oh, I thought it was describing "this" particular series so no need to
plural. Thank for the clarification :)
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 13/14] char: make chr_fe_deinit() optionaly delete backend
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 13/14] char: make chr_fe_deinit() optionaly delete backend Marc-André Lureau
2017-05-31 13:09 ` Marc-André Lureau
@ 2017-06-02 4:52 ` Philippe Mathieu-Daudé
1 sibling, 0 replies; 33+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-06-02 4:52 UTC (permalink / raw)
To: Marc-André Lureau, qemu-devel; +Cc: pbonzini
Hi Marc-André,
The new boolean argument bothered me at first but I couldn't find nicer
way (that's why I kept this patch review so long).
On 05/29/2017 05:45 AM, Marc-André Lureau wrote:
> This simplifies removing a backend for a frontend user (no need to
> retrive the associated driver and seperate delete call etc).
retrieve, separate
>
> NB: many frontends have questionable handling of ending a chardev. They
> should probably delete the backend to prevent broken reusage.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> include/chardev/char-fe.h | 6 ++++--
> backends/rng-egd.c | 2 +-
> chardev/char-fe.c | 5 ++++-
> chardev/char-mux.c | 2 +-
> gdbstub.c | 15 ++-------------
> hw/char/serial.c | 2 +-
> hw/char/xen_console.c | 2 +-
> hw/core/qdev-properties-system.c | 2 +-
> hw/usb/ccid-card-passthru.c | 5 +----
> hw/usb/redirect.c | 4 +---
> monitor.c | 2 +-
> net/colo-compare.c | 8 +++-----
> net/filter-mirror.c | 6 +++---
> net/vhost-user.c | 5 +----
> tests/test-char.c | 22 ++++++++--------------
> tests/vhost-user-test.c | 4 +---
> 16 files changed, 34 insertions(+), 58 deletions(-)
>
> diff --git a/include/chardev/char-fe.h b/include/chardev/char-fe.h
> index bd82093218..2cbb262f66 100644
> --- a/include/chardev/char-fe.h
> +++ b/include/chardev/char-fe.h
> @@ -30,12 +30,14 @@ bool qemu_chr_fe_init(CharBackend *b, Chardev *s, Error **errp);
>
> /**
> * @qemu_chr_fe_deinit:
> - *
> + * @b: a CharBackend
> + * @del: if true, delete the chardev backend
> +*
> * Dissociate the CharBackend from the Chardev.
> *
> * Safe to call without associated Chardev.
> */
> -void qemu_chr_fe_deinit(CharBackend *b);
> +void qemu_chr_fe_deinit(CharBackend *b, bool del);
>
> /**
> * @qemu_chr_fe_get_driver:
> diff --git a/backends/rng-egd.c b/backends/rng-egd.c
> index ad3e1e5edf..e7ce2cac80 100644
> --- a/backends/rng-egd.c
> +++ b/backends/rng-egd.c
> @@ -145,7 +145,7 @@ static void rng_egd_finalize(Object *obj)
> {
> RngEgd *s = RNG_EGD(obj);
>
> - qemu_chr_fe_deinit(&s->chr);
> + qemu_chr_fe_deinit(&s->chr, false);
> g_free(s->chr_name);
> }
>
> diff --git a/chardev/char-fe.c b/chardev/char-fe.c
> index 341221d029..3f90f0567c 100644
> --- a/chardev/char-fe.c
> +++ b/chardev/char-fe.c
> @@ -211,7 +211,7 @@ unavailable:
> return false;
> }
>
> -void qemu_chr_fe_deinit(CharBackend *b)
> +void qemu_chr_fe_deinit(CharBackend *b, bool del)
> {
> assert(b);
>
> @@ -224,6 +224,9 @@ void qemu_chr_fe_deinit(CharBackend *b)
> MuxChardev *d = MUX_CHARDEV(b->chr);
> d->backends[b->tag] = NULL;
> }
> + if (del) {
> + object_unparent(OBJECT(b->chr));
> + }
> b->chr = NULL;
> }
> }
> diff --git a/chardev/char-mux.c b/chardev/char-mux.c
> index 106c682e7f..08570b915e 100644
> --- a/chardev/char-mux.c
> +++ b/chardev/char-mux.c
> @@ -266,7 +266,7 @@ static void char_mux_finalize(Object *obj)
> be->chr = NULL;
> }
> }
> - qemu_chr_fe_deinit(&d->chr);
> + qemu_chr_fe_deinit(&d->chr, false);
> }
>
> void mux_chr_set_handlers(Chardev *chr, GMainContext *context)
> diff --git a/gdbstub.c b/gdbstub.c
> index 4251d23898..ec4e4b25be 100644
> --- a/gdbstub.c
> +++ b/gdbstub.c
> @@ -1678,9 +1678,6 @@ void gdb_exit(CPUArchState *env, int code)
> {
> GDBState *s;
> char buf[4];
> -#ifndef CONFIG_USER_ONLY
> - Chardev *chr;
> -#endif
>
> s = gdbserver_state;
> if (!s) {
> @@ -1690,19 +1687,13 @@ void gdb_exit(CPUArchState *env, int code)
> if (gdbserver_fd < 0 || s->fd < 0) {
> return;
> }
> -#else
> - chr = qemu_chr_fe_get_driver(&s->chr);
> - if (!chr) {
> - return;
> - }
> #endif
>
> snprintf(buf, sizeof(buf), "W%02x", (uint8_t)code);
> put_packet(s, buf);
>
> #ifndef CONFIG_USER_ONLY
> - qemu_chr_fe_deinit(&s->chr);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&s->chr, true);
> #endif
> }
>
> @@ -2002,9 +1993,7 @@ int gdbserver_start(const char *device)
> NULL, &error_abort);
> monitor_init(mon_chr, 0);
> } else {
> - if (qemu_chr_fe_get_driver(&s->chr)) {
> - object_unparent(OBJECT(qemu_chr_fe_get_driver(&s->chr)));
> - }
> + qemu_chr_fe_deinit(&s->chr, true);
> mon_chr = s->mon_chr;
> memset(s, 0, sizeof(GDBState));
> s->mon_chr = mon_chr;
> diff --git a/hw/char/serial.c b/hw/char/serial.c
> index 23e5fe9d18..e1f12507bf 100644
> --- a/hw/char/serial.c
> +++ b/hw/char/serial.c
> @@ -905,7 +905,7 @@ void serial_realize_core(SerialState *s, Error **errp)
>
> void serial_exit_core(SerialState *s)
> {
> - qemu_chr_fe_deinit(&s->chr);
> + qemu_chr_fe_deinit(&s->chr, false);
>
> timer_del(s->modem_status_poll);
> timer_free(s->modem_status_poll);
> diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c
> index cb849c2e3e..f9af8cadf4 100644
> --- a/hw/char/xen_console.c
> +++ b/hw/char/xen_console.c
> @@ -261,7 +261,7 @@ static void con_disconnect(struct XenDevice *xendev)
> {
> struct XenConsole *con = container_of(xendev, struct XenConsole, xendev);
>
> - qemu_chr_fe_deinit(&con->chr);
> + qemu_chr_fe_deinit(&con->chr, false);
> xen_pv_unbind_evtchn(&con->xendev);
>
> if (con->sring) {
> diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
> index a549d39030..3bef41914d 100644
> --- a/hw/core/qdev-properties-system.c
> +++ b/hw/core/qdev-properties-system.c
> @@ -225,7 +225,7 @@ static void release_chr(Object *obj, const char *name, void *opaque)
> Property *prop = opaque;
> CharBackend *be = qdev_get_prop_ptr(dev, prop);
>
> - qemu_chr_fe_deinit(be);
> + qemu_chr_fe_deinit(be, false);
> }
>
> PropertyInfo qdev_prop_chr = {
> diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c
> index fed3683a50..ac1725eeae 100644
> --- a/hw/usb/ccid-card-passthru.c
> +++ b/hw/usb/ccid-card-passthru.c
> @@ -264,10 +264,7 @@ static void ccid_card_vscard_handle_message(PassthruState *card,
>
> static void ccid_card_vscard_drop_connection(PassthruState *card)
> {
> - Chardev *chr = qemu_chr_fe_get_driver(&card->cs);
> -
> - qemu_chr_fe_deinit(&card->cs);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&card->cs, true);
> card->vscard_in_pos = card->vscard_in_hdr = 0;
> }
>
> diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
> index d2b3a84a03..aa22d69216 100644
> --- a/hw/usb/redirect.c
> +++ b/hw/usb/redirect.c
> @@ -1419,10 +1419,8 @@ static void usbredir_cleanup_device_queues(USBRedirDevice *dev)
> static void usbredir_unrealize(USBDevice *udev, Error **errp)
> {
> USBRedirDevice *dev = USB_REDIRECT(udev);
> - Chardev *chr = qemu_chr_fe_get_driver(&dev->cs);
>
> - qemu_chr_fe_deinit(&dev->cs);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&dev->cs, true);
>
> /* Note must be done after qemu_chr_close, as that causes a close event */
> qemu_bh_delete(dev->chardev_close_bh);
> diff --git a/monitor.c b/monitor.c
> index 37f8d5645f..75e7cd26d0 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -578,7 +578,7 @@ static void monitor_data_init(Monitor *mon)
>
> static void monitor_data_destroy(Monitor *mon)
> {
> - qemu_chr_fe_deinit(&mon->chr);
> + qemu_chr_fe_deinit(&mon->chr, false);
> if (monitor_is_qmp(mon)) {
> json_message_parser_destroy(&mon->qmp.parser);
> }
> diff --git a/net/colo-compare.c b/net/colo-compare.c
> index 2fb75bcca4..6d500e1dc4 100644
> --- a/net/colo-compare.c
> +++ b/net/colo-compare.c
> @@ -801,11 +801,9 @@ static void colo_compare_finalize(Object *obj)
> {
> CompareState *s = COLO_COMPARE(obj);
>
> - qemu_chr_fe_set_handlers(&s->chr_pri_in, NULL, NULL, NULL, NULL,
> - s->worker_context, true);
> - qemu_chr_fe_set_handlers(&s->chr_sec_in, NULL, NULL, NULL, NULL,
> - s->worker_context, true);
> - qemu_chr_fe_deinit(&s->chr_out);
> + qemu_chr_fe_deinit(&s->chr_pri_in, false);
> + qemu_chr_fe_deinit(&s->chr_sec_in, false);
> + qemu_chr_fe_deinit(&s->chr_out, false);
>
> g_main_loop_quit(s->compare_loop);
> qemu_thread_join(&s->thread);
> diff --git a/net/filter-mirror.c b/net/filter-mirror.c
> index a20330475c..52d978fce2 100644
> --- a/net/filter-mirror.c
> +++ b/net/filter-mirror.c
> @@ -178,15 +178,15 @@ static void filter_mirror_cleanup(NetFilterState *nf)
> {
> MirrorState *s = FILTER_MIRROR(nf);
>
> - qemu_chr_fe_deinit(&s->chr_out);
> + qemu_chr_fe_deinit(&s->chr_out, false);
> }
>
> static void filter_redirector_cleanup(NetFilterState *nf)
> {
> MirrorState *s = FILTER_REDIRECTOR(nf);
>
> - qemu_chr_fe_deinit(&s->chr_in);
> - qemu_chr_fe_deinit(&s->chr_out);
> + qemu_chr_fe_deinit(&s->chr_in, false);
> + qemu_chr_fe_deinit(&s->chr_out, false);
> }
>
> static void filter_mirror_setup(NetFilterState *nf, Error **errp)
> diff --git a/net/vhost-user.c b/net/vhost-user.c
> index 526290d8c1..a042ec6a34 100644
> --- a/net/vhost-user.c
> +++ b/net/vhost-user.c
> @@ -151,10 +151,7 @@ static void vhost_user_cleanup(NetClientState *nc)
> s->vhost_net = NULL;
> }
> if (nc->queue_index == 0) {
> - Chardev *chr = qemu_chr_fe_get_driver(&s->chr);
> -
> - qemu_chr_fe_deinit(&s->chr);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&s->chr, true);
> }
>
> qemu_purge_queued_packets(nc);
> diff --git a/tests/test-char.c b/tests/test-char.c
> index d7ecf1056a..dfe856cb85 100644
> --- a/tests/test-char.c
> +++ b/tests/test-char.c
> @@ -97,8 +97,7 @@ static void char_stdio_test_subprocess(void)
> ret = qemu_chr_fe_write(&be, (void *)"buf", 4);
> g_assert_cmpint(ret, ==, 4);
>
> - qemu_chr_fe_deinit(&be);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&be, true);
> }
>
> static void char_stdio_test(void)
> @@ -146,8 +145,7 @@ static void char_ringbuf_test(void)
> g_assert_cmpstr(data, ==, "");
> g_free(data);
>
> - qemu_chr_fe_deinit(&be);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&be, true);
>
> /* check alias */
> opts = qemu_opts_create(qemu_find_opts("chardev"), "memory-label",
> @@ -231,9 +229,8 @@ static void char_mux_test(void)
> g_assert_cmpint(strlen(data), !=, 0);
> g_free(data);
>
> - qemu_chr_fe_deinit(&chr_be1);
> - qemu_chr_fe_deinit(&chr_be2);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&chr_be1, false);
> + qemu_chr_fe_deinit(&chr_be2, true);
> }
>
> typedef struct SocketIdleData {
> @@ -396,8 +393,7 @@ static void char_pipe_test(void)
> g_assert_cmpint(fe.read_count, ==, 8);
> g_assert_cmpstr(fe.read_buf, ==, "pipe-in");
>
> - qemu_chr_fe_deinit(&be);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&be, true);
>
> g_assert(g_unlink(in) == 0);
> g_assert(g_unlink(out) == 0);
> @@ -511,8 +507,7 @@ static void char_file_test(void)
>
> g_assert_cmpint(fe.read_count, ==, 8);
> g_assert_cmpstr(fe.read_buf, ==, "fifo-in");
> - qemu_chr_fe_deinit(&be);
> - object_unref(OBJECT(chr));
> + qemu_chr_fe_deinit(&be, true);
> g_unlink(fifo);
> g_free(fifo);
> }
> @@ -549,7 +544,7 @@ static void char_null_test(void)
> error_free_or_abort(&err);
>
> /* deinit & reinit */
> - qemu_chr_fe_deinit(&be);
> + qemu_chr_fe_deinit(&be, false);
> qemu_chr_fe_init(&be, chr, &error_abort);
>
> qemu_chr_fe_set_open(&be, true);
> @@ -563,8 +558,7 @@ static void char_null_test(void)
> ret = qemu_chr_fe_write(&be, (void *)"buf", 4);
> g_assert_cmpint(ret, ==, 4);
>
> - qemu_chr_fe_deinit(&be);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&be, true);
> }
>
> static void char_invalid_test(void)
> diff --git a/tests/vhost-user-test.c b/tests/vhost-user-test.c
> index 4ca11ae28d..b3cc045765 100644
> --- a/tests/vhost-user-test.c
> +++ b/tests/vhost-user-test.c
> @@ -488,10 +488,8 @@ static inline void test_server_connect(TestServer *server)
> static gboolean _test_server_free(TestServer *server)
> {
> int i;
> - Chardev *chr = qemu_chr_fe_get_driver(&server->chr);
>
> - qemu_chr_fe_deinit(&server->chr);
> - object_unparent(OBJECT(chr));
> + qemu_chr_fe_deinit(&server->chr, true);
>
> for (i = 0; i < server->fds_num; i++) {
> close(server->fds[i]);
>
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit Marc-André Lureau
@ 2017-06-07 16:41 ` Anthony PERARD
2017-06-07 16:41 ` Anthony PERARD
1 sibling, 0 replies; 33+ messages in thread
From: Anthony PERARD @ 2017-06-07 16:41 UTC (permalink / raw)
To: Marc-André Lureau; +Cc: qemu-devel, pbonzini, f4bug, xen-devel
On Mon, May 29, 2017 at 12:45:43PM +0400, Marc-André Lureau wrote:
> Move all the fronted struct and methods to a seperate unit. This avoids
> accidentally mixing backend and frontend calls, and helps with readibilty.
>
> Make qemu_chr_replay() a macro shared by both char and char-fe.
>
> Export qemu_chr_write(), and use a macro for qemu_chr_write_all()
>
> (nb: yes, CharBackend is for char frontend :)
Hi Marc-André,
Following this patch, we are not able anymore to launch QEMU with
-monitor /dev/null.
> qemu-system-i386: -monitor /dev/null: 'tty' is not a valid char driver name
FYI, the full command line used:
/usr/lib/xen/bin/qemu-system-i386 -xen-domid 0 \
-xen-attach -name dom0 -nographic -M xenpv -daemonize \
-monitor /dev/null -serial /dev/null -parallel /dev/null \
-nodefaults -no-user-config \
-pidfile /var/run/xen/qemu-dom0.pid
Regards,
--
Anthony PERARD
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit
@ 2017-06-07 16:41 ` Anthony PERARD
0 siblings, 0 replies; 33+ messages in thread
From: Anthony PERARD @ 2017-06-07 16:41 UTC (permalink / raw)
To: Marc-André Lureau; +Cc: pbonzini, xen-devel, qemu-devel, f4bug
On Mon, May 29, 2017 at 12:45:43PM +0400, Marc-André Lureau wrote:
> Move all the fronted struct and methods to a seperate unit. This avoids
> accidentally mixing backend and frontend calls, and helps with readibilty.
>
> Make qemu_chr_replay() a macro shared by both char and char-fe.
>
> Export qemu_chr_write(), and use a macro for qemu_chr_write_all()
>
> (nb: yes, CharBackend is for char frontend :)
Hi Marc-André,
Following this patch, we are not able anymore to launch QEMU with
-monitor /dev/null.
> qemu-system-i386: -monitor /dev/null: 'tty' is not a valid char driver name
FYI, the full command line used:
/usr/lib/xen/bin/qemu-system-i386 -xen-domid 0 \
-xen-attach -name dom0 -nographic -M xenpv -daemonize \
-monitor /dev/null -serial /dev/null -parallel /dev/null \
-nodefaults -no-user-config \
-pidfile /var/run/xen/qemu-dom0.pid
Regards,
--
Anthony PERARD
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit
2017-06-07 16:41 ` Anthony PERARD
@ 2017-06-07 17:20 ` Marc-André Lureau
-1 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-06-07 17:20 UTC (permalink / raw)
To: Anthony PERARD; +Cc: pbonzini, xen-devel, qemu-devel, f4bug
Hi
On Wed, Jun 7, 2017 at 8:57 PM Anthony PERARD <anthony.perard@citrix.com>
wrote:
> On Mon, May 29, 2017 at 12:45:43PM +0400, Marc-André Lureau wrote:
> > Move all the fronted struct and methods to a seperate unit. This avoids
> > accidentally mixing backend and frontend calls, and helps with
> readibilty.
> >
> > Make qemu_chr_replay() a macro shared by both char and char-fe.
> >
> > Export qemu_chr_write(), and use a macro for qemu_chr_write_all()
> >
> > (nb: yes, CharBackend is for char frontend :)
>
> Hi Marc-André,
>
> Following this patch, we are not able anymore to launch QEMU with
> -monitor /dev/null.
> > qemu-system-i386: -monitor /dev/null: 'tty' is not a valid char driver
> name
>
> FYI, the full command line used:
> /usr/lib/xen/bin/qemu-system-i386 -xen-domid 0 \
> -xen-attach -name dom0 -nographic -M xenpv -daemonize \
> -monitor /dev/null -serial /dev/null -parallel /dev/null \
> -nodefaults -no-user-config \
> -pidfile /var/run/xen/qemu-dom0.pid
>
>
My bad, and the worse is that CI actually gave me some hints of the
regression because the ChardevAlias array was empty.
I dropped char-serial.h and char-parellel.h in this patch, it shouldn't be.
I'll send fixes and add some tests.
Thanks for the report!
--
Marc-André Lureau
^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit
@ 2017-06-07 17:20 ` Marc-André Lureau
0 siblings, 0 replies; 33+ messages in thread
From: Marc-André Lureau @ 2017-06-07 17:20 UTC (permalink / raw)
To: Anthony PERARD; +Cc: pbonzini, f4bug, qemu-devel, xen-devel
[-- Attachment #1.1: Type: text/plain, Size: 1325 bytes --]
Hi
On Wed, Jun 7, 2017 at 8:57 PM Anthony PERARD <anthony.perard@citrix.com>
wrote:
> On Mon, May 29, 2017 at 12:45:43PM +0400, Marc-André Lureau wrote:
> > Move all the fronted struct and methods to a seperate unit. This avoids
> > accidentally mixing backend and frontend calls, and helps with
> readibilty.
> >
> > Make qemu_chr_replay() a macro shared by both char and char-fe.
> >
> > Export qemu_chr_write(), and use a macro for qemu_chr_write_all()
> >
> > (nb: yes, CharBackend is for char frontend :)
>
> Hi Marc-André,
>
> Following this patch, we are not able anymore to launch QEMU with
> -monitor /dev/null.
> > qemu-system-i386: -monitor /dev/null: 'tty' is not a valid char driver
> name
>
> FYI, the full command line used:
> /usr/lib/xen/bin/qemu-system-i386 -xen-domid 0 \
> -xen-attach -name dom0 -nographic -M xenpv -daemonize \
> -monitor /dev/null -serial /dev/null -parallel /dev/null \
> -nodefaults -no-user-config \
> -pidfile /var/run/xen/qemu-dom0.pid
>
>
My bad, and the worse is that CI actually gave me some hints of the
regression because the ChardevAlias array was empty.
I dropped char-serial.h and char-parellel.h in this patch, it shouldn't be.
I'll send fixes and add some tests.
Thanks for the report!
--
Marc-André Lureau
[-- Attachment #1.2: Type: text/html, Size: 1814 bytes --]
[-- Attachment #2: Type: text/plain, Size: 127 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 33+ messages in thread
end of thread, other threads:[~2017-06-07 17:21 UTC | newest]
Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-29 8:45 [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 01/14] char-win: simplify win_chr_read() Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 02/14] char-win: remove WinChardev.len Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 03/14] char-win: rename win_chr_init/poll win_chr_serial_init/poll Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 04/14] char-win: rename hcom->file Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 05/14] char-win: close file handle except with console Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 06/14] Remove/replace sysemu/char.h inclusion Marc-André Lureau
2017-05-29 20:57 ` Philippe Mathieu-Daudé
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 07/14] chardev: move headers to include/chardev Marc-André Lureau
2017-05-29 21:02 ` Philippe Mathieu-Daudé
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 08/14] chardev: serial & parallel declaration to own headers Marc-André Lureau
2017-05-29 21:03 ` Philippe Mathieu-Daudé
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 09/14] be-hci: use backend functions Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 10/14] char: generalize qemu_chr_write_all() Marc-André Lureau
2017-05-29 21:09 ` Philippe Mathieu-Daudé
2017-05-30 5:59 ` Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 11/14] char: move CharBackend handling in char-fe unit Marc-André Lureau
2017-05-29 21:25 ` Philippe Mathieu-Daudé
2017-06-07 16:41 ` Anthony PERARD
2017-06-07 16:41 ` Anthony PERARD
2017-06-07 17:20 ` Marc-André Lureau
2017-06-07 17:20 ` Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 12/14] char: rename functions that are not part of fe Marc-André Lureau
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 13/14] char: make chr_fe_deinit() optionaly delete backend Marc-André Lureau
2017-05-31 13:09 ` Marc-André Lureau
2017-06-02 4:52 ` Philippe Mathieu-Daudé
2017-05-29 8:45 ` [Qemu-devel] [PATCH v2 14/14] char: move char devices to chardev/ Marc-André Lureau
2017-05-29 21:31 ` Philippe Mathieu-Daudé
2017-05-30 15:18 ` Eric Blake
2017-05-31 14:01 ` Philippe Mathieu-Daudé
2017-05-29 9:23 ` [Qemu-devel] [PATCH v2 00/14] chardev: misc clean-ups no-reply
2017-05-30 12:09 ` [Qemu-devel] [PATCH] char: cast ARRAY_SIZE() as signed to silent warning on empty array Philippe Mathieu-Daudé
2017-05-30 12:38 ` Marc-André 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.