X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=migration.h;h=696618da06efc3024330024798d7d3dc59e57a2f;hb=36609a77c1d711dddfa0293e6c14073c99c839e0;hp=9947f6a45f2aa178cbe41b11a6f4637a3345ccfe;hpb=34c9dd8eea38e94d97e22ac12c2f2aaa0dca59d8;p=qemu diff --git a/migration.h b/migration.h index 9947f6a..696618d 100644 --- a/migration.h +++ b/migration.h @@ -14,6 +14,8 @@ #ifndef QEMU_MIGRATION_H #define QEMU_MIGRATION_H +#include "qemu-common.h" + #define MIG_STATE_ERROR -1 #define MIG_STATE_COMPLETED 0 #define MIG_STATE_CANCELLED 1 @@ -29,15 +31,37 @@ struct MigrationState void (*release)(MigrationState *s); }; +typedef struct FdMigrationState FdMigrationState; + +struct FdMigrationState +{ + MigrationState mig_state; + int64_t bandwidth_limit; + QEMUFile *file; + int fd; + Monitor *mon_resume; + int state; + int (*get_error)(struct FdMigrationState*); + int (*close)(struct FdMigrationState*); + int (*write)(struct FdMigrationState*, const void *, size_t); + void *opaque; +}; + void qemu_start_incoming_migration(const char *uri); -void do_migrate(int detach, const char *uri); +void do_migrate(Monitor *mon, int detach, const char *uri); + +void do_migrate_cancel(Monitor *mon); -void do_migrate_cancel(void); +void do_migrate_set_speed(Monitor *mon, const char *value); -void do_migrate_set_speed(const char *value); +void do_info_migrate(Monitor *mon); -void do_info_migrate(void); +int exec_start_incoming_migration(const char *host_port); + +MigrationState *exec_start_outgoing_migration(const char *host_port, + int64_t bandwidth_limit, + int detach); int tcp_start_incoming_migration(const char *host_port); @@ -45,5 +69,33 @@ MigrationState *tcp_start_outgoing_migration(const char *host_port, int64_t bandwidth_limit, int detach); -#endif +void migrate_fd_monitor_suspend(FdMigrationState *s); + +void migrate_fd_error(FdMigrationState *s); + +void migrate_fd_cleanup(FdMigrationState *s); +void migrate_fd_put_notify(void *opaque); + +ssize_t migrate_fd_put_buffer(void *opaque, const void *data, size_t size); + +void migrate_fd_connect(FdMigrationState *s); + +void migrate_fd_put_ready(void *opaque); + +int migrate_fd_get_status(MigrationState *mig_state); + +void migrate_fd_cancel(MigrationState *mig_state); + +void migrate_fd_release(MigrationState *mig_state); + +void migrate_fd_wait_for_unfreeze(void *opaque); + +int migrate_fd_close(void *opaque); + +static inline FdMigrationState *migrate_to_fms(MigrationState *mig_state) +{ + return container_of(mig_state, FdMigrationState, mig_state); +} + +#endif