2007-11-18 01:14:51 +08:00
|
|
|
#ifndef SYSEMU_H
|
|
|
|
#define SYSEMU_H
|
|
|
|
/* Misc. things related to the system emulator. */
|
|
|
|
|
2012-12-18 01:20:00 +08:00
|
|
|
#include "qemu/option.h"
|
|
|
|
#include "qemu/queue.h"
|
|
|
|
#include "qemu/timer.h"
|
2011-09-13 04:54:20 +08:00
|
|
|
#include "qapi-types.h"
|
2012-12-18 01:20:00 +08:00
|
|
|
#include "qemu/notify.h"
|
|
|
|
#include "qemu/main-loop.h"
|
2014-05-14 17:43:07 +08:00
|
|
|
#include "qemu/bitmap.h"
|
2016-09-21 12:27:22 +08:00
|
|
|
#include "qemu/uuid.h"
|
2014-05-14 17:43:15 +08:00
|
|
|
#include "qom/object.h"
|
2009-03-06 07:01:23 +08:00
|
|
|
|
2007-11-18 01:14:51 +08:00
|
|
|
/* vl.c */
|
2011-07-30 01:26:33 +08:00
|
|
|
|
2007-11-18 01:14:51 +08:00
|
|
|
extern const char *bios_name;
|
2017-04-17 20:57:54 +08:00
|
|
|
extern int only_migratable;
|
2007-11-18 01:14:51 +08:00
|
|
|
extern const char *qemu_name;
|
2016-09-21 12:27:22 +08:00
|
|
|
extern QemuUUID qemu_uuid;
|
smbios: Make multiple -smbios type= accumulate sanely
Currently, -smbios type=T,NAME=VAL,... adds one field (T,NAME) with
value VAL to fw_cfg for each unique NAME. If NAME occurs multiple
times, the last one's VAL is used (before the QemuOpts conversion, the
first one was used).
Multiple -smbios can add multiple fields with the same (T, NAME).
SeaBIOS reads all of them from fw_cfg, but uses only the first field
(T, NAME). The others are ignored.
"First one wins, subsequent ones get ignored silently" isn't nice. We
commonly let the last option win. Useful, because it lets you
-readconfig first, then selectively override with command line
options.
Clean up -smbios to work the common way. Accumulate the settings,
with later ones overwriting earlier ones. Put the result into fw_cfg
(no more useless duplicates).
Bonus cleanup: qemu_uuid_parse() no longer sets SMBIOS system uuid by
side effect.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2013-08-16 21:18:31 +08:00
|
|
|
extern bool qemu_uuid_set;
|
2007-11-18 01:14:51 +08:00
|
|
|
|
2011-07-30 02:04:45 +08:00
|
|
|
bool runstate_check(RunState state);
|
|
|
|
void runstate_set(RunState new_state);
|
2011-07-30 02:36:43 +08:00
|
|
|
int runstate_is_running(void);
|
2013-04-26 11:24:40 +08:00
|
|
|
bool runstate_needs_reset(void);
|
2014-10-08 17:53:22 +08:00
|
|
|
bool runstate_store(char *str, size_t size);
|
2007-11-18 01:14:51 +08:00
|
|
|
typedef struct vm_change_state_entry VMChangeStateEntry;
|
2011-07-30 01:26:33 +08:00
|
|
|
typedef void VMChangeStateHandler(void *opaque, int running, RunState state);
|
2007-11-18 01:14:51 +08:00
|
|
|
|
|
|
|
VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb,
|
|
|
|
void *opaque);
|
|
|
|
void qemu_del_vm_change_state_handler(VMChangeStateEntry *e);
|
2011-07-30 01:26:33 +08:00
|
|
|
void vm_state_notify(int running, RunState state);
|
2011-02-09 23:29:40 +08:00
|
|
|
|
shutdown: Prepare for use of an enum in reset/shutdown_request
We want to track why a guest was shutdown; in particular, being able
to tell the difference between a guest request (such as ACPI request)
and host request (such as SIGINT) will prove useful to libvirt.
Since all requests eventually end up changing shutdown_requested in
vl.c, the logical change is to make that value track the reason,
rather than its current 0/1 contents.
Since command-line options control whether a reset request is turned
into a shutdown request instead, the same treatment is given to
reset_requested.
This patch adds an internal enum ShutdownCause that describes reasons
that a shutdown can be requested, and changes qemu_system_reset() to
pass the reason through, although for now nothing is actually changed
with regards to what gets reported. The enum could be exported via
QAPI at a later date, if deemed necessary, but for now, there has not
been a request to expose that much detail to end clients.
For the most part, we turn 0 into SHUTDOWN_CAUSE_NONE, and 1 into
SHUTDOWN_CAUSE_HOST_ERROR; the only specific case where we have enough
information right now to use a different value is when we are reacting
to a host signal. It will take a further patch to edit all call-sites
that can trigger a reset or shutdown request to properly pass in any
other reasons; this patch includes TODOs to point such places out.
qemu_system_reset() trades its 'bool report' parameter for a
'ShutdownCause reason', with all non-zero values having the same
effect; this lets us get rid of the weird #defines for VMRESET_*
as synonyms for bools.
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20170515214114.15442-3-eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2017-05-16 05:41:11 +08:00
|
|
|
/* Enumeration of various causes for shutdown. */
|
|
|
|
typedef enum ShutdownCause {
|
|
|
|
SHUTDOWN_CAUSE_NONE, /* No shutdown request pending */
|
|
|
|
SHUTDOWN_CAUSE_HOST_ERROR, /* An error prevents further use of guest */
|
|
|
|
SHUTDOWN_CAUSE_HOST_QMP, /* Reaction to a QMP command, like 'quit' */
|
|
|
|
SHUTDOWN_CAUSE_HOST_SIGNAL, /* Reaction to a signal, such as SIGINT */
|
|
|
|
SHUTDOWN_CAUSE_HOST_UI, /* Reaction to UI event, like window close */
|
|
|
|
SHUTDOWN_CAUSE_GUEST_SHUTDOWN,/* Guest shutdown/suspend request, via
|
|
|
|
ACPI or other hardware-specific means */
|
|
|
|
SHUTDOWN_CAUSE_GUEST_RESET, /* Guest reset request, and command line
|
|
|
|
turns that into a shutdown */
|
|
|
|
SHUTDOWN_CAUSE_GUEST_PANIC, /* Guest panicked, and command line turns
|
|
|
|
that into a shutdown */
|
|
|
|
SHUTDOWN_CAUSE__MAX,
|
|
|
|
} ShutdownCause;
|
2011-06-15 00:29:43 +08:00
|
|
|
|
2007-11-18 01:14:51 +08:00
|
|
|
void vm_start(void);
|
2017-02-15 01:07:47 +08:00
|
|
|
int vm_prepare_start(void);
|
2013-07-05 19:49:54 +08:00
|
|
|
int vm_stop(RunState state);
|
|
|
|
int vm_stop_force_state(RunState state);
|
2007-11-18 01:14:51 +08:00
|
|
|
|
2012-02-23 20:45:19 +08:00
|
|
|
typedef enum WakeupReason {
|
2013-09-26 00:38:29 +08:00
|
|
|
/* Always keep QEMU_WAKEUP_REASON_NONE = 0 */
|
|
|
|
QEMU_WAKEUP_REASON_NONE = 0,
|
2012-02-23 20:45:24 +08:00
|
|
|
QEMU_WAKEUP_REASON_RTC,
|
2012-02-23 20:45:25 +08:00
|
|
|
QEMU_WAKEUP_REASON_PMTIMER,
|
2013-09-26 00:38:29 +08:00
|
|
|
QEMU_WAKEUP_REASON_OTHER,
|
2012-02-23 20:45:19 +08:00
|
|
|
} WakeupReason;
|
|
|
|
|
2017-05-16 05:41:13 +08:00
|
|
|
void qemu_system_reset_request(ShutdownCause reason);
|
2012-02-23 20:45:19 +08:00
|
|
|
void qemu_system_suspend_request(void);
|
|
|
|
void qemu_register_suspend_notifier(Notifier *notifier);
|
|
|
|
void qemu_system_wakeup_request(WakeupReason reason);
|
|
|
|
void qemu_system_wakeup_enable(WakeupReason reason, bool enabled);
|
|
|
|
void qemu_register_wakeup_notifier(Notifier *notifier);
|
2017-05-16 05:41:13 +08:00
|
|
|
void qemu_system_shutdown_request(ShutdownCause reason);
|
2007-11-18 01:14:51 +08:00
|
|
|
void qemu_system_powerdown_request(void);
|
2012-09-06 05:06:21 +08:00
|
|
|
void qemu_register_powerdown_notifier(Notifier *notifier);
|
2011-02-07 19:19:16 +08:00
|
|
|
void qemu_system_debug_request(void);
|
2011-07-30 01:26:33 +08:00
|
|
|
void qemu_system_vmstop_request(RunState reason);
|
2014-06-05 20:53:58 +08:00
|
|
|
void qemu_system_vmstop_request_prepare(void);
|
2017-02-15 01:07:47 +08:00
|
|
|
bool qemu_vmstop_requested(RunState *r);
|
shutdown: Prepare for use of an enum in reset/shutdown_request
We want to track why a guest was shutdown; in particular, being able
to tell the difference between a guest request (such as ACPI request)
and host request (such as SIGINT) will prove useful to libvirt.
Since all requests eventually end up changing shutdown_requested in
vl.c, the logical change is to make that value track the reason,
rather than its current 0/1 contents.
Since command-line options control whether a reset request is turned
into a shutdown request instead, the same treatment is given to
reset_requested.
This patch adds an internal enum ShutdownCause that describes reasons
that a shutdown can be requested, and changes qemu_system_reset() to
pass the reason through, although for now nothing is actually changed
with regards to what gets reported. The enum could be exported via
QAPI at a later date, if deemed necessary, but for now, there has not
been a request to expose that much detail to end clients.
For the most part, we turn 0 into SHUTDOWN_CAUSE_NONE, and 1 into
SHUTDOWN_CAUSE_HOST_ERROR; the only specific case where we have enough
information right now to use a different value is when we are reacting
to a host signal. It will take a further patch to edit all call-sites
that can trigger a reset or shutdown request to properly pass in any
other reasons; this patch includes TODOs to point such places out.
qemu_system_reset() trades its 'bool report' parameter for a
'ShutdownCause reason', with all non-zero values having the same
effect; this lets us get rid of the weird #defines for VMRESET_*
as synonyms for bools.
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20170515214114.15442-3-eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2017-05-16 05:41:11 +08:00
|
|
|
ShutdownCause qemu_shutdown_requested_get(void);
|
|
|
|
ShutdownCause qemu_reset_requested_get(void);
|
2011-03-15 19:56:04 +08:00
|
|
|
void qemu_system_killed(int signal, pid_t pid);
|
shutdown: Prepare for use of an enum in reset/shutdown_request
We want to track why a guest was shutdown; in particular, being able
to tell the difference between a guest request (such as ACPI request)
and host request (such as SIGINT) will prove useful to libvirt.
Since all requests eventually end up changing shutdown_requested in
vl.c, the logical change is to make that value track the reason,
rather than its current 0/1 contents.
Since command-line options control whether a reset request is turned
into a shutdown request instead, the same treatment is given to
reset_requested.
This patch adds an internal enum ShutdownCause that describes reasons
that a shutdown can be requested, and changes qemu_system_reset() to
pass the reason through, although for now nothing is actually changed
with regards to what gets reported. The enum could be exported via
QAPI at a later date, if deemed necessary, but for now, there has not
been a request to expose that much detail to end clients.
For the most part, we turn 0 into SHUTDOWN_CAUSE_NONE, and 1 into
SHUTDOWN_CAUSE_HOST_ERROR; the only specific case where we have enough
information right now to use a different value is when we are reacting
to a host signal. It will take a further patch to edit all call-sites
that can trigger a reset or shutdown request to properly pass in any
other reasons; this patch includes TODOs to point such places out.
qemu_system_reset() trades its 'bool report' parameter for a
'ShutdownCause reason', with all non-zero values having the same
effect; this lets us get rid of the weird #defines for VMRESET_*
as synonyms for bools.
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20170515214114.15442-3-eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2017-05-16 05:41:11 +08:00
|
|
|
void qemu_system_reset(ShutdownCause reason);
|
2017-02-14 14:25:23 +08:00
|
|
|
void qemu_system_guest_panicked(GuestPanicInformation *info);
|
2017-03-21 16:09:14 +08:00
|
|
|
size_t qemu_target_page_size(void);
|
2007-11-18 01:14:51 +08:00
|
|
|
|
2010-06-04 20:08:07 +08:00
|
|
|
void qemu_add_exit_notifier(Notifier *notify);
|
|
|
|
void qemu_remove_exit_notifier(Notifier *notify);
|
|
|
|
|
2010-12-08 19:35:08 +08:00
|
|
|
void qemu_add_machine_init_done_notifier(Notifier *notify);
|
2016-06-27 23:38:32 +08:00
|
|
|
void qemu_remove_machine_init_done_notifier(Notifier *notify);
|
2010-12-08 19:35:08 +08:00
|
|
|
|
2017-04-19 00:12:35 +08:00
|
|
|
int save_vmstate(const char *name, Error **errp);
|
|
|
|
int load_vmstate(const char *name, Error **errp);
|
2007-11-18 01:14:51 +08:00
|
|
|
|
2008-10-13 11:13:12 +08:00
|
|
|
void qemu_announce_self(void);
|
|
|
|
|
2015-11-06 02:10:45 +08:00
|
|
|
/* Subcommands for QEMU_VM_COMMAND */
|
|
|
|
enum qemu_vm_cmd {
|
|
|
|
MIG_CMD_INVALID = 0, /* Must be 0 */
|
2015-11-06 02:10:46 +08:00
|
|
|
MIG_CMD_OPEN_RETURN_PATH, /* Tell the dest to open the Return path */
|
|
|
|
MIG_CMD_PING, /* Request a PONG on the RP */
|
2015-11-06 02:10:52 +08:00
|
|
|
|
|
|
|
MIG_CMD_POSTCOPY_ADVISE, /* Prior to any page transfers, just
|
|
|
|
warn we might want to do PC */
|
|
|
|
MIG_CMD_POSTCOPY_LISTEN, /* Start listening for incoming
|
|
|
|
pages as it's running. */
|
|
|
|
MIG_CMD_POSTCOPY_RUN, /* Start execution */
|
|
|
|
|
|
|
|
MIG_CMD_POSTCOPY_RAM_DISCARD, /* A list of pages to discard that
|
|
|
|
were previously sent during
|
|
|
|
precopy but are dirty. */
|
2015-11-06 02:10:53 +08:00
|
|
|
MIG_CMD_PACKAGED, /* Send a wrapped stream within this stream */
|
2015-11-06 02:10:45 +08:00
|
|
|
MIG_CMD_MAX
|
|
|
|
};
|
|
|
|
|
2015-11-06 02:10:53 +08:00
|
|
|
#define MAX_VM_CMD_PACKAGED_SIZE (1ul << 24)
|
|
|
|
|
2011-12-06 00:48:01 +08:00
|
|
|
bool qemu_savevm_state_blocked(Error **errp);
|
2013-02-23 00:36:13 +08:00
|
|
|
void qemu_savevm_state_begin(QEMUFile *f,
|
|
|
|
const MigrationParams *params);
|
2015-05-21 20:24:12 +08:00
|
|
|
void qemu_savevm_state_header(QEMUFile *f);
|
2015-11-06 02:11:14 +08:00
|
|
|
int qemu_savevm_state_iterate(QEMUFile *f, bool postcopy);
|
2015-11-02 15:37:01 +08:00
|
|
|
void qemu_savevm_state_cleanup(void);
|
2015-11-06 02:11:00 +08:00
|
|
|
void qemu_savevm_state_complete_postcopy(QEMUFile *f);
|
2015-11-11 22:02:27 +08:00
|
|
|
void qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only);
|
2015-11-06 02:10:54 +08:00
|
|
|
void qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size,
|
|
|
|
uint64_t *res_non_postcopiable,
|
|
|
|
uint64_t *res_postcopiable);
|
2015-11-06 02:10:45 +08:00
|
|
|
void qemu_savevm_command_send(QEMUFile *f, enum qemu_vm_cmd command,
|
|
|
|
uint16_t len, uint8_t *data);
|
2015-11-06 02:10:46 +08:00
|
|
|
void qemu_savevm_send_ping(QEMUFile *f, uint32_t value);
|
|
|
|
void qemu_savevm_send_open_return_path(QEMUFile *f);
|
2016-04-27 18:05:01 +08:00
|
|
|
int qemu_savevm_send_packaged(QEMUFile *f, const uint8_t *buf, size_t len);
|
2015-11-06 02:10:52 +08:00
|
|
|
void qemu_savevm_send_postcopy_advise(QEMUFile *f);
|
|
|
|
void qemu_savevm_send_postcopy_listen(QEMUFile *f);
|
|
|
|
void qemu_savevm_send_postcopy_run(QEMUFile *f);
|
|
|
|
|
|
|
|
void qemu_savevm_send_postcopy_ram_discard(QEMUFile *f, const char *name,
|
|
|
|
uint16_t len,
|
|
|
|
uint64_t *start_list,
|
|
|
|
uint64_t *length_list);
|
|
|
|
|
2008-10-06 22:53:52 +08:00
|
|
|
int qemu_loadvm_state(QEMUFile *f);
|
|
|
|
|
2009-07-28 05:17:51 +08:00
|
|
|
extern int autostart;
|
2009-07-30 18:15:02 +08:00
|
|
|
|
|
|
|
typedef enum {
|
2010-04-27 17:50:11 +08:00
|
|
|
VGA_NONE, VGA_STD, VGA_CIRRUS, VGA_VMWARE, VGA_XENFB, VGA_QXL,
|
2014-09-10 20:28:48 +08:00
|
|
|
VGA_TCX, VGA_CG3, VGA_DEVICE, VGA_VIRTIO,
|
2015-10-29 05:19:58 +08:00
|
|
|
VGA_TYPE_MAX,
|
2009-07-30 18:15:02 +08:00
|
|
|
} VGAInterfaceType;
|
|
|
|
|
|
|
|
extern int vga_interface_type;
|
|
|
|
#define xenfb_enabled (vga_interface_type == VGA_XENFB)
|
|
|
|
|
2007-11-18 01:14:51 +08:00
|
|
|
extern int graphic_width;
|
|
|
|
extern int graphic_height;
|
|
|
|
extern int graphic_depth;
|
2014-11-20 16:49:44 +08:00
|
|
|
extern int display_opengl;
|
2007-11-18 01:14:51 +08:00
|
|
|
extern const char *keyboard_layout;
|
|
|
|
extern int win2k_install_hack;
|
|
|
|
extern int alt_grab;
|
2009-09-18 04:48:04 +08:00
|
|
|
extern int ctrl_grab;
|
2007-11-18 01:14:51 +08:00
|
|
|
extern int smp_cpus;
|
2009-07-23 23:03:42 +08:00
|
|
|
extern int max_cpus;
|
2007-11-18 01:14:51 +08:00
|
|
|
extern int cursor_hide;
|
|
|
|
extern int graphic_rotate;
|
|
|
|
extern int no_quit;
|
2010-05-12 05:07:04 +08:00
|
|
|
extern int no_shutdown;
|
2007-11-18 01:14:51 +08:00
|
|
|
extern int old_param;
|
2009-07-02 06:19:02 +08:00
|
|
|
extern int boot_menu;
|
2014-10-07 16:00:05 +08:00
|
|
|
extern bool boot_strict;
|
2011-07-27 18:04:55 +08:00
|
|
|
extern uint8_t *boot_splash_filedata;
|
2013-01-24 01:25:08 +08:00
|
|
|
extern size_t boot_splash_filedata_size;
|
2015-11-06 02:11:22 +08:00
|
|
|
extern bool enable_mlock;
|
2011-07-27 18:04:55 +08:00
|
|
|
extern uint8_t qemu_extra_params_fw[2];
|
2013-08-21 23:03:04 +08:00
|
|
|
extern QEMUClockType rtc_clock;
|
2014-05-14 17:43:18 +08:00
|
|
|
extern const char *mem_path;
|
|
|
|
extern int mem_prealloc;
|
2007-11-18 01:14:51 +08:00
|
|
|
|
2014-05-14 17:43:09 +08:00
|
|
|
#define MAX_NODES 128
|
2015-06-02 19:23:09 +08:00
|
|
|
#define NUMA_NODE_UNASSIGNED MAX_NODES
|
numa: Allow setting NUMA distance for different NUMA nodes
This patch is going to add SLIT table support in QEMU, and provides
additional option `dist` for command `-numa` to allow user set vNUMA
distance by QEMU command.
With this patch, when a user wants to create a guest that contains
several vNUMA nodes and also wants to set distance among those nodes,
the QEMU command would like:
```
-numa node,nodeid=0,cpus=0 \
-numa node,nodeid=1,cpus=1 \
-numa node,nodeid=2,cpus=2 \
-numa node,nodeid=3,cpus=3 \
-numa dist,src=0,dst=1,val=21 \
-numa dist,src=0,dst=2,val=31 \
-numa dist,src=0,dst=3,val=41 \
-numa dist,src=1,dst=2,val=21 \
-numa dist,src=1,dst=3,val=31 \
-numa dist,src=2,dst=3,val=21 \
```
Signed-off-by: He Chen <he.chen@linux.intel.com>
Message-Id: <1493260558-20728-1-git-send-email-he.chen@linux.intel.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
2017-04-27 10:35:58 +08:00
|
|
|
#define NUMA_DISTANCE_MIN 10
|
|
|
|
#define NUMA_DISTANCE_DEFAULT 20
|
|
|
|
#define NUMA_DISTANCE_MAX 254
|
|
|
|
#define NUMA_DISTANCE_UNREACHABLE 255
|
2014-03-19 03:29:23 +08:00
|
|
|
|
2007-11-18 01:14:51 +08:00
|
|
|
#define MAX_OPTION_ROMS 16
|
2010-12-08 19:35:07 +08:00
|
|
|
typedef struct QEMUOptionRom {
|
|
|
|
const char *name;
|
|
|
|
int32_t bootindex;
|
|
|
|
} QEMUOptionRom;
|
|
|
|
extern QEMUOptionRom option_rom[MAX_OPTION_ROMS];
|
2007-11-18 01:14:51 +08:00
|
|
|
extern int nb_option_roms;
|
|
|
|
|
|
|
|
#define MAX_PROM_ENVS 128
|
|
|
|
extern const char *prom_envs[MAX_PROM_ENVS];
|
|
|
|
extern unsigned int nb_prom_envs;
|
|
|
|
|
2010-08-24 05:43:10 +08:00
|
|
|
/* generic hotplug */
|
hmp: Name HMP command handler functions hmp_COMMAND()
Some are called do_COMMAND() (old ones, usually), some hmp_COMMAND(),
and sometimes COMMAND pointlessly differs in spelling.
Normalize to hmp_COMMAND(), where COMMAND is exactly the command name
with '-' replaced by '_'.
Exceptions:
* do_device_add() and client_migrate_info() *not* renamed to
hmp_device_add(), hmp_client_migrate_info(), because they're also
QMP handlers. They still need to be converted to QAPI.
* do_memory_dump(), do_physical_memory_dump(), do_ioport_read(),
do_ioport_write() renamed do hmp_* instead of hmp_x(), hmp_xp(),
hmp_i(), hmp_o(), because those names are too cryptic for my taste.
* do_info_help() renamed to hmp_info_help() instead of hmp_info(),
because it only covers help.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2015-02-06 20:55:43 +08:00
|
|
|
void hmp_drive_add(Monitor *mon, const QDict *qdict);
|
2010-08-24 05:43:10 +08:00
|
|
|
|
2010-12-24 11:14:14 +08:00
|
|
|
/* pcie aer error injection */
|
2015-03-06 00:48:49 +08:00
|
|
|
void hmp_pcie_aer_inject_error(Monitor *mon, const QDict *qdict);
|
2010-12-24 11:14:14 +08:00
|
|
|
|
2007-11-18 01:14:51 +08:00
|
|
|
/* serial ports */
|
|
|
|
|
|
|
|
#define MAX_SERIAL_PORTS 4
|
|
|
|
|
2016-12-07 21:20:22 +08:00
|
|
|
extern Chardev *serial_hds[MAX_SERIAL_PORTS];
|
2007-11-18 01:14:51 +08:00
|
|
|
|
|
|
|
/* parallel ports */
|
|
|
|
|
|
|
|
#define MAX_PARALLEL_PORTS 3
|
|
|
|
|
2016-12-07 21:20:22 +08:00
|
|
|
extern Chardev *parallel_hds[MAX_PARALLEL_PORTS];
|
2007-11-18 01:14:51 +08:00
|
|
|
|
hmp: Name HMP command handler functions hmp_COMMAND()
Some are called do_COMMAND() (old ones, usually), some hmp_COMMAND(),
and sometimes COMMAND pointlessly differs in spelling.
Normalize to hmp_COMMAND(), where COMMAND is exactly the command name
with '-' replaced by '_'.
Exceptions:
* do_device_add() and client_migrate_info() *not* renamed to
hmp_device_add(), hmp_client_migrate_info(), because they're also
QMP handlers. They still need to be converted to QAPI.
* do_memory_dump(), do_physical_memory_dump(), do_ioport_read(),
do_ioport_write() renamed do hmp_* instead of hmp_x(), hmp_xp(),
hmp_i(), hmp_o(), because those names are too cryptic for my taste.
* do_info_help() renamed to hmp_info_help() instead of hmp_info(),
because it only covers help.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2015-02-06 20:55:43 +08:00
|
|
|
void hmp_usb_add(Monitor *mon, const QDict *qdict);
|
|
|
|
void hmp_usb_del(Monitor *mon, const QDict *qdict);
|
2015-02-06 21:18:24 +08:00
|
|
|
void hmp_info_usb(Monitor *mon, const QDict *qdict);
|
2007-11-18 01:14:51 +08:00
|
|
|
|
2010-12-08 19:35:05 +08:00
|
|
|
void add_boot_device_path(int32_t bootindex, DeviceState *dev,
|
|
|
|
const char *suffix);
|
2014-03-17 10:40:22 +08:00
|
|
|
char *get_boot_devices_list(size_t *size, bool ignore_suffixes);
|
2012-09-03 03:25:28 +08:00
|
|
|
|
2013-04-26 10:12:49 +08:00
|
|
|
DeviceState *get_boot_device(uint32_t position);
|
2014-10-07 16:00:06 +08:00
|
|
|
void check_boot_index(int32_t bootindex, Error **errp);
|
2014-10-07 16:00:07 +08:00
|
|
|
void del_boot_device_path(DeviceState *dev, const char *suffix);
|
2014-10-07 16:00:11 +08:00
|
|
|
void device_add_bootindex_property(Object *obj, int32_t *bootindex,
|
|
|
|
const char *name, const char *suffix,
|
|
|
|
DeviceState *dev, Error **errp);
|
2014-12-04 00:49:46 +08:00
|
|
|
void restore_boot_order(void *opaque);
|
2014-12-04 01:11:39 +08:00
|
|
|
void validate_bootdevices(const char *devices, Error **errp);
|
2014-12-04 00:49:46 +08:00
|
|
|
|
2015-09-05 02:37:09 +08:00
|
|
|
/* handler to set the boot_device order for a specific type of MachineClass */
|
2014-12-04 03:04:02 +08:00
|
|
|
typedef void QEMUBootSetHandler(void *opaque, const char *boot_order,
|
|
|
|
Error **errp);
|
2014-12-04 00:49:46 +08:00
|
|
|
void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque);
|
2014-12-04 02:20:58 +08:00
|
|
|
void qemu_boot_set(const char *boot_order, Error **errp);
|
2013-04-26 10:12:49 +08:00
|
|
|
|
2013-07-04 21:09:19 +08:00
|
|
|
QemuOpts *qemu_get_machine_opts(void);
|
|
|
|
|
2015-01-06 21:29:12 +08:00
|
|
|
bool defaults_enabled(void);
|
2012-09-03 03:25:28 +08:00
|
|
|
|
2013-11-09 12:15:47 +08:00
|
|
|
extern QemuOptsList qemu_legacy_drive_opts;
|
|
|
|
extern QemuOptsList qemu_common_drive_opts;
|
2012-11-26 23:03:42 +08:00
|
|
|
extern QemuOptsList qemu_drive_opts;
|
2016-10-06 17:33:17 +08:00
|
|
|
extern QemuOptsList bdrv_runtime_opts;
|
2012-11-26 23:03:42 +08:00
|
|
|
extern QemuOptsList qemu_chardev_opts;
|
|
|
|
extern QemuOptsList qemu_device_opts;
|
|
|
|
extern QemuOptsList qemu_netdev_opts;
|
|
|
|
extern QemuOptsList qemu_net_opts;
|
|
|
|
extern QemuOptsList qemu_global_opts;
|
|
|
|
extern QemuOptsList qemu_mon_opts;
|
|
|
|
|
2007-11-18 01:14:51 +08:00
|
|
|
#endif
|