From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=60038 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q8Ich-0003RH-HC for qemu-devel@nongnu.org; Fri, 08 Apr 2011 16:49:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q8Ice-0000rS-9h for qemu-devel@nongnu.org; Fri, 08 Apr 2011 16:49:43 -0400 Received: from mail-vw0-f45.google.com ([209.85.212.45]:61461) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q8Ice-0000qw-2A for qemu-devel@nongnu.org; Fri, 08 Apr 2011 16:49:40 -0400 Received: by vws17 with SMTP id 17so3462580vws.4 for ; Fri, 08 Apr 2011 13:49:39 -0700 (PDT) MIME-Version: 1.0 From: Blue Swirl Date: Fri, 8 Apr 2011 23:49:19 +0300 Message-ID: Content-Type: multipart/mixed; boundary=0016e64608e850564104a06e5db7 Subject: [Qemu-devel] [PATCH 09/11] Introduce emulator state v2 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --0016e64608e850564104a06e5db7 Content-Type: text/plain; charset=UTF-8 Move all state related to current VM to emulator-state.h. Move a few migration related function declarations to migration.h. Signed-off-by: Blue Swirl --- emulator-state.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ sysemu.h | 42 +----------------------------------------- 2 files changed, 53 insertions(+), 41 deletions(-) create mode 100644 emulator-state.h diff --git a/emulator-state.h b/emulator-state.h new file mode 100644 index 0000000..4609382 --- /dev/null +++ b/emulator-state.h @@ -0,0 +1,52 @@ +#ifndef QEMU_EMULATOR_STATE_H +#define QEMU_EMULATOR_STATE_H +/* + * Emulator state: All state related to current VM. Usually not guest + * visible except for PV. + */ + +#include "qdict.h" + +extern int vm_running; + +typedef struct vm_change_state_entry VMChangeStateEntry; +typedef void VMChangeStateHandler(void *opaque, int running, int reason); + +VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb, + void *opaque); +void qemu_del_vm_change_state_handler(VMChangeStateEntry *e); + +#define VMSTOP_USER 0 +#define VMSTOP_DEBUG 1 +#define VMSTOP_SHUTDOWN 2 +#define VMSTOP_DISKFULL 3 +#define VMSTOP_WATCHDOG 4 +#define VMSTOP_PANIC 5 +#define VMSTOP_SAVEVM 6 +#define VMSTOP_LOADVM 7 +#define VMSTOP_MIGRATE 8 + +void vm_start(void); +void vm_stop(int reason); + +void qemu_system_vmstop_request(int reason); + +void do_savevm(Monitor *mon, const QDict *qdict); +int load_vmstate(const char *name); +void do_delvm(Monitor *mon, const QDict *qdict); +void do_info_snapshots(Monitor *mon); + +void qemu_announce_self(void); + +void main_loop_wait(int nonblocking); + +bool qemu_savevm_state_blocked(Monitor *mon); +int qemu_savevm_state_begin(Monitor *mon, QEMUFile *f, int blk_enable, + int shared); +int qemu_savevm_state_iterate(Monitor *mon, QEMUFile *f); +int qemu_savevm_state_complete(Monitor *mon, QEMUFile *f); +void qemu_savevm_state_cancel(Monitor *mon, QEMUFile *f); +int qemu_loadvm_state(QEMUFile *f); + +extern int autostart; +#endif diff --git a/sysemu.h b/sysemu.h index 4bd1543..2d7a476 100644 --- a/sysemu.h +++ b/sysemu.h @@ -8,40 +8,18 @@ #include "qemu-timer.h" #include "notify.h" #include "host-state.h" +#include "emulator-state.h" /* vl.c */ extern const char *bios_name; - -extern int vm_running; extern uint8_t qemu_uuid[]; int qemu_uuid_parse(const char *str, uint8_t *uuid); #define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx" -typedef struct vm_change_state_entry VMChangeStateEntry; -typedef void VMChangeStateHandler(void *opaque, int running, int reason); - -VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb, - void *opaque); -void qemu_del_vm_change_state_handler(VMChangeStateEntry *e); - -#define VMSTOP_USER 0 -#define VMSTOP_DEBUG 1 -#define VMSTOP_SHUTDOWN 2 -#define VMSTOP_DISKFULL 3 -#define VMSTOP_WATCHDOG 4 -#define VMSTOP_PANIC 5 -#define VMSTOP_SAVEVM 6 -#define VMSTOP_LOADVM 7 -#define VMSTOP_MIGRATE 8 - -void vm_start(void); -void vm_stop(int reason); - void qemu_system_reset_request(void); void qemu_system_shutdown_request(void); void qemu_system_powerdown_request(void); void qemu_system_debug_request(void); -void qemu_system_vmstop_request(int reason); int qemu_shutdown_requested(void); int qemu_reset_requested(void); int qemu_powerdown_requested(void); @@ -50,24 +28,6 @@ void qemu_system_reset(void); void qemu_add_machine_init_done_notifier(Notifier *notify); -void do_savevm(Monitor *mon, const QDict *qdict); -int load_vmstate(const char *name); -void do_delvm(Monitor *mon, const QDict *qdict); -void do_info_snapshots(Monitor *mon); - -void qemu_announce_self(void); - -void main_loop_wait(int nonblocking); - -bool qemu_savevm_state_blocked(Monitor *mon); -int qemu_savevm_state_begin(Monitor *mon, QEMUFile *f, int blk_enable, - int shared); -int qemu_savevm_state_iterate(Monitor *mon, QEMUFile *f); -int qemu_savevm_state_complete(Monitor *mon, QEMUFile *f); -void qemu_savevm_state_cancel(Monitor *mon, QEMUFile *f); -int qemu_loadvm_state(QEMUFile *f); - -extern int autostart; extern int bios_size; typedef enum { -- 1.7.2.5 --0016e64608e850564104a06e5db7 Content-Type: text/x-diff; charset=US-ASCII; name="0009-Introduce-emulator-state-v2.patch" Content-Disposition: attachment; filename="0009-Introduce-emulator-state-v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gm9l8wpx0 RnJvbSAxNDE3ZWI1NTViMzU5MGI3Mjc1MGU5MzRiNDc2MjhmNTlkNDBjMjk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8MTQxN2ViNTU1YjM1OTBiNzI3NTBlOTM0YjQ3NjI4 ZjU5ZDQwYzI5Ni4xMzAyMjk1NDE4LmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNvbT4KSW4tUmVwbHkt VG86IDw2YTE3NDhjNTg3ZDM0YjBjZTM3NDg4NTk2YzY4YzRhZWU1OGE0NjM4LjEzMDIyOTU0MTgu Z2l0LmJsYXV3aXJiZWxAZ21haWwuY29tPgpSZWZlcmVuY2VzOiA8NmExNzQ4YzU4N2QzNGIwY2Uz NzQ4ODU5NmM2OGM0YWVlNThhNDYzOC4xMzAyMjk1NDE4LmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNv bT4KRnJvbTogQmx1ZSBTd2lybCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMjYg TWFyIDIwMTEgMTU6NTk6MzcgKzAwMDAKU3ViamVjdDogW1BBVENIIDA5LzExXSBJbnRyb2R1Y2Ug ZW11bGF0b3Igc3RhdGUgdjIKCk1vdmUgYWxsIHN0YXRlIHJlbGF0ZWQgdG8gY3VycmVudCBWTSB0 byBlbXVsYXRvci1zdGF0ZS5oLiBNb3ZlIGEgZmV3Cm1pZ3JhdGlvbiByZWxhdGVkIGZ1bmN0aW9u IGRlY2xhcmF0aW9ucyB0byBtaWdyYXRpb24uaC4KClNpZ25lZC1vZmYtYnk6IEJsdWUgU3dpcmwg PGJsYXV3aXJiZWxAZ21haWwuY29tPgotLS0KIGVtdWxhdG9yLXN0YXRlLmggfCAgIDUyICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHN5c2VtdS5o ICAgICAgICAgfCAgIDQyICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBlbXVsYXRvci1zdGF0ZS5oCgpkaWZmIC0tZ2l0IGEvZW11bGF0b3It c3RhdGUuaCBiL2VtdWxhdG9yLXN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNDYwOTM4MgotLS0gL2Rldi9udWxsCisrKyBiL2VtdWxhdG9yLXN0YXRlLmgKQEAgLTAs MCArMSw1MiBAQAorI2lmbmRlZiBRRU1VX0VNVUxBVE9SX1NUQVRFX0gKKyNkZWZpbmUgUUVNVV9F TVVMQVRPUl9TVEFURV9ICisvKgorICogRW11bGF0b3Igc3RhdGU6IEFsbCBzdGF0ZSByZWxhdGVk IHRvIGN1cnJlbnQgVk0uIFVzdWFsbHkgbm90IGd1ZXN0CisgKiB2aXNpYmxlIGV4Y2VwdCBmb3Ig UFYuCisgKi8KKworI2luY2x1ZGUgInFkaWN0LmgiCisKK2V4dGVybiBpbnQgdm1fcnVubmluZzsK KwordHlwZWRlZiBzdHJ1Y3Qgdm1fY2hhbmdlX3N0YXRlX2VudHJ5IFZNQ2hhbmdlU3RhdGVFbnRy eTsKK3R5cGVkZWYgdm9pZCBWTUNoYW5nZVN0YXRlSGFuZGxlcih2b2lkICpvcGFxdWUsIGludCBy dW5uaW5nLCBpbnQgcmVhc29uKTsKKworVk1DaGFuZ2VTdGF0ZUVudHJ5ICpxZW11X2FkZF92bV9j aGFuZ2Vfc3RhdGVfaGFuZGxlcihWTUNoYW5nZVN0YXRlSGFuZGxlciAqY2IsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm9wYXF1ZSk7 Cit2b2lkIHFlbXVfZGVsX3ZtX2NoYW5nZV9zdGF0ZV9oYW5kbGVyKFZNQ2hhbmdlU3RhdGVFbnRy eSAqZSk7CisKKyNkZWZpbmUgVk1TVE9QX1VTRVIgICAgICAwCisjZGVmaW5lIFZNU1RPUF9ERUJV RyAgICAgMQorI2RlZmluZSBWTVNUT1BfU0hVVERPV04gIDIKKyNkZWZpbmUgVk1TVE9QX0RJU0tG VUxMICAzCisjZGVmaW5lIFZNU1RPUF9XQVRDSERPRyAgNAorI2RlZmluZSBWTVNUT1BfUEFOSUMg ICAgIDUKKyNkZWZpbmUgVk1TVE9QX1NBVkVWTSAgICA2CisjZGVmaW5lIFZNU1RPUF9MT0FEVk0g ICAgNworI2RlZmluZSBWTVNUT1BfTUlHUkFURSAgIDgKKwordm9pZCB2bV9zdGFydCh2b2lkKTsK K3ZvaWQgdm1fc3RvcChpbnQgcmVhc29uKTsKKwordm9pZCBxZW11X3N5c3RlbV92bXN0b3BfcmVx dWVzdChpbnQgcmVhc29uKTsKKwordm9pZCBkb19zYXZldm0oTW9uaXRvciAqbW9uLCBjb25zdCBR RGljdCAqcWRpY3QpOworaW50IGxvYWRfdm1zdGF0ZShjb25zdCBjaGFyICpuYW1lKTsKK3ZvaWQg ZG9fZGVsdm0oTW9uaXRvciAqbW9uLCBjb25zdCBRRGljdCAqcWRpY3QpOwordm9pZCBkb19pbmZv X3NuYXBzaG90cyhNb25pdG9yICptb24pOworCit2b2lkIHFlbXVfYW5ub3VuY2Vfc2VsZih2b2lk KTsKKwordm9pZCBtYWluX2xvb3Bfd2FpdChpbnQgbm9uYmxvY2tpbmcpOworCitib29sIHFlbXVf c2F2ZXZtX3N0YXRlX2Jsb2NrZWQoTW9uaXRvciAqbW9uKTsKK2ludCBxZW11X3NhdmV2bV9zdGF0 ZV9iZWdpbihNb25pdG9yICptb24sIFFFTVVGaWxlICpmLCBpbnQgYmxrX2VuYWJsZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhcmVkKTsKK2ludCBxZW11X3NhdmV2bV9zdGF0 ZV9pdGVyYXRlKE1vbml0b3IgKm1vbiwgUUVNVUZpbGUgKmYpOworaW50IHFlbXVfc2F2ZXZtX3N0 YXRlX2NvbXBsZXRlKE1vbml0b3IgKm1vbiwgUUVNVUZpbGUgKmYpOwordm9pZCBxZW11X3NhdmV2 bV9zdGF0ZV9jYW5jZWwoTW9uaXRvciAqbW9uLCBRRU1VRmlsZSAqZik7CitpbnQgcWVtdV9sb2Fk dm1fc3RhdGUoUUVNVUZpbGUgKmYpOworCitleHRlcm4gaW50IGF1dG9zdGFydDsKKyNlbmRpZgpk aWZmIC0tZ2l0IGEvc3lzZW11LmggYi9zeXNlbXUuaAppbmRleCA0YmQxNTQzLi4yZDdhNDc2IDEw MDY0NAotLS0gYS9zeXNlbXUuaAorKysgYi9zeXNlbXUuaApAQCAtOCw0MCArOCwxOCBAQAogI2lu Y2x1ZGUgInFlbXUtdGltZXIuaCIKICNpbmNsdWRlICJub3RpZnkuaCIKICNpbmNsdWRlICJob3N0 LXN0YXRlLmgiCisjaW5jbHVkZSAiZW11bGF0b3Itc3RhdGUuaCIKIAogLyogdmwuYyAqLwogZXh0 ZXJuIGNvbnN0IGNoYXIgKmJpb3NfbmFtZTsKLQotZXh0ZXJuIGludCB2bV9ydW5uaW5nOwogZXh0 ZXJuIHVpbnQ4X3QgcWVtdV91dWlkW107CiBpbnQgcWVtdV91dWlkX3BhcnNlKGNvbnN0IGNoYXIg KnN0ciwgdWludDhfdCAqdXVpZCk7CiAjZGVmaW5lIFVVSURfRk1UICIlMDJoaHglMDJoaHglMDJo aHglMDJoaHgtJTAyaGh4JTAyaGh4LSUwMmhoeCUwMmhoeC0lMDJoaHglMDJoaHgtJTAyaGh4JTAy aGh4JTAyaGh4JTAyaGh4JTAyaGh4JTAyaGh4IgogCi10eXBlZGVmIHN0cnVjdCB2bV9jaGFuZ2Vf c3RhdGVfZW50cnkgVk1DaGFuZ2VTdGF0ZUVudHJ5OwotdHlwZWRlZiB2b2lkIFZNQ2hhbmdlU3Rh dGVIYW5kbGVyKHZvaWQgKm9wYXF1ZSwgaW50IHJ1bm5pbmcsIGludCByZWFzb24pOwotCi1WTUNo YW5nZVN0YXRlRW50cnkgKnFlbXVfYWRkX3ZtX2NoYW5nZV9zdGF0ZV9oYW5kbGVyKFZNQ2hhbmdl U3RhdGVIYW5kbGVyICpjYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlKTsKLXZvaWQgcWVtdV9kZWxfdm1fY2hhbmdlX3N0 YXRlX2hhbmRsZXIoVk1DaGFuZ2VTdGF0ZUVudHJ5ICplKTsKLQotI2RlZmluZSBWTVNUT1BfVVNF UiAgICAgIDAKLSNkZWZpbmUgVk1TVE9QX0RFQlVHICAgICAxCi0jZGVmaW5lIFZNU1RPUF9TSFVU RE9XTiAgMgotI2RlZmluZSBWTVNUT1BfRElTS0ZVTEwgIDMKLSNkZWZpbmUgVk1TVE9QX1dBVENI RE9HICA0Ci0jZGVmaW5lIFZNU1RPUF9QQU5JQyAgICAgNQotI2RlZmluZSBWTVNUT1BfU0FWRVZN ICAgIDYKLSNkZWZpbmUgVk1TVE9QX0xPQURWTSAgICA3Ci0jZGVmaW5lIFZNU1RPUF9NSUdSQVRF ICAgOAotCi12b2lkIHZtX3N0YXJ0KHZvaWQpOwotdm9pZCB2bV9zdG9wKGludCByZWFzb24pOwot CiB2b2lkIHFlbXVfc3lzdGVtX3Jlc2V0X3JlcXVlc3Qodm9pZCk7CiB2b2lkIHFlbXVfc3lzdGVt X3NodXRkb3duX3JlcXVlc3Qodm9pZCk7CiB2b2lkIHFlbXVfc3lzdGVtX3Bvd2VyZG93bl9yZXF1 ZXN0KHZvaWQpOwogdm9pZCBxZW11X3N5c3RlbV9kZWJ1Z19yZXF1ZXN0KHZvaWQpOwotdm9pZCBx ZW11X3N5c3RlbV92bXN0b3BfcmVxdWVzdChpbnQgcmVhc29uKTsKIGludCBxZW11X3NodXRkb3du X3JlcXVlc3RlZCh2b2lkKTsKIGludCBxZW11X3Jlc2V0X3JlcXVlc3RlZCh2b2lkKTsKIGludCBx ZW11X3Bvd2VyZG93bl9yZXF1ZXN0ZWQodm9pZCk7CkBAIC01MCwyNCArMjgsNiBAQCB2b2lkIHFl bXVfc3lzdGVtX3Jlc2V0KHZvaWQpOwogCiB2b2lkIHFlbXVfYWRkX21hY2hpbmVfaW5pdF9kb25l X25vdGlmaWVyKE5vdGlmaWVyICpub3RpZnkpOwogCi12b2lkIGRvX3NhdmV2bShNb25pdG9yICpt b24sIGNvbnN0IFFEaWN0ICpxZGljdCk7Ci1pbnQgbG9hZF92bXN0YXRlKGNvbnN0IGNoYXIgKm5h bWUpOwotdm9pZCBkb19kZWx2bShNb25pdG9yICptb24sIGNvbnN0IFFEaWN0ICpxZGljdCk7Ci12 b2lkIGRvX2luZm9fc25hcHNob3RzKE1vbml0b3IgKm1vbik7Ci0KLXZvaWQgcWVtdV9hbm5vdW5j ZV9zZWxmKHZvaWQpOwotCi12b2lkIG1haW5fbG9vcF93YWl0KGludCBub25ibG9ja2luZyk7Ci0K LWJvb2wgcWVtdV9zYXZldm1fc3RhdGVfYmxvY2tlZChNb25pdG9yICptb24pOwotaW50IHFlbXVf c2F2ZXZtX3N0YXRlX2JlZ2luKE1vbml0b3IgKm1vbiwgUUVNVUZpbGUgKmYsIGludCBibGtfZW5h YmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFyZWQpOwotaW50IHFlbXVf c2F2ZXZtX3N0YXRlX2l0ZXJhdGUoTW9uaXRvciAqbW9uLCBRRU1VRmlsZSAqZik7Ci1pbnQgcWVt dV9zYXZldm1fc3RhdGVfY29tcGxldGUoTW9uaXRvciAqbW9uLCBRRU1VRmlsZSAqZik7Ci12b2lk IHFlbXVfc2F2ZXZtX3N0YXRlX2NhbmNlbChNb25pdG9yICptb24sIFFFTVVGaWxlICpmKTsKLWlu dCBxZW11X2xvYWR2bV9zdGF0ZShRRU1VRmlsZSAqZik7Ci0KLWV4dGVybiBpbnQgYXV0b3N0YXJ0 OwogZXh0ZXJuIGludCBiaW9zX3NpemU7CiAKIHR5cGVkZWYgZW51bSB7Ci0tIAoxLjcuMi41Cgo= --0016e64608e850564104a06e5db7--