mirror of
https://github.com/qemu/qemu.git
synced 2024-11-23 19:03:38 +08:00
qemu-char: introduce qemu_chr_alloc
The next patch will modify this function to initialize state that is common to all backends. Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
parent
751751732c
commit
db39fcf1f6
@ -574,7 +574,7 @@ CharDriverState *chr_baum_init(void)
|
||||
int tty;
|
||||
|
||||
baum = g_malloc0(sizeof(BaumDriverState));
|
||||
baum->chr = chr = g_malloc0(sizeof(CharDriverState));
|
||||
baum->chr = chr = qemu_chr_alloc();
|
||||
|
||||
chr->opaque = baum;
|
||||
chr->chr_write = baum_write;
|
||||
|
@ -67,7 +67,7 @@ CharDriverState *qemu_chr_open_msmouse(void)
|
||||
{
|
||||
CharDriverState *chr;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
chr->chr_write = msmouse_chr_write;
|
||||
chr->chr_close = msmouse_chr_close;
|
||||
chr->explicit_be_open = true;
|
||||
|
@ -88,6 +88,15 @@ struct CharDriverState {
|
||||
QTAILQ_ENTRY(CharDriverState) next;
|
||||
};
|
||||
|
||||
/**
|
||||
* @qemu_chr_alloc:
|
||||
*
|
||||
* Allocate and initialize a new CharDriverState.
|
||||
*
|
||||
* Returns: a newly allocated CharDriverState.
|
||||
*/
|
||||
CharDriverState *qemu_chr_alloc(void);
|
||||
|
||||
/**
|
||||
* @qemu_chr_new_from_opts:
|
||||
*
|
||||
|
32
qemu-char.c
32
qemu-char.c
@ -91,6 +91,12 @@
|
||||
static QTAILQ_HEAD(CharDriverStateHead, CharDriverState) chardevs =
|
||||
QTAILQ_HEAD_INITIALIZER(chardevs);
|
||||
|
||||
CharDriverState *qemu_chr_alloc(void)
|
||||
{
|
||||
CharDriverState *chr = g_malloc0(sizeof(CharDriverState));
|
||||
return chr;
|
||||
}
|
||||
|
||||
void qemu_chr_be_event(CharDriverState *s, int event)
|
||||
{
|
||||
/* Keep track if the char device is open */
|
||||
@ -282,7 +288,7 @@ static CharDriverState *qemu_chr_open_null(void)
|
||||
{
|
||||
CharDriverState *chr;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
chr->chr_write = null_chr_write;
|
||||
chr->explicit_be_open = true;
|
||||
return chr;
|
||||
@ -570,7 +576,7 @@ static CharDriverState *qemu_chr_open_mux(CharDriverState *drv)
|
||||
CharDriverState *chr;
|
||||
MuxDriver *d;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
d = g_malloc0(sizeof(MuxDriver));
|
||||
|
||||
chr->opaque = d;
|
||||
@ -945,7 +951,7 @@ static CharDriverState *qemu_chr_open_fd(int fd_in, int fd_out)
|
||||
CharDriverState *chr;
|
||||
FDCharDriver *s;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
s = g_malloc0(sizeof(FDCharDriver));
|
||||
s->fd_in = io_channel_from_fd(fd_in);
|
||||
s->fd_out = io_channel_from_fd(fd_out);
|
||||
@ -1222,7 +1228,7 @@ static CharDriverState *qemu_chr_open_pty(const char *id,
|
||||
|
||||
close(slave_fd);
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
|
||||
chr->filename = g_strdup_printf("pty:%s", pty_name);
|
||||
ret->pty = g_strdup(pty_name);
|
||||
@ -1584,7 +1590,7 @@ static CharDriverState *qemu_chr_open_pp_fd(int fd)
|
||||
drv->fd = fd;
|
||||
drv->mode = IEEE1284_MODE_COMPAT;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
chr->chr_write = null_chr_write;
|
||||
chr->chr_ioctl = pp_ioctl;
|
||||
chr->chr_close = pp_close;
|
||||
@ -1639,7 +1645,7 @@ static CharDriverState *qemu_chr_open_pp_fd(int fd)
|
||||
{
|
||||
CharDriverState *chr;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
chr->opaque = (void *)(intptr_t)fd;
|
||||
chr->chr_write = null_chr_write;
|
||||
chr->chr_ioctl = pp_ioctl;
|
||||
@ -1863,7 +1869,7 @@ static CharDriverState *qemu_chr_open_win_path(const char *filename)
|
||||
CharDriverState *chr;
|
||||
WinCharState *s;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
s = g_malloc0(sizeof(WinCharState));
|
||||
chr->opaque = s;
|
||||
chr->chr_write = win_chr_write;
|
||||
@ -1962,7 +1968,7 @@ static CharDriverState *qemu_chr_open_pipe(ChardevHostdev *opts)
|
||||
CharDriverState *chr;
|
||||
WinCharState *s;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
s = g_malloc0(sizeof(WinCharState));
|
||||
chr->opaque = s;
|
||||
chr->chr_write = win_chr_write;
|
||||
@ -1981,7 +1987,7 @@ static CharDriverState *qemu_chr_open_win_file(HANDLE fd_out)
|
||||
CharDriverState *chr;
|
||||
WinCharState *s;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
s = g_malloc0(sizeof(WinCharState));
|
||||
s->hcom = fd_out;
|
||||
chr->opaque = s;
|
||||
@ -2137,7 +2143,7 @@ static CharDriverState *qemu_chr_open_stdio(ChardevStdio *opts)
|
||||
DWORD dwMode;
|
||||
int is_console = 0;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
stdio = g_malloc0(sizeof(WinStdioCharState));
|
||||
|
||||
stdio->hStdIn = GetStdHandle(STD_INPUT_HANDLE);
|
||||
@ -2299,7 +2305,7 @@ static CharDriverState *qemu_chr_open_udp_fd(int fd)
|
||||
CharDriverState *chr = NULL;
|
||||
NetCharDriver *s = NULL;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
s = g_malloc0(sizeof(NetCharDriver));
|
||||
|
||||
s->fd = fd;
|
||||
@ -2850,7 +2856,7 @@ static CharDriverState *qemu_chr_open_socket_fd(int fd, bool do_nodelay,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
s = g_malloc0(sizeof(TCPCharDriver));
|
||||
|
||||
s->connected = 0;
|
||||
@ -3040,7 +3046,7 @@ static CharDriverState *qemu_chr_open_ringbuf(ChardevRingbuf *opts,
|
||||
CharDriverState *chr;
|
||||
RingBufCharDriver *d;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
d = g_malloc(sizeof(*d));
|
||||
|
||||
d->size = opts->has_size ? opts->size : 65536;
|
||||
|
@ -268,7 +268,7 @@ static CharDriverState *chr_open(const char *subtype,
|
||||
CharDriverState *chr;
|
||||
SpiceCharDriver *s;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
s = g_malloc0(sizeof(SpiceCharDriver));
|
||||
s->chr = chr;
|
||||
s->active = false;
|
||||
|
@ -1821,7 +1821,7 @@ static CharDriverState *text_console_init(ChardevVC *vc)
|
||||
unsigned width = 0;
|
||||
unsigned height = 0;
|
||||
|
||||
chr = g_malloc0(sizeof(CharDriverState));
|
||||
chr = qemu_chr_alloc();
|
||||
|
||||
if (vc->has_width) {
|
||||
width = vc->width;
|
||||
|
Loading…
Reference in New Issue
Block a user