[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 for-2.10 6/8] s390x/3270: Add the TCP socket even
From: |
Cornelia Huck |
Subject: |
[Qemu-devel] [PATCH v2 for-2.10 6/8] s390x/3270: Add the TCP socket events handler for 3270 |
Date: |
Fri, 7 Apr 2017 13:18:49 +0200 |
From: Jing Liu <address@hidden>
This introduces a chr_event handler to handle the 3270 connection
and disconnection events.
Signed-off-by: Jing Liu <address@hidden>
Reviewed-by: QingFeng Hao <address@hidden>
Reviewed-by: Dong Jia Shi <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
hw/char/terminal3270.c | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c
index 55eed5622a..450608e3c3 100644
--- a/hw/char/terminal3270.c
+++ b/hw/char/terminal3270.c
@@ -117,6 +117,32 @@ static void terminal_read(void *opaque, const uint8_t
*buf, int size)
}
}
+static void chr_event(void *opaque, int event)
+{
+ Terminal3270 *t = opaque;
+ CcwDevice *ccw_dev = CCW_DEVICE(t);
+ SubchDev *sch = ccw_dev->sch;
+
+ /* Ensure the initial status correct, always reset them. */
+ t->in_len = 0;
+ t->out_len = 0;
+ t->handshake_done = false;
+
+ switch (event) {
+ case CHR_EVENT_OPENED:
+ /*
+ * 3270 does handshake firstly by the negotiate options in
+ * char-socket.c. Once qemu receives the terminal-type of the
+ * client, mark handshake done and trigger everything rolling again.
+ */
+ break;
+ case CHR_EVENT_CLOSED:
+ sch->curr_status.scsw.dstat = SCSW_DSTAT_DEVICE_END;
+ css_conditional_io_interrupt(sch);
+ break;
+ }
+}
+
static void terminal_init(EmulatedCcw3270Device *dev, Error **errp)
{
Terminal3270 *t = TERMINAL_3270(dev);
@@ -128,7 +154,7 @@ static void terminal_init(EmulatedCcw3270Device *dev, Error
**errp)
}
terminal_available = true;
qemu_chr_fe_set_handlers(&t->chr, terminal_can_read,
- terminal_read, NULL, t, NULL, true);
+ terminal_read, chr_event, t, NULL, true);
}
static int read_payload_3270(EmulatedCcw3270Device *dev, uint32_t cda,
--
2.11.0
- [Qemu-devel] [PATCH v2 for-2.10 0/8] s390x: Basic support for 3270 devices, Cornelia Huck, 2017/04/07
- [Qemu-devel] [PATCH v2 for-2.10 1/8] chardev: Basic support for TN3270, Cornelia Huck, 2017/04/07
- [Qemu-devel] [PATCH v2 for-2.10 4/8] s390x/3270: Add emulated terminal3270 device, Cornelia Huck, 2017/04/07
- [Qemu-devel] [PATCH v2 for-2.10 3/8] s390x/3270: Add abstract emulated ccw-attached 3270 device, Cornelia Huck, 2017/04/07
- [Qemu-devel] [PATCH v2 for-2.10 5/8] s390x/3270: 3270 data stream handling, Cornelia Huck, 2017/04/07
- [Qemu-devel] [PATCH v2 for-2.10 6/8] s390x/3270: Add the TCP socket events handler for 3270,
Cornelia Huck <=
- [Qemu-devel] [PATCH v2 for-2.10 7/8] s390x/3270: Detect for continued presence of a 3270 client, Cornelia Huck, 2017/04/07
- [Qemu-devel] [PATCH v2 for-2.10 8/8] s390x/3270: Mark non-migratable and enable the device, Cornelia Huck, 2017/04/07
- [Qemu-devel] [PATCH v2 for-2.10 2/8] s390x/css: Add an algorithm to find a free chpid, Cornelia Huck, 2017/04/07