
Let the old man "MigrationState" join the object family. Direct benefit is that we can start to use all the property features derived from current QDev, like: HW_COMPAT_* bits, command line setup for migration parameters (so will never need to set them up each time using HMP/QMP, this is really, really attractive for test writters), etc. I see no reason to disallow this happen yet. So let's start from this one, to see whether it would be anything good. Now we init the MigrationState struct statically in main() to make sure it's initialized after global properties are applied, since we'll use them during creation of the object. No functional change at all. Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <1498536619-14548-5-git-send-email-peterx@redhat.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
59 lines
1.4 KiB
C
59 lines
1.4 KiB
C
/*
|
|
* QEMU migration miscellaneus exported functions
|
|
*
|
|
* Copyright IBM, Corp. 2008
|
|
*
|
|
* Authors:
|
|
* Anthony Liguori <aliguori@us.ibm.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2. See
|
|
* the COPYING file in the top-level directory.
|
|
*
|
|
*/
|
|
|
|
#ifndef MIGRATION_MISC_H
|
|
#define MIGRATION_MISC_H
|
|
|
|
#include "qemu/notify.h"
|
|
|
|
/* migration/ram.c */
|
|
|
|
void ram_mig_init(void);
|
|
|
|
/* migration/block.c */
|
|
|
|
#ifdef CONFIG_LIVE_BLOCK_MIGRATION
|
|
void blk_mig_init(void);
|
|
#else
|
|
static inline void blk_mig_init(void) {}
|
|
#endif
|
|
|
|
#define SELF_ANNOUNCE_ROUNDS 5
|
|
|
|
static inline
|
|
int64_t self_announce_delay(int round)
|
|
{
|
|
assert(round < SELF_ANNOUNCE_ROUNDS && round > 0);
|
|
/* delay 50ms, 150ms, 250ms, ... */
|
|
return 50 + (SELF_ANNOUNCE_ROUNDS - round - 1) * 100;
|
|
}
|
|
|
|
/* migration/savevm.c */
|
|
|
|
void dump_vmstate_json_to_file(FILE *out_fp);
|
|
void savevm_skip_section_footers(void);
|
|
void savevm_skip_configuration(void);
|
|
|
|
/* migration/migration.c */
|
|
void migration_object_init(void);
|
|
void qemu_start_incoming_migration(const char *uri, Error **errp);
|
|
bool migration_is_idle(void);
|
|
void add_migration_state_change_notifier(Notifier *notify);
|
|
void remove_migration_state_change_notifier(Notifier *notify);
|
|
bool migration_in_setup(MigrationState *);
|
|
bool migration_has_finished(MigrationState *);
|
|
bool migration_has_failed(MigrationState *);
|
|
/* ...and after the device transmission */
|
|
bool migration_in_postcopy_after_devices(MigrationState *);
|
|
#endif
|