342 lines
9.2 KiB
Diff
342 lines
9.2 KiB
Diff
|
From 9c7f6b094950f7772068b957c795d76463cdeba0 Mon Sep 17 00:00:00 2001
|
||
|
From: Amit Shah <amit.shah@redhat.com>
|
||
|
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 <amit.shah@redhat.com>
|
||
|
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
||
|
---
|
||
|
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 <amit.shah@redhat.com>
|
||
|
+ *
|
||
|
+ * 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 <amit.shah@redhat.com>
|
||
|
- *
|
||
|
- * 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
|
||
|
|