From 9c7f6b094950f7772068b957c795d76463cdeba0 Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Thu, 21 Jan 2010 15:43:26 +0530 Subject: [PATCH 9/9] virtio-console: Rename virtio-serial.c back to virtio-console.c This file was renamed to ease the reviews of the recent changes that went in. Now that the changes are done, rename the file back to its original name. Signed-off-by: Amit Shah Signed-off-by: Anthony Liguori --- Makefile.hw | 2 +- hw/virtio-console.c | 146 +++++++++++++++++++++++++++++++++++++++++++++++++++ hw/virtio-serial.c | 146 --------------------------------------------------- 3 files changed, 147 insertions(+), 147 deletions(-) create mode 100644 hw/virtio-console.c delete mode 100644 hw/virtio-serial.c diff --git a/Makefile.hw b/Makefile.hw index de8a0c5..43ca541 100644 --- a/Makefile.hw +++ b/Makefile.hw @@ -13,7 +13,7 @@ QEMU_CFLAGS+=-I.. -I$(SRC_PATH)/fpu obj-y = obj-y += loader.o -obj-y += virtio.o virtio-serial.o +obj-y += virtio.o virtio-console.o obj-y += fw_cfg.o obj-y += watchdog.o obj-$(CONFIG_ECC) += ecc.o diff --git a/hw/virtio-console.c b/hw/virtio-console.c new file mode 100644 index 0000000..bd44ec6 --- /dev/null +++ b/hw/virtio-console.c @@ -0,0 +1,146 @@ +/* + * Virtio Console and Generic Serial Port Devices + * + * Copyright Red Hat, Inc. 2009 + * + * Authors: + * Amit Shah + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + */ + +#include "qemu-char.h" +#include "virtio-serial.h" + +typedef struct VirtConsole { + VirtIOSerialPort port; + CharDriverState *chr; +} VirtConsole; + + +/* Callback function that's called when the guest sends us data */ +static size_t flush_buf(VirtIOSerialPort *port, const uint8_t *buf, size_t len) +{ + VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); + ssize_t ret; + + ret = qemu_chr_write(vcon->chr, buf, len); + + return ret < 0 ? 0 : ret; +} + +/* Readiness of the guest to accept data on a port */ +static int chr_can_read(void *opaque) +{ + VirtConsole *vcon = opaque; + + return virtio_serial_guest_ready(&vcon->port); +} + +/* Send data from a char device over to the guest */ +static void chr_read(void *opaque, const uint8_t *buf, int size) +{ + VirtConsole *vcon = opaque; + + virtio_serial_write(&vcon->port, buf, size); +} + +static void chr_event(void *opaque, int event) +{ + VirtConsole *vcon = opaque; + + switch (event) { + case CHR_EVENT_OPENED: { + virtio_serial_open(&vcon->port); + break; + } + case CHR_EVENT_CLOSED: + virtio_serial_close(&vcon->port); + break; + } +} + +/* Virtio Console Ports */ +static int virtconsole_initfn(VirtIOSerialDevice *dev) +{ + VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev); + VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); + + port->info = dev->info; + + port->is_console = true; + + if (vcon->chr) { + qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event, + vcon); + port->info->have_data = flush_buf; + } + return 0; +} + +static int virtconsole_exitfn(VirtIOSerialDevice *dev) +{ + VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev); + VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); + + if (vcon->chr) { + port->info->have_data = NULL; + qemu_chr_close(vcon->chr); + } + + return 0; +} + +static VirtIOSerialPortInfo virtconsole_info = { + .qdev.name = "virtconsole", + .qdev.size = sizeof(VirtConsole), + .init = virtconsole_initfn, + .exit = virtconsole_exitfn, + .qdev.props = (Property[]) { + DEFINE_PROP_UINT8("is_console", VirtConsole, port.is_console, 1), + DEFINE_PROP_CHR("chardev", VirtConsole, chr), + DEFINE_PROP_STRING("name", VirtConsole, port.name), + DEFINE_PROP_END_OF_LIST(), + }, +}; + +static void virtconsole_register(void) +{ + virtio_serial_port_qdev_register(&virtconsole_info); +} +device_init(virtconsole_register) + +/* Generic Virtio Serial Ports */ +static int virtserialport_initfn(VirtIOSerialDevice *dev) +{ + VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev); + VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); + + port->info = dev->info; + + if (vcon->chr) { + qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event, + vcon); + port->info->have_data = flush_buf; + } + return 0; +} + +static VirtIOSerialPortInfo virtserialport_info = { + .qdev.name = "virtserialport", + .qdev.size = sizeof(VirtConsole), + .init = virtserialport_initfn, + .exit = virtconsole_exitfn, + .qdev.props = (Property[]) { + DEFINE_PROP_CHR("chardev", VirtConsole, chr), + DEFINE_PROP_STRING("name", VirtConsole, port.name), + DEFINE_PROP_END_OF_LIST(), + }, +}; + +static void virtserialport_register(void) +{ + virtio_serial_port_qdev_register(&virtserialport_info); +} +device_init(virtserialport_register) diff --git a/hw/virtio-serial.c b/hw/virtio-serial.c deleted file mode 100644 index bd44ec6..0000000 --- a/hw/virtio-serial.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Virtio Console and Generic Serial Port Devices - * - * Copyright Red Hat, Inc. 2009 - * - * Authors: - * Amit Shah - * - * This work is licensed under the terms of the GNU GPL, version 2. See - * the COPYING file in the top-level directory. - */ - -#include "qemu-char.h" -#include "virtio-serial.h" - -typedef struct VirtConsole { - VirtIOSerialPort port; - CharDriverState *chr; -} VirtConsole; - - -/* Callback function that's called when the guest sends us data */ -static size_t flush_buf(VirtIOSerialPort *port, const uint8_t *buf, size_t len) -{ - VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); - ssize_t ret; - - ret = qemu_chr_write(vcon->chr, buf, len); - - return ret < 0 ? 0 : ret; -} - -/* Readiness of the guest to accept data on a port */ -static int chr_can_read(void *opaque) -{ - VirtConsole *vcon = opaque; - - return virtio_serial_guest_ready(&vcon->port); -} - -/* Send data from a char device over to the guest */ -static void chr_read(void *opaque, const uint8_t *buf, int size) -{ - VirtConsole *vcon = opaque; - - virtio_serial_write(&vcon->port, buf, size); -} - -static void chr_event(void *opaque, int event) -{ - VirtConsole *vcon = opaque; - - switch (event) { - case CHR_EVENT_OPENED: { - virtio_serial_open(&vcon->port); - break; - } - case CHR_EVENT_CLOSED: - virtio_serial_close(&vcon->port); - break; - } -} - -/* Virtio Console Ports */ -static int virtconsole_initfn(VirtIOSerialDevice *dev) -{ - VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev); - VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); - - port->info = dev->info; - - port->is_console = true; - - if (vcon->chr) { - qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event, - vcon); - port->info->have_data = flush_buf; - } - return 0; -} - -static int virtconsole_exitfn(VirtIOSerialDevice *dev) -{ - VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev); - VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); - - if (vcon->chr) { - port->info->have_data = NULL; - qemu_chr_close(vcon->chr); - } - - return 0; -} - -static VirtIOSerialPortInfo virtconsole_info = { - .qdev.name = "virtconsole", - .qdev.size = sizeof(VirtConsole), - .init = virtconsole_initfn, - .exit = virtconsole_exitfn, - .qdev.props = (Property[]) { - DEFINE_PROP_UINT8("is_console", VirtConsole, port.is_console, 1), - DEFINE_PROP_CHR("chardev", VirtConsole, chr), - DEFINE_PROP_STRING("name", VirtConsole, port.name), - DEFINE_PROP_END_OF_LIST(), - }, -}; - -static void virtconsole_register(void) -{ - virtio_serial_port_qdev_register(&virtconsole_info); -} -device_init(virtconsole_register) - -/* Generic Virtio Serial Ports */ -static int virtserialport_initfn(VirtIOSerialDevice *dev) -{ - VirtIOSerialPort *port = DO_UPCAST(VirtIOSerialPort, dev, &dev->qdev); - VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); - - port->info = dev->info; - - if (vcon->chr) { - qemu_chr_add_handlers(vcon->chr, chr_can_read, chr_read, chr_event, - vcon); - port->info->have_data = flush_buf; - } - return 0; -} - -static VirtIOSerialPortInfo virtserialport_info = { - .qdev.name = "virtserialport", - .qdev.size = sizeof(VirtConsole), - .init = virtserialport_initfn, - .exit = virtconsole_exitfn, - .qdev.props = (Property[]) { - DEFINE_PROP_CHR("chardev", VirtConsole, chr), - DEFINE_PROP_STRING("name", VirtConsole, port.name), - DEFINE_PROP_END_OF_LIST(), - }, -}; - -static void virtserialport_register(void) -{ - virtio_serial_port_qdev_register(&virtserialport_info); -} -device_init(virtserialport_register) -- 1.6.2.5