Allow -serial chardev:<name>
Lets put -chardev into use now. With this patch applied chardev:name is accepted as chardev specification everywhere, i.e. now you can: -chardev stdio,id=ttyS0 -serial chardev:ttyS0 which does the same as '-serial stdio". Muxing can be done this way: -chardev stdio,id=mux,mux=on -serial chardev:mux -monitor chardev:mux You can mux more than two streams. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
7e1b35b44c
commit
c845f40149
16
qemu-char.c
16
qemu-char.c
@ -2416,6 +2416,10 @@ CharDriverState *qemu_chr_open(const char *label, const char *filename, void (*i
|
|||||||
CharDriverState *chr;
|
CharDriverState *chr;
|
||||||
QemuOpts *opts;
|
QemuOpts *opts;
|
||||||
|
|
||||||
|
if (strstart(filename, "chardev:", &p)) {
|
||||||
|
return qemu_chr_find(p);
|
||||||
|
}
|
||||||
|
|
||||||
opts = qemu_chr_parse_compat(label, filename);
|
opts = qemu_chr_parse_compat(label, filename);
|
||||||
if (!opts)
|
if (!opts)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -2445,3 +2449,15 @@ void qemu_chr_info(Monitor *mon)
|
|||||||
monitor_printf(mon, "%s: filename=%s\n", chr->label, chr->filename);
|
monitor_printf(mon, "%s: filename=%s\n", chr->label, chr->filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CharDriverState *qemu_chr_find(const char *name)
|
||||||
|
{
|
||||||
|
CharDriverState *chr;
|
||||||
|
|
||||||
|
TAILQ_FOREACH(chr, &chardevs, next) {
|
||||||
|
if (strcmp(chr->label, name) != 0)
|
||||||
|
continue;
|
||||||
|
return chr;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
@ -90,6 +90,7 @@ void qemu_chr_read(CharDriverState *s, uint8_t *buf, int len);
|
|||||||
int qemu_chr_get_msgfd(CharDriverState *s);
|
int qemu_chr_get_msgfd(CharDriverState *s);
|
||||||
void qemu_chr_accept_input(CharDriverState *s);
|
void qemu_chr_accept_input(CharDriverState *s);
|
||||||
void qemu_chr_info(Monitor *mon);
|
void qemu_chr_info(Monitor *mon);
|
||||||
|
CharDriverState *qemu_chr_find(const char *name);
|
||||||
|
|
||||||
extern int term_escape_char;
|
extern int term_escape_char;
|
||||||
|
|
||||||
|
@ -130,6 +130,9 @@ QemuOptsList qemu_chardev_opts = {
|
|||||||
},{
|
},{
|
||||||
.name = "rows",
|
.name = "rows",
|
||||||
.type = QEMU_OPT_NUMBER,
|
.type = QEMU_OPT_NUMBER,
|
||||||
|
},{
|
||||||
|
.name = "mux",
|
||||||
|
.type = QEMU_OPT_BOOL,
|
||||||
},
|
},
|
||||||
{ /* end if list */ }
|
{ /* end if list */ }
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user