Commit f114784f69ec3b9af342148025de14dbd1b429a5
Committed by
Anthony Liguori
1 parent
ef74679a
monitor: Add port write command
Useful for testing hardware emulations or manipulating its state to stress guest drivers. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
2 changed files
with
24 additions
and
0 deletions
monitor.c
| @@ -1185,6 +1185,25 @@ static void do_ioport_read(Monitor *mon, int count, int format, int size, | @@ -1185,6 +1185,25 @@ static void do_ioport_read(Monitor *mon, int count, int format, int size, | ||
| 1185 | suffix, addr, size * 2, val); | 1185 | suffix, addr, size * 2, val); |
| 1186 | } | 1186 | } |
| 1187 | 1187 | ||
| 1188 | +static void do_ioport_write(Monitor *mon, int count, int format, int size, | ||
| 1189 | + int addr, int val) | ||
| 1190 | +{ | ||
| 1191 | + addr &= IOPORTS_MASK; | ||
| 1192 | + | ||
| 1193 | + switch (size) { | ||
| 1194 | + default: | ||
| 1195 | + case 1: | ||
| 1196 | + cpu_outb(NULL, addr, val); | ||
| 1197 | + break; | ||
| 1198 | + case 2: | ||
| 1199 | + cpu_outw(NULL, addr, val); | ||
| 1200 | + break; | ||
| 1201 | + case 4: | ||
| 1202 | + cpu_outl(NULL, addr, val); | ||
| 1203 | + break; | ||
| 1204 | + } | ||
| 1205 | +} | ||
| 1206 | + | ||
| 1188 | static void do_boot_set(Monitor *mon, const char *bootdevice) | 1207 | static void do_boot_set(Monitor *mon, const char *bootdevice) |
| 1189 | { | 1208 | { |
| 1190 | int res; | 1209 | int res; |
qemu-monitor.hx
| @@ -306,6 +306,11 @@ STEXI | @@ -306,6 +306,11 @@ STEXI | ||
| 306 | Read I/O port. | 306 | Read I/O port. |
| 307 | ETEXI | 307 | ETEXI |
| 308 | 308 | ||
| 309 | + { "o", "/ii", do_ioport_write, | ||
| 310 | + "/fmt addr value", "I/O port write" }, | ||
| 311 | +STEXI | ||
| 312 | +Write to I/O port. | ||
| 313 | +ETEXI | ||
| 309 | 314 | ||
| 310 | { "sendkey", "si?", do_sendkey, | 315 | { "sendkey", "si?", do_sendkey, |
| 311 | "keys [hold_ms]", "send keys to the VM (e.g. 'sendkey ctrl-alt-f1', default hold time=100 ms)" }, | 316 | "keys [hold_ms]", "send keys to the VM (e.g. 'sendkey ctrl-alt-f1', default hold time=100 ms)" }, |