mirror of https://github.com/proxmox/mirror_qemu
Merge remote branch 'qmp/for-anthony' into staging
commit
3853528a91
|
@ -215,3 +215,58 @@ Additionally, Clients must not assume any particular:
|
||||||
- Order of json-object members or json-array elements
|
- Order of json-object members or json-array elements
|
||||||
- Amount of errors generated by a command, that is, new errors can be added
|
- Amount of errors generated by a command, that is, new errors can be added
|
||||||
to any existing command in newer versions of the Server
|
to any existing command in newer versions of the Server
|
||||||
|
|
||||||
|
6. Downstream extension of QMP
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
We recommend that downstream consumers of QEMU do *not* modify QMP.
|
||||||
|
Management tools should be able to support both upstream and downstream
|
||||||
|
versions of QMP without special logic, and downstream extensions are
|
||||||
|
inherently at odds with that.
|
||||||
|
|
||||||
|
However, we recognize that it is sometimes impossible for downstreams to
|
||||||
|
avoid modifying QMP. Both upstream and downstream need to take care to
|
||||||
|
preserve long-term compatibility and interoperability.
|
||||||
|
|
||||||
|
To help with that, QMP reserves JSON object member names beginning with
|
||||||
|
'__' (double underscore) for downstream use ("downstream names"). This
|
||||||
|
means upstream will never use any downstream names for its commands,
|
||||||
|
arguments, errors, asynchronous events, and so forth.
|
||||||
|
|
||||||
|
Any new names downstream wishes to add must begin with '__'. To
|
||||||
|
ensure compatibility with other downstreams, it is strongly
|
||||||
|
recommended that you prefix your downstram names with '__RFQDN_' where
|
||||||
|
RFQDN is a valid, reverse fully qualified domain name which you
|
||||||
|
control. For example, a qemu-kvm specific monitor command would be:
|
||||||
|
|
||||||
|
(qemu) __org.linux-kvm_enable_irqchip
|
||||||
|
|
||||||
|
Downstream must not change the server greeting (section 2.2) other than
|
||||||
|
to offer additional capabilities. But see below for why even that is
|
||||||
|
discouraged.
|
||||||
|
|
||||||
|
Section '5 Compatibility Considerations' applies to downstream as well
|
||||||
|
as to upstream, obviously. It follows that downstream must behave
|
||||||
|
exactly like upstream for any input not containing members with
|
||||||
|
downstream names ("downstream members"), except it may add members
|
||||||
|
with downstream names to its output.
|
||||||
|
|
||||||
|
Thus, a client should not be able to distinguish downstream from
|
||||||
|
upstream as long as it doesn't send input with downstream members, and
|
||||||
|
properly ignores any downstream members in the output it receives.
|
||||||
|
|
||||||
|
Advice on downstream modifications:
|
||||||
|
|
||||||
|
1. Introducing new commands is okay. If you want to extend an existing
|
||||||
|
command, consider introducing a new one with the new behaviour
|
||||||
|
instead.
|
||||||
|
|
||||||
|
2. Introducing new asynchronous messages is okay. If you want to extend
|
||||||
|
an existing message, consider adding a new one instead.
|
||||||
|
|
||||||
|
3. Introducing new errors for use in new commands is okay. Adding new
|
||||||
|
errors to existing commands counts as extension, so 1. applies.
|
||||||
|
|
||||||
|
4. New capabilities are strongly discouraged. Capabilities are for
|
||||||
|
evolving the basic protocol, and multiple diverging basic protocol
|
||||||
|
dialects are most undesirable.
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
#include <check.h>
|
#include <check.h>
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* QFloat unit-tests.
|
* QFloat unit-tests.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Red Hat Inc.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
|
||||||
*
|
|
||||||
* Copyright IBM, Corp. 2009
|
* Copyright IBM, Corp. 2009
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
#include <check.h>
|
#include <check.h>
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
*
|
*
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
* the COPYING file in the top-level directory.
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
#include <check.h>
|
#include <check.h>
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
#include <check.h>
|
#include <check.h>
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
#include "scsi.h"
|
#include "scsi.h"
|
||||||
#include "virtio-blk.h"
|
#include "virtio-blk.h"
|
||||||
#include "qemu-config.h"
|
#include "qemu-config.h"
|
||||||
#include "qemu-objects.h"
|
|
||||||
|
|
||||||
#if defined(TARGET_I386)
|
#if defined(TARGET_I386)
|
||||||
static PCIDevice *qemu_pci_hot_add_nic(Monitor *mon,
|
static PCIDevice *qemu_pci_hot_add_nic(Monitor *mon,
|
||||||
|
@ -224,36 +223,7 @@ static PCIDevice *qemu_pci_hot_add_storage(Monitor *mon,
|
||||||
return dev;
|
return dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pci_device_hot_add_print(Monitor *mon, const QObject *data)
|
void pci_device_hot_add(Monitor *mon, const QDict *qdict)
|
||||||
{
|
|
||||||
QDict *qdict;
|
|
||||||
|
|
||||||
assert(qobject_type(data) == QTYPE_QDICT);
|
|
||||||
qdict = qobject_to_qdict(data);
|
|
||||||
|
|
||||||
monitor_printf(mon, "OK domain %d, bus %d, slot %d, function %d\n",
|
|
||||||
(int) qdict_get_int(qdict, "domain"),
|
|
||||||
(int) qdict_get_int(qdict, "bus"),
|
|
||||||
(int) qdict_get_int(qdict, "slot"),
|
|
||||||
(int) qdict_get_int(qdict, "function"));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* pci_device_hot_add(): Hot add a PCI device
|
|
||||||
*
|
|
||||||
* Return a QDict with the following device information:
|
|
||||||
*
|
|
||||||
* - "domain": domain number
|
|
||||||
* - "bus": bus number
|
|
||||||
* - "slot": slot number
|
|
||||||
* - "function": function number
|
|
||||||
*
|
|
||||||
* Example:
|
|
||||||
*
|
|
||||||
* { "domain": 0, "bus": 0, "slot": 5, "function": 0 }
|
|
||||||
*/
|
|
||||||
int pci_device_hot_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
|
|
||||||
{
|
{
|
||||||
PCIDevice *dev = NULL;
|
PCIDevice *dev = NULL;
|
||||||
const char *pci_addr = qdict_get_str(qdict, "pci_addr");
|
const char *pci_addr = qdict_get_str(qdict, "pci_addr");
|
||||||
|
@ -278,20 +248,14 @@ int pci_device_hot_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
|
||||||
dev = qemu_pci_hot_add_storage(mon, pci_addr, opts);
|
dev = qemu_pci_hot_add_storage(mon, pci_addr, opts);
|
||||||
} else {
|
} else {
|
||||||
monitor_printf(mon, "invalid type: %s\n", type);
|
monitor_printf(mon, "invalid type: %s\n", type);
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev) {
|
if (dev) {
|
||||||
*ret_data =
|
monitor_printf(mon, "OK domain %d, bus %d, slot %d, function %d\n",
|
||||||
qobject_from_jsonf("{ 'domain': 0, 'bus': %d, 'slot': %d, "
|
0, pci_bus_num(dev->bus), PCI_SLOT(dev->devfn),
|
||||||
"'function': %d }", pci_bus_num(dev->bus),
|
PCI_FUNC(dev->devfn));
|
||||||
PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn));
|
} else
|
||||||
} else {
|
|
||||||
monitor_printf(mon, "failed to add %s\n", opts);
|
monitor_printf(mon, "failed to add %s\n", opts);
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -313,8 +277,7 @@ int pci_device_hot_remove(Monitor *mon, const char *pci_addr)
|
||||||
return qdev_unplug(&d->qdev);
|
return qdev_unplug(&d->qdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
int do_pci_device_hot_remove(Monitor *mon, const QDict *qdict,
|
void do_pci_device_hot_remove(Monitor *mon, const QDict *qdict)
|
||||||
QObject **ret_data)
|
|
||||||
{
|
{
|
||||||
return pci_device_hot_remove(mon, qdict_get_str(qdict, "pci_addr"));
|
pci_device_hot_remove(mon, qdict_get_str(qdict, "pci_addr"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1021,7 +1021,9 @@ static void do_info_cpu_stats(Monitor *mon)
|
||||||
static int do_quit(Monitor *mon, const QDict *qdict, QObject **ret_data)
|
static int do_quit(Monitor *mon, const QDict *qdict, QObject **ret_data)
|
||||||
{
|
{
|
||||||
monitor_suspend(mon);
|
monitor_suspend(mon);
|
||||||
qemu_system_exit_request();
|
no_shutdown = 0;
|
||||||
|
qemu_system_shutdown_request();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
8
qbool.c
8
qbool.c
|
@ -1,14 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* QBool Module
|
* QBool Module
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Red Hat Inc.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
|
||||||
*
|
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
|
||||||
* the COPYING file in the top-level directory.
|
|
||||||
*
|
|
||||||
* Copyright IBM, Corp. 2009
|
* Copyright IBM, Corp. 2009
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
|
|
6
qdict.c
6
qdict.c
|
@ -1,13 +1,13 @@
|
||||||
/*
|
/*
|
||||||
* QDict data type.
|
* QDict Module
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Red Hat Inc.
|
* Copyright (C) 2009 Red Hat Inc.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
*
|
*
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
* the COPYING file in the top-level directory.
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "qint.h"
|
#include "qint.h"
|
||||||
|
|
12
qdict.h
12
qdict.h
|
@ -1,3 +1,15 @@
|
||||||
|
/*
|
||||||
|
* QDict Module
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Red Hat Inc.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef QDICT_H
|
#ifndef QDICT_H
|
||||||
#define QDICT_H
|
#define QDICT_H
|
||||||
|
|
||||||
|
|
|
@ -858,8 +858,7 @@ ETEXI
|
||||||
.args_type = "pci_addr:s,type:s,opts:s?",
|
.args_type = "pci_addr:s,type:s,opts:s?",
|
||||||
.params = "auto|[[<domain>:]<bus>:]<slot> nic|storage [[vlan=n][,macaddr=addr][,model=type]] [file=file][,if=type][,bus=nr]...",
|
.params = "auto|[[<domain>:]<bus>:]<slot> nic|storage [[vlan=n][,macaddr=addr][,model=type]] [file=file][,if=type][,bus=nr]...",
|
||||||
.help = "hot-add PCI device",
|
.help = "hot-add PCI device",
|
||||||
.user_print = pci_device_hot_add_print,
|
.mhandler.cmd = pci_device_hot_add,
|
||||||
.mhandler.cmd_new = pci_device_hot_add,
|
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -875,8 +874,7 @@ ETEXI
|
||||||
.args_type = "pci_addr:s",
|
.args_type = "pci_addr:s",
|
||||||
.params = "[[<domain>:]<bus>:]<slot>",
|
.params = "[[<domain>:]<bus>:]<slot>",
|
||||||
.help = "hot remove PCI device",
|
.help = "hot remove PCI device",
|
||||||
.user_print = monitor_user_noop,
|
.mhandler.cmd = do_pci_device_hot_remove,
|
||||||
.mhandler.cmd_new = do_pci_device_hot_remove,
|
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,10 @@
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
*
|
*
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
* the COPYING file in the top-level directory.
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef QEMU_OBJECTS_H
|
#ifndef QEMU_OBJECTS_H
|
||||||
#define QEMU_OBJECTS_H
|
#define QEMU_OBJECTS_H
|
||||||
|
|
||||||
|
|
2
qerror.c
2
qerror.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* QError: QEMU Error data-type.
|
* QError Module
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Red Hat Inc.
|
* Copyright (C) 2009 Red Hat Inc.
|
||||||
*
|
*
|
||||||
|
|
2
qerror.h
2
qerror.h
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* QError header file.
|
* QError Module
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Red Hat Inc.
|
* Copyright (C) 2009 Red Hat Inc.
|
||||||
*
|
*
|
||||||
|
|
8
qfloat.c
8
qfloat.c
|
@ -1,14 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* QFloat Module
|
* QFloat Module
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Red Hat Inc.
|
|
||||||
*
|
|
||||||
* Authors:
|
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
|
||||||
*
|
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
|
||||||
* the COPYING file in the top-level directory.
|
|
||||||
*
|
|
||||||
* Copyright IBM, Corp. 2009
|
* Copyright IBM, Corp. 2009
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
|
|
7
qint.c
7
qint.c
|
@ -1,14 +1,15 @@
|
||||||
/*
|
/*
|
||||||
* QInt data type.
|
* QInt Module
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Red Hat Inc.
|
* Copyright (C) 2009 Red Hat Inc.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
*
|
*
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
* the COPYING file in the top-level directory.
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "qint.h"
|
#include "qint.h"
|
||||||
#include "qobject.h"
|
#include "qobject.h"
|
||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
|
|
12
qint.h
12
qint.h
|
@ -1,3 +1,15 @@
|
||||||
|
/*
|
||||||
|
* QInt Module
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Red Hat Inc.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef QINT_H
|
#ifndef QINT_H
|
||||||
#define QINT_H
|
#define QINT_H
|
||||||
|
|
||||||
|
|
7
qlist.c
7
qlist.c
|
@ -1,14 +1,15 @@
|
||||||
/*
|
/*
|
||||||
* QList data type.
|
* QList Module
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Red Hat Inc.
|
* Copyright (C) 2009 Red Hat Inc.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
*
|
*
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
* the COPYING file in the top-level directory.
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "qlist.h"
|
#include "qlist.h"
|
||||||
#include "qobject.h"
|
#include "qobject.h"
|
||||||
#include "qemu-queue.h"
|
#include "qemu-queue.h"
|
||||||
|
|
7
qlist.h
7
qlist.h
|
@ -1,14 +1,15 @@
|
||||||
/*
|
/*
|
||||||
* QList data type header.
|
* QList Module
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Red Hat Inc.
|
* Copyright (C) 2009 Red Hat Inc.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
*
|
*
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
* the COPYING file in the top-level directory.
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef QLIST_H
|
#ifndef QLIST_H
|
||||||
#define QLIST_H
|
#define QLIST_H
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
*
|
*
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
* the COPYING file in the top-level directory.
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*
|
*
|
||||||
* QObject Reference Counts Terminology
|
* QObject Reference Counts Terminology
|
||||||
* ------------------------------------
|
* ------------------------------------
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
/*
|
/*
|
||||||
* QString data type.
|
* QString Module
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Red Hat Inc.
|
* Copyright (C) 2009 Red Hat Inc.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Luiz Capitulino <lcapitulino@redhat.com>
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
*
|
*
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2. See
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
* the COPYING file in the top-level directory.
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "qobject.h"
|
#include "qobject.h"
|
||||||
#include "qstring.h"
|
#include "qstring.h"
|
||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
|
|
12
qstring.h
12
qstring.h
|
@ -1,3 +1,15 @@
|
||||||
|
/*
|
||||||
|
* QString Module
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Red Hat Inc.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Luiz Capitulino <lcapitulino@redhat.com>
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
||||||
|
* See the COPYING.LIB file in the top-level directory.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef QSTRING_H
|
#ifndef QSTRING_H
|
||||||
#define QSTRING_H
|
#define QSTRING_H
|
||||||
|
|
||||||
|
|
9
sysemu.h
9
sysemu.h
|
@ -45,11 +45,9 @@ void cpu_disable_ticks(void);
|
||||||
void qemu_system_reset_request(void);
|
void qemu_system_reset_request(void);
|
||||||
void qemu_system_shutdown_request(void);
|
void qemu_system_shutdown_request(void);
|
||||||
void qemu_system_powerdown_request(void);
|
void qemu_system_powerdown_request(void);
|
||||||
void qemu_system_exit_request(void);
|
|
||||||
int qemu_shutdown_requested(void);
|
int qemu_shutdown_requested(void);
|
||||||
int qemu_reset_requested(void);
|
int qemu_reset_requested(void);
|
||||||
int qemu_powerdown_requested(void);
|
int qemu_powerdown_requested(void);
|
||||||
int qemu_exit_requested(void);
|
|
||||||
extern qemu_irq qemu_system_powerdown;
|
extern qemu_irq qemu_system_powerdown;
|
||||||
void qemu_system_reset(void);
|
void qemu_system_reset(void);
|
||||||
|
|
||||||
|
@ -130,6 +128,7 @@ extern int max_cpus;
|
||||||
extern int cursor_hide;
|
extern int cursor_hide;
|
||||||
extern int graphic_rotate;
|
extern int graphic_rotate;
|
||||||
extern int no_quit;
|
extern int no_quit;
|
||||||
|
extern int no_shutdown;
|
||||||
extern int semihosting_enabled;
|
extern int semihosting_enabled;
|
||||||
extern int old_param;
|
extern int old_param;
|
||||||
extern int boot_menu;
|
extern int boot_menu;
|
||||||
|
@ -201,12 +200,10 @@ extern DriveInfo *drive_init(QemuOpts *arg, void *machine, int *fatal_error);
|
||||||
DriveInfo *add_init_drive(const char *opts);
|
DriveInfo *add_init_drive(const char *opts);
|
||||||
|
|
||||||
/* pci-hotplug */
|
/* pci-hotplug */
|
||||||
void pci_device_hot_add_print(Monitor *mon, const QObject *data);
|
void pci_device_hot_add(Monitor *mon, const QDict *qdict);
|
||||||
int pci_device_hot_add(Monitor *mon, const QDict *qdict, QObject **ret_data);
|
|
||||||
void drive_hot_add(Monitor *mon, const QDict *qdict);
|
void drive_hot_add(Monitor *mon, const QDict *qdict);
|
||||||
int pci_device_hot_remove(Monitor *mon, const char *pci_addr);
|
int pci_device_hot_remove(Monitor *mon, const char *pci_addr);
|
||||||
int do_pci_device_hot_remove(Monitor *mon, const QDict *qdict,
|
void do_pci_device_hot_remove(Monitor *mon, const QDict *qdict);
|
||||||
QObject **ret_data);
|
|
||||||
|
|
||||||
/* serial ports */
|
/* serial ports */
|
||||||
|
|
||||||
|
|
18
vl.c
18
vl.c
|
@ -1708,7 +1708,6 @@ static int shutdown_requested;
|
||||||
static int powerdown_requested;
|
static int powerdown_requested;
|
||||||
int debug_requested;
|
int debug_requested;
|
||||||
int vmstop_requested;
|
int vmstop_requested;
|
||||||
static int exit_requested;
|
|
||||||
|
|
||||||
int qemu_shutdown_requested(void)
|
int qemu_shutdown_requested(void)
|
||||||
{
|
{
|
||||||
|
@ -1731,12 +1730,6 @@ int qemu_powerdown_requested(void)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int qemu_exit_requested(void)
|
|
||||||
{
|
|
||||||
/* just return it, we'll exit() anyway */
|
|
||||||
return exit_requested;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int qemu_debug_requested(void)
|
static int qemu_debug_requested(void)
|
||||||
{
|
{
|
||||||
int r = debug_requested;
|
int r = debug_requested;
|
||||||
|
@ -1807,12 +1800,6 @@ void qemu_system_powerdown_request(void)
|
||||||
qemu_notify_event();
|
qemu_notify_event();
|
||||||
}
|
}
|
||||||
|
|
||||||
void qemu_system_exit_request(void)
|
|
||||||
{
|
|
||||||
exit_requested = 1;
|
|
||||||
qemu_notify_event();
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
static void host_main_loop_wait(int *timeout)
|
static void host_main_loop_wait(int *timeout)
|
||||||
{
|
{
|
||||||
|
@ -1949,8 +1936,6 @@ static int vm_can_run(void)
|
||||||
return 0;
|
return 0;
|
||||||
if (debug_requested)
|
if (debug_requested)
|
||||||
return 0;
|
return 0;
|
||||||
if (exit_requested)
|
|
||||||
return 0;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2003,9 +1988,6 @@ static void main_loop(void)
|
||||||
if ((r = qemu_vmstop_requested())) {
|
if ((r = qemu_vmstop_requested())) {
|
||||||
vm_stop(r);
|
vm_stop(r);
|
||||||
}
|
}
|
||||||
if (qemu_exit_requested()) {
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
pause_all_vcpus();
|
pause_all_vcpus();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue