master
h 225 lines 10.9 KB
Raw
1 /*
2 * Human Monitor Interface
3 *
4 * Copyright IBM, Corp. 2011
5 *
6 * Authors:
7 * Anthony Liguori <aliguori@us.ibm.com>
8 *
9 * This work is licensed under the terms of the GNU GPL, version 2. See
10 * the COPYING file in the top-level directory.
11 *
12 */
13
14 #ifndef HMP_H
15 #define HMP_H
16
17 #include "qemu/readline.h"
18 #include "qapi/qapi-types-common.h"
19 #include "monitor/monitor.h"
20
21 #define TYPE_MONITOR_HMP "monitor-hmp"
22 OBJECT_DECLARE_TYPE(MonitorHMP, MonitorHMPClass, MONITOR_HMP);
23
24 MonitorHMP *monitor_cur_hmp(void);
25
26 #ifdef CONFIG_HMP
27
28 #define HMP_STUB(cmd) \
29 void hmp_##cmd(MonitorHMP *hmp, const QDict *qdict) \
30 { \
31 g_assert_not_reached(); \
32 }
33
34 struct MonitorDef {
35 const char *name;
36 int offset;
37 int64_t (*get_value)(MonitorHMP *hmp, const MonitorDef *md, int offset);
38 };
39
40 void monitor_new_hmp(const char *id, const char *chardev_id,
41 bool use_readline, Error **errp);
42
43 int monitor_hmp_vprintf(MonitorHMP *mon, const char *fmt, va_list ap)
44 G_GNUC_PRINTF(2, 0);
45 int monitor_hmp_printf(MonitorHMP *mon, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
46 void monitor_hmp_printc(MonitorHMP *mon, int ch);
47
48 void monitor_hmp_read_command(MonitorHMP *hmp, int show_prompt);
49 int monitor_hmp_read_password(MonitorHMP *hmp, ReadLineFunc *readline_func,
50 void *opaque);
51
52 void monitor_register_hmp(const char *name, bool info,
53 void (*cmd)(MonitorHMP *mon, const QDict *qdict));
54 void monitor_register_hmp_info_hrt(const char *name,
55 HumanReadableText *(*handler)(Error **errp));
56
57
58 CPUArchState *monitor_hmp_get_cpu_env(MonitorHMP *hmp);
59 CPUState *monitor_hmp_get_cpu(MonitorHMP *hmp);
60 int monitor_hmp_get_cpu_index(MonitorHMP *hmp);
61
62 bool hmp_handle_error(MonitorHMP *hmp, Error *err);
63 void hmp_help_cmd(MonitorHMP *hmp, const char *name);
64 strList *hmp_split_at_comma(const char *str);
65
66 void hmp_info_name(MonitorHMP *hmp, const QDict *qdict);
67 void hmp_info_version(MonitorHMP *hmp, const QDict *qdict);
68 void hmp_info_kvm(MonitorHMP *hmp, const QDict *qdict);
69 void hmp_info_accelerators(MonitorHMP *hmp, const QDict *qdict);
70 void hmp_info_status(MonitorHMP *hmp, const QDict *qdict);
71 void hmp_info_uuid(MonitorHMP *hmp, const QDict *qdict);
72 void hmp_info_chardev(MonitorHMP *hmp, const QDict *qdict);
73 void hmp_info_mice(MonitorHMP *hmp, const QDict *qdict);
74 void hmp_info_migrate(MonitorHMP *hmp, const QDict *qdict);
75 void hmp_info_migrate_capabilities(MonitorHMP *hmp, const QDict *qdict);
76 void hmp_info_migrate_parameters(MonitorHMP *hmp, const QDict *qdict);
77 void hmp_info_cpus(MonitorHMP *hmp, const QDict *qdict);
78 void hmp_info_vnc(MonitorHMP *hmp, const QDict *qdict);
79 void hmp_info_spice(MonitorHMP *hmp, const QDict *qdict);
80 void hmp_info_balloon(MonitorHMP *hmp, const QDict *qdict);
81 void hmp_info_pci(MonitorHMP *hmp, const QDict *qdict);
82 void hmp_info_tpm(MonitorHMP *hmp, const QDict *qdict);
83 void hmp_info_iothreads(MonitorHMP *hmp, const QDict *qdict);
84 void hmp_quit(MonitorHMP *hmp, const QDict *qdict);
85 void hmp_stop(MonitorHMP *hmp, const QDict *qdict);
86 void hmp_sync_profile(MonitorHMP *hmp, const QDict *qdict);
87 void hmp_system_reset(MonitorHMP *hmp, const QDict *qdict);
88 void hmp_system_powerdown(MonitorHMP *hmp, const QDict *qdict);
89 void hmp_exit_preconfig(MonitorHMP *hmp, const QDict *qdict);
90 void hmp_announce_self(MonitorHMP *hmp, const QDict *qdict);
91 void hmp_cpu(MonitorHMP *hmp, const QDict *qdict);
92 void hmp_memsave(MonitorHMP *hmp, const QDict *qdict);
93 void hmp_pmemsave(MonitorHMP *hmp, const QDict *qdict);
94 void hmp_ringbuf_write(MonitorHMP *hmp, const QDict *qdict);
95 void hmp_ringbuf_read(MonitorHMP *hmp, const QDict *qdict);
96 void hmp_cont(MonitorHMP *hmp, const QDict *qdict);
97 void hmp_system_wakeup(MonitorHMP *hmp, const QDict *qdict);
98 void hmp_nmi(MonitorHMP *hmp, const QDict *qdict);
99 void hmp_info_network(MonitorHMP *hmp, const QDict *qdict);
100 void hmp_set_link(MonitorHMP *hmp, const QDict *qdict);
101 void hmp_balloon(MonitorHMP *hmp, const QDict *qdict);
102 void hmp_loadvm(MonitorHMP *hmp, const QDict *qdict);
103 void hmp_savevm(MonitorHMP *hmp, const QDict *qdict);
104 void hmp_delvm(MonitorHMP *hmp, const QDict *qdict);
105 void hmp_migrate_cancel(MonitorHMP *hmp, const QDict *qdict);
106 void hmp_migrate_continue(MonitorHMP *hmp, const QDict *qdict);
107 void hmp_migrate_incoming(MonitorHMP *hmp, const QDict *qdict);
108 void hmp_migrate_recover(MonitorHMP *hmp, const QDict *qdict);
109 void hmp_migrate_pause(MonitorHMP *hmp, const QDict *qdict);
110 void hmp_migrate_set_capability(MonitorHMP *hmp, const QDict *qdict);
111 void hmp_migrate_set_parameter(MonitorHMP *hmp, const QDict *qdict);
112 void hmp_client_migrate_info(MonitorHMP *hmp, const QDict *qdict);
113 void hmp_migrate_start_postcopy(MonitorHMP *hmp, const QDict *qdict);
114 void hmp_x_colo_lost_heartbeat(MonitorHMP *hmp, const QDict *qdict);
115 void hmp_set_password(MonitorHMP *hmp, const QDict *qdict);
116 void hmp_expire_password(MonitorHMP *hmp, const QDict *qdict);
117 void hmp_change(MonitorHMP *hmp, const QDict *qdict);
118 #ifdef CONFIG_VNC
119 void hmp_change_vnc(MonitorHMP *hmp, const char *device, const char *target,
120 const char *arg, const char *read_only, bool force,
121 Error **errp);
122 #endif
123 void hmp_change_medium(MonitorHMP *hmp, const char *device, const char *target,
124 const char *arg, const char *read_only, bool force,
125 Error **errp);
126 void hmp_migrate(MonitorHMP *hmp, const QDict *qdict);
127 void hmp_device_add(MonitorHMP *hmp, const QDict *qdict);
128 void hmp_device_del(MonitorHMP *hmp, const QDict *qdict);
129 void hmp_dump_guest_memory(MonitorHMP *hmp, const QDict *qdict);
130 void hmp_netdev_add(MonitorHMP *hmp, const QDict *qdict);
131 void hmp_netdev_del(MonitorHMP *hmp, const QDict *qdict);
132 void hmp_getfd(MonitorHMP *hmp, const QDict *qdict);
133 void hmp_closefd(MonitorHMP *hmp, const QDict *qdict);
134 void hmp_mouse_move(MonitorHMP *hmp, const QDict *qdict);
135 void hmp_mouse_button(MonitorHMP *hmp, const QDict *qdict);
136 void hmp_mouse_set(MonitorHMP *hmp, const QDict *qdict);
137 void hmp_sendkey(MonitorHMP *hmp, const QDict *qdict);
138 void coroutine_fn hmp_screendump(MonitorHMP *hmp, const QDict *qdict);
139 void hmp_chardev_add(MonitorHMP *hmp, const QDict *qdict);
140 void hmp_chardev_change(MonitorHMP *hmp, const QDict *qdict);
141 void hmp_chardev_remove(MonitorHMP *hmp, const QDict *qdict);
142 void hmp_chardev_send_break(MonitorHMP *hmp, const QDict *qdict);
143 void hmp_object_add(MonitorHMP *hmp, const QDict *qdict);
144 void hmp_object_del(MonitorHMP *hmp, const QDict *qdict);
145 void hmp_info_memdev(MonitorHMP *hmp, const QDict *qdict);
146 void hmp_info_memory_devices(MonitorHMP *hmp, const QDict *qdict);
147 void hmp_qom_list(MonitorHMP *hmp, const QDict *qdict);
148 void hmp_qom_get(MonitorHMP *hmp, const QDict *qdict);
149 void hmp_qom_set(MonitorHMP *hmp, const QDict *qdict);
150 void hmp_info_qom_tree(MonitorHMP *hmp, const QDict *dict);
151 void hmp_virtio_query(MonitorHMP *hmp, const QDict *qdict);
152 void hmp_virtio_status(MonitorHMP *hmp, const QDict *qdict);
153 void hmp_virtio_queue_status(MonitorHMP *hmp, const QDict *qdict);
154 void hmp_vhost_queue_status(MonitorHMP *hmp, const QDict *qdict);
155 void hmp_virtio_queue_element(MonitorHMP *hmp, const QDict *qdict);
156 void hmp_xen_event_inject(MonitorHMP *hmp, const QDict *qdict);
157 void hmp_xen_event_list(MonitorHMP *hmp, const QDict *qdict);
158 void hmp_rocker(MonitorHMP *hmp, const QDict *qdict);
159 void hmp_rocker_ports(MonitorHMP *hmp, const QDict *qdict);
160 void hmp_rocker_of_dpa_flows(MonitorHMP *hmp, const QDict *qdict);
161 void hmp_rocker_of_dpa_groups(MonitorHMP *hmp, const QDict *qdict);
162 void hmp_info_dump(MonitorHMP *hmp, const QDict *qdict);
163 void hmp_hotpluggable_cpus(MonitorHMP *hmp, const QDict *qdict);
164 void hmp_info_vm_generation_id(MonitorHMP *hmp, const QDict *qdict);
165 void hmp_info_memory_size_summary(MonitorHMP *hmp, const QDict *qdict);
166 void hmp_info_replay(MonitorHMP *hmp, const QDict *qdict);
167 void hmp_replay_break(MonitorHMP *hmp, const QDict *qdict);
168 void hmp_replay_delete_break(MonitorHMP *hmp, const QDict *qdict);
169 void hmp_replay_seek(MonitorHMP *hmp, const QDict *qdict);
170 void hmp_info_dirty_rate(MonitorHMP *hmp, const QDict *qdict);
171 void hmp_calc_dirty_rate(MonitorHMP *hmp, const QDict *qdict);
172 void hmp_set_vcpu_dirty_limit(MonitorHMP *hmp, const QDict *qdict);
173 void hmp_cancel_vcpu_dirty_limit(MonitorHMP *hmp, const QDict *qdict);
174 void hmp_info_vcpu_dirty_limit(MonitorHMP *hmp, const QDict *qdict);
175 void hmp_human_readable_text_helper(Monitor *mon,
176 HumanReadableText *(*qmp_handler)(Error **));
177 void hmp_info_stats(MonitorHMP *hmp, const QDict *qdict);
178 void hmp_one_insn_per_tb(MonitorHMP *hmp, const QDict *qdict);
179 void hmp_watchdog_action(MonitorHMP *hmp, const QDict *qdict);
180 void hmp_pcie_aer_inject_error(MonitorHMP *hmp, const QDict *qdict);
181 void hmp_info_capture(MonitorHMP *hmp, const QDict *qdict);
182 void hmp_stopcapture(MonitorHMP *hmp, const QDict *qdict);
183 void hmp_wavcapture(MonitorHMP *hmp, const QDict *qdict);
184 void hmp_trace_event(MonitorHMP *hmp, const QDict *qdict);
185 void hmp_trace_file(MonitorHMP *hmp, const QDict *qdict);
186 void hmp_info_trace_events(MonitorHMP *hmp, const QDict *qdict);
187 void hmp_help(MonitorHMP *hmp, const QDict *qdict);
188 void hmp_clear(MonitorHMP *hmp, const QDict *qdict);
189 void hmp_info_help(MonitorHMP *hmp, const QDict *qdict);
190 void hmp_info_sync_profile(MonitorHMP *hmp, const QDict *qdict);
191 void hmp_info_history(MonitorHMP *hmp, const QDict *qdict);
192 void hmp_logfile(MonitorHMP *hmp, const QDict *qdict);
193 void hmp_log(MonitorHMP *hmp, const QDict *qdict);
194 void hmp_gdbserver(MonitorHMP *hmp, const QDict *qdict);
195 void hmp_print(MonitorHMP *hmp, const QDict *qdict);
196 void hmp_sum(MonitorHMP *hmp, const QDict *qdict);
197 void hmp_ioport_read(MonitorHMP *hmp, const QDict *qdict);
198 void hmp_ioport_write(MonitorHMP *hmp, const QDict *qdict);
199 void hmp_boot_set(MonitorHMP *hmp, const QDict *qdict);
200 void hmp_info_mtree(MonitorHMP *hmp, const QDict *qdict);
201 void hmp_info_cryptodev(MonitorHMP *hmp, const QDict *qdict);
202 void hmp_dumpdtb(MonitorHMP *hmp, const QDict *qdict);
203 void hmp_info_firmware_log(MonitorHMP *hmp, const QDict *qdict);
204 void hmp_info_mem(MonitorHMP *hmp, const QDict *qdict);
205 void hmp_info_tlb(MonitorHMP *hmp, const QDict *qdict);
206 void hmp_mce(MonitorHMP *hmp, const QDict *qdict);
207 void hmp_info_local_apic(MonitorHMP *hmp, const QDict *qdict);
208 void hmp_info_sev(MonitorHMP *hmp, const QDict *qdict);
209 void hmp_info_sgx(MonitorHMP *hmp, const QDict *qdict);
210 void hmp_info_via(MonitorHMP *hmp, const QDict *qdict);
211 void hmp_memory_dump(MonitorHMP *hmp, const QDict *qdict);
212 void hmp_physical_memory_dump(MonitorHMP *hmp, const QDict *qdict);
213 void hmp_info_registers(MonitorHMP *hmp, const QDict *qdict);
214 void hmp_gva2gpa(MonitorHMP *hmp, const QDict *qdict);
215 void hmp_gpa2hva(MonitorHMP *hmp, const QDict *qdict);
216 void hmp_gpa2hpa(MonitorHMP *hmp, const QDict *qdict);
217
218 void hmp_dump_skeys(MonitorHMP *hmp, const QDict *qdict);
219 void hmp_info_skeys(MonitorHMP *hmp, const QDict *qdict);
220 void hmp_info_cmma(MonitorHMP *hmp, const QDict *qdict);
221 void hmp_migrationmode(MonitorHMP *hmp, const QDict *qdict);
222
223 #endif /* CONFIG_HMP */
224
225 #endif