+ void (*suspend) (void *ind_vm_ws);
+ void (*resume) (void *ind_vm_ws);
+
+ void (*save) (void *ind_vm_ws);
+ void (*restore) (void *ind_vm_ws);
+
+ void (*migrate) (void *ind_vm_ws, void *ind_vm_ws_dest); // will be vm_ws_migrate()
+
+ int (*get_state) (void *ind_vm_ws);
+ void (*set_state) (void *ind_vm_ws, int state);
+
+ void * (*get_pm) (void *ind_vm_ws); // will be vm_ws_get_pm()
+
+ void (*set_vm_bound) (void *ind_vm_ws, double bound); // will be vm_ws_set_vm_bound()
+
+} s_surf_model_extension_vm_workstation_t;
+
+/** \ingroup SURF_models
+ * \brief Model types
+ *
+ * The type of the model object. For example, we will have two model objects
+ * of the surf cpu model. One is for physical machines, and the other is for
+ * virtual machines.
+ *
+ */
+typedef enum {
+ SURF_MODEL_TYPE_CPU = 0,
+ SURF_MODEL_TYPE_NETWORK,
+ SURF_MODEL_TYPE_STORAGE,
+ SURF_MODEL_TYPE_WORKSTATION,
+ SURF_MODEL_TYPE_VM_WORKSTATION,
+ SURF_MODEL_TYPE_NEW_MODEL
+} e_surf_model_type_t;