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 | 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 | 1207 | static void do_boot_set(Monitor *mon, const char *bootdevice) |
| 1189 | 1208 | { |
| 1190 | 1209 | int res; | ... | ... |
qemu-monitor.hx
| ... | ... | @@ -306,6 +306,11 @@ STEXI |
| 306 | 306 | Read I/O port. |
| 307 | 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 | 315 | { "sendkey", "si?", do_sendkey, |
| 311 | 316 | "keys [hold_ms]", "send keys to the VM (e.g. 'sendkey ctrl-alt-f1', default hold time=100 ms)" }, | ... | ... |