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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Wenchao Xia
						Wenchao Xia