mirror of https://github.com/xqemu/xqemu.git
qapi event: convert BALLOON_CHANGE
Signed-off-by: Wenchao Xia <wenchaoqemu@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
parent
5f41fbba90
commit
aef9d3115f
13
balloon.c
13
balloon.c
|
@ -81,19 +81,6 @@ static int qemu_balloon_status(BalloonInfo *info)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void qemu_balloon_changed(int64_t actual)
|
|
||||||
{
|
|
||||||
QObject *data;
|
|
||||||
|
|
||||||
data = qobject_from_jsonf("{ 'actual': %" PRId64 " }",
|
|
||||||
actual);
|
|
||||||
|
|
||||||
monitor_protocol_event(QEVENT_BALLOON_CHANGE, data);
|
|
||||||
|
|
||||||
qobject_decref(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BalloonInfo *qmp_query_balloon(Error **errp)
|
BalloonInfo *qmp_query_balloon(Error **errp)
|
||||||
{
|
{
|
||||||
BalloonInfo *info;
|
BalloonInfo *info;
|
||||||
|
|
|
@ -1,23 +1,6 @@
|
||||||
QEMU Machine Protocol Events
|
QEMU Machine Protocol Events
|
||||||
============================
|
============================
|
||||||
|
|
||||||
BALLOON_CHANGE
|
|
||||||
--------------
|
|
||||||
|
|
||||||
Emitted when the guest changes the actual BALLOON level. This
|
|
||||||
value is equivalent to the 'actual' field return by the
|
|
||||||
'query-balloon' command
|
|
||||||
|
|
||||||
Data:
|
|
||||||
|
|
||||||
- "actual": actual level of the guest memory balloon in bytes (json-number)
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
{ "event": "BALLOON_CHANGE",
|
|
||||||
"data": { "actual": 944766976 },
|
|
||||||
"timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
|
|
||||||
|
|
||||||
GUEST_PANICKED
|
GUEST_PANICKED
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "sysemu/kvm.h"
|
#include "sysemu/kvm.h"
|
||||||
#include "exec/address-spaces.h"
|
#include "exec/address-spaces.h"
|
||||||
#include "qapi/visitor.h"
|
#include "qapi/visitor.h"
|
||||||
|
#include "qapi-event.h"
|
||||||
|
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
@ -289,8 +290,9 @@ static void virtio_balloon_set_config(VirtIODevice *vdev,
|
||||||
memcpy(&config, config_data, sizeof(struct virtio_balloon_config));
|
memcpy(&config, config_data, sizeof(struct virtio_balloon_config));
|
||||||
dev->actual = le32_to_cpu(config.actual);
|
dev->actual = le32_to_cpu(config.actual);
|
||||||
if (dev->actual != oldactual) {
|
if (dev->actual != oldactual) {
|
||||||
qemu_balloon_changed(ram_size -
|
qapi_event_send_balloon_change(ram_size -
|
||||||
((ram_addr_t) dev->actual << VIRTIO_BALLOON_PFN_SHIFT));
|
((ram_addr_t) dev->actual << VIRTIO_BALLOON_PFN_SHIFT),
|
||||||
|
&error_abort);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,4 @@ int qemu_add_balloon_handler(QEMUBalloonEvent *event_func,
|
||||||
QEMUBalloonStatus *stat_func, void *opaque);
|
QEMUBalloonStatus *stat_func, void *opaque);
|
||||||
void qemu_remove_balloon_handler(void *opaque);
|
void qemu_remove_balloon_handler(void *opaque);
|
||||||
|
|
||||||
void qemu_balloon_changed(int64_t actual);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -616,6 +616,7 @@ static void monitor_qapi_event_init(void)
|
||||||
/* Limit guest-triggerable events to 1 per second */
|
/* Limit guest-triggerable events to 1 per second */
|
||||||
monitor_qapi_event_throttle(QAPI_EVENT_RTC_CHANGE, 1000);
|
monitor_qapi_event_throttle(QAPI_EVENT_RTC_CHANGE, 1000);
|
||||||
monitor_qapi_event_throttle(QAPI_EVENT_WATCHDOG, 1000);
|
monitor_qapi_event_throttle(QAPI_EVENT_WATCHDOG, 1000);
|
||||||
|
monitor_qapi_event_throttle(QAPI_EVENT_BALLOON_CHANGE, 1000);
|
||||||
|
|
||||||
qmp_event_set_func_emit(monitor_qapi_event_queue);
|
qmp_event_set_func_emit(monitor_qapi_event_queue);
|
||||||
}
|
}
|
||||||
|
@ -742,8 +743,6 @@ monitor_protocol_event_throttle(MonitorEvent event,
|
||||||
* and initialize state */
|
* and initialize state */
|
||||||
static void monitor_protocol_event_init(void)
|
static void monitor_protocol_event_init(void)
|
||||||
{
|
{
|
||||||
/* Limit RTC & BALLOON events to 1 per second */
|
|
||||||
monitor_protocol_event_throttle(QEVENT_BALLOON_CHANGE, 1000);
|
|
||||||
/* limit the rate of quorum events to avoid hammering the management */
|
/* limit the rate of quorum events to avoid hammering the management */
|
||||||
monitor_protocol_event_throttle(QEVENT_QUORUM_REPORT_BAD, 1000);
|
monitor_protocol_event_throttle(QEVENT_QUORUM_REPORT_BAD, 1000);
|
||||||
monitor_protocol_event_throttle(QEVENT_QUORUM_FAILURE, 1000);
|
monitor_protocol_event_throttle(QEVENT_QUORUM_FAILURE, 1000);
|
||||||
|
|
|
@ -253,3 +253,16 @@
|
||||||
##
|
##
|
||||||
{ 'event': 'ACPI_DEVICE_OST',
|
{ 'event': 'ACPI_DEVICE_OST',
|
||||||
'data': { 'info': 'ACPIOSTInfo' } }
|
'data': { 'info': 'ACPIOSTInfo' } }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @BALLOON_CHANGE
|
||||||
|
#
|
||||||
|
# Emitted when the guest changes the actual BALLOON level. This value is
|
||||||
|
# equivalent to the @actual field return by the 'query-balloon' command
|
||||||
|
#
|
||||||
|
# @actual: actual level of the guest memory balloon in bytes
|
||||||
|
#
|
||||||
|
# Since: 1.2
|
||||||
|
##
|
||||||
|
{ 'event': 'BALLOON_CHANGE',
|
||||||
|
'data': { 'actual': 'int' } }
|
||||||
|
|
Loading…
Reference in New Issue