} e_surf_process_on_failure_t;
+/* FIXME: Where should the VM state be defined? */
+typedef enum {
+ /* created, but not yet started */
+ SURF_VM_STATE_CREATED,
+
+ SURF_VM_STATE_RUNNING,
+ SURF_VM_STATE_MIGRATING,
+
+ /* Suspend/resume does not involve disk I/O, so we assume there is no transition states. */
+ SURF_VM_STATE_SUSPENDED,
+
+ /* Save/restore involves disk I/O, so there should be transition states. */
+ SURF_VM_STATE_SAVING,
+ SURF_VM_STATE_SAVED,
+ SURF_VM_STATE_RESTORING,
+
+} e_surf_vm_state_t;
+
+typedef struct ws_params {
+ int ncpus;
+ long ramsize;
+ int overcommit;
+
+ /* The size of other states than memory pages, which is out-of-scope of dirty
+ * page tracking. */
+ long devsize;
+ int skip_stage2;
+ double max_downtime;
+
+ double dp_rate;
+ double dp_cap;
+
+ /* set migration speed */
+ double mig_speed;
+} s_ws_params_t, *ws_params_t;
+
typedef struct tmgr_trace *tmgr_trace_t; /**< Opaque structure defining an availability trace */
/** opaque structure defining a event generator for availability based on a probability distribution */
double lat;
double bb_bw;
double bb_lat;
+ double loopback_bw;
+ double loopback_lat;
+ double limiter_link;
const char* router_id;
e_surf_link_sharing_policy_t sharing_policy;
e_surf_link_sharing_policy_t bb_sharing_policy;