[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] chardev: enable distinct input for -chardev file
From: |
Alexander Bulekov |
Subject: |
[PATCH] chardev: enable distinct input for -chardev file |
Date: |
Fri, 1 May 2020 13:25:59 -0400 |
char-file already supports distinct paths for input/output but it was
only possible to specify a distinct input through QMP. With this change,
we can also specify a distinct input with the -chardev file argument:
qemu -chardev file,id=char1,path=/out/file,in=/in/file
Signed-off-by: Alexander Bulekov <address@hidden>
---
chardev/char-file.c | 5 +++++
chardev/char.c | 3 +++
qemu-options.hx | 7 +++++--
3 files changed, 13 insertions(+), 2 deletions(-)
The naming here is awkward, with path= really turning into "out" when
in= is specified, though i'm not sure about what is a good solution.
diff --git a/chardev/char-file.c b/chardev/char-file.c
index 2fd80707e5..cc742cc234 100644
--- a/chardev/char-file.c
+++ b/chardev/char-file.c
@@ -100,6 +100,7 @@ static void qemu_chr_parse_file_out(QemuOpts *opts,
ChardevBackend *backend,
Error **errp)
{
const char *path = qemu_opt_get(opts, "path");
+ const char *in = qemu_opt_get(opts, "in");
ChardevFile *file;
backend->type = CHARDEV_BACKEND_KIND_FILE;
@@ -110,6 +111,10 @@ static void qemu_chr_parse_file_out(QemuOpts *opts,
ChardevBackend *backend,
file = backend->u.file.data = g_new0(ChardevFile, 1);
qemu_chr_parse_common(opts, qapi_ChardevFile_base(file));
file->out = g_strdup(path);
+ if (in) {
+ file->has_in = true;
+ file->in = g_strdup(qemu_opt_get(opts, "in"));
+ }
file->has_append = true;
file->append = qemu_opt_get_bool(opts, "append", false);
diff --git a/chardev/char.c b/chardev/char.c
index e77564060d..797574f205 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -849,6 +849,9 @@ QemuOptsList qemu_chardev_opts = {
},{
.name = "path",
.type = QEMU_OPT_STRING,
+ },{
+ .name = "in",
+ .type = QEMU_OPT_STRING,
},{
.name = "host",
.type = QEMU_OPT_STRING,
diff --git a/qemu-options.hx b/qemu-options.hx
index 292d4e7c0c..bbb091872f 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2938,7 +2938,7 @@ DEF("chardev", HAS_ARG, QEMU_OPTION_chardev,
"-chardev
vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]\n"
" [,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
"-chardev ringbuf,id=id[,size=size][,logfile=PATH][,logappend=on|off]\n"
- "-chardev
file,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+ "-chardev
file,id=id,path=path[,in=PATH][,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
"-chardev
pipe,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
#ifdef _WIN32
"-chardev console,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
@@ -3137,13 +3137,16 @@ The available backends are:
Create a ring buffer with fixed size ``size``. size must be a power
of two and defaults to ``64K``.
-``-chardev file,id=id,path=path``
+``-chardev file,id=id,path=path,in=in``
Log all traffic received from the guest to a file.
``path`` specifies the path of the file to be opened. This file will
be created if it does not already exist, and overwritten if it does.
``path`` is required.
+ ``in`` specifies a separate file as the input to the chardev. If
+ ``in`` is omitted, ``path`` is used for both input and output
+
``-chardev pipe,id=id,path=path``
Create a two-way connection to the guest. The behaviour differs
slightly between Windows hosts and other hosts:
--
2.26.2
- [PATCH] chardev: enable distinct input for -chardev file,
Alexander Bulekov <=
- Re: [PATCH] chardev: enable distinct input for -chardev file, Marc-André Lureau, 2020/05/01
- Re: [PATCH] chardev: enable distinct input for -chardev file, no-reply, 2020/05/01
- Re: [PATCH] chardev: enable distinct input for -chardev file, Daniel P . Berrangé, 2020/05/04
- Re: [PATCH] chardev: enable distinct input for -chardev file, Stefan Hajnoczi, 2020/05/04
- Re: [PATCH] chardev: enable distinct input for -chardev file, Alexander Bulekov, 2020/05/04