From f114784f69ec3b9af342148025de14dbd1b429a5 Mon Sep 17 00:00:00 2001 From: Jan Kiszka Date: Tue, 14 Jul 2009 10:20:11 +0200 Subject: [PATCH] monitor: Add port write command Useful for testing hardware emulations or manipulating its state to stress guest drivers. Signed-off-by: Jan Kiszka Signed-off-by: Anthony Liguori --- monitor.c | 19 +++++++++++++++++++ qemu-monitor.hx | 5 +++++ 2 files changed, 24 insertions(+) diff --git a/monitor.c b/monitor.c index c3ef099bda..e38c86e1a3 100644 --- a/monitor.c +++ b/monitor.c @@ -1185,6 +1185,25 @@ static void do_ioport_read(Monitor *mon, int count, int format, int size, suffix, addr, size * 2, val); } +static void do_ioport_write(Monitor *mon, int count, int format, int size, + int addr, int val) +{ + addr &= IOPORTS_MASK; + + switch (size) { + default: + case 1: + cpu_outb(NULL, addr, val); + break; + case 2: + cpu_outw(NULL, addr, val); + break; + case 4: + cpu_outl(NULL, addr, val); + break; + } +} + static void do_boot_set(Monitor *mon, const char *bootdevice) { int res; diff --git a/qemu-monitor.hx b/qemu-monitor.hx index 62edbcde75..70e24758cc 100644 --- a/qemu-monitor.hx +++ b/qemu-monitor.hx @@ -306,6 +306,11 @@ STEXI Read I/O port. ETEXI + { "o", "/ii", do_ioport_write, + "/fmt addr value", "I/O port write" }, +STEXI +Write to I/O port. +ETEXI { "sendkey", "si?", do_sendkey, "keys [hold_ms]", "send keys to the VM (e.g. 'sendkey ctrl-alt-f1', default hold time=100 ms)" },