-/** Defines whether a given resource is working or not */
-typedef enum {
- SURF_RESOURCE_ON = 1, /**< Up & ready */
- SURF_RESOURCE_OFF = 0 /**< Down & broken */
-} e_surf_resource_state_t;
-
-typedef enum {
- SURF_LINK_FULLDUPLEX = 2,
- SURF_LINK_SHARED = 1,
- SURF_LINK_FATPIPE = 0
-} e_surf_link_sharing_policy_t;
-
-typedef enum {
- SURF_LINK_DIRECTION_NONE = 2,
- SURF_LINK_DIRECTION_UP = 1,
- SURF_LINK_DIRECTION_DOWN = 0
-} e_surf_link_ctn_direction_t;
-
-typedef enum {
- SURF_TRACE_CONNECT_KIND_HOST_AVAIL = 4,
- SURF_TRACE_CONNECT_KIND_POWER = 3,
- SURF_TRACE_CONNECT_KIND_LINK_AVAIL = 2,
- SURF_TRACE_CONNECT_KIND_BANDWIDTH = 1,
- SURF_TRACE_CONNECT_KIND_LATENCY = 0
-} e_surf_trace_connect_kin_t;
-
-typedef enum {
- SURF_PROCESS_ON_FAILURE_DIE = 1,
- SURF_PROCESS_ON_FAILURE_RESTART = 0
-} e_surf_process_on_failure_t;
-
-/*
- * Platform creation functions. Instead of passing 123 arguments to the creation functions
- * (one for each possible XML attribute), we pass structures containing them all. It removes the
- * chances of switching arguments by error, and reduce the burden when we add a new attribute:
- * old models can just continue to ignore it without having to update their headers.
- *
- * It shouldn't be too costly at runtime, provided that structures living on the stack are
- * used, instead of malloced structures.
- */
-
-typedef struct {
- const char* id;
- double power_peak;
- int core_amount;
- double power_scale;
- tmgr_trace_t power_trace;
- e_surf_resource_state_t initial_state;
- tmgr_trace_t state_trace;
- const char* coord;
- xbt_dict_t properties;
-} s_sg_platf_host_cbarg_t, *sg_platf_host_cbarg_t;
-
-typedef struct {
- const char* id;
- const char* link_up;
- const char* link_down;
-} s_sg_platf_host_link_cbarg_t, *sg_platf_host_link_cbarg_t;
-
-
-typedef struct {
- const char* id;
- const char* coord;
-} s_sg_platf_router_cbarg_t, *sg_platf_router_cbarg_t;
-
-typedef struct {
- const char* id;
- double bandwidth;
- tmgr_trace_t bandwidth_trace;
- double latency;
- tmgr_trace_t latency_trace;
- e_surf_resource_state_t state;
- tmgr_trace_t state_trace;
- e_surf_link_sharing_policy_t policy;
- xbt_dict_t properties;
-} s_sg_platf_link_cbarg_t, *sg_platf_link_cbarg_t;
-
-typedef struct s_sg_platf_peer_cbarg *sg_platf_peer_cbarg_t;
-typedef struct s_sg_platf_peer_cbarg {
- const char* id;
- double power;
- double bw_in;
- double bw_out;
- double lat;
- const char* coord;
- tmgr_trace_t availability_trace;
- tmgr_trace_t state_trace;
-} s_sg_platf_peer_cbarg_t;
-
-typedef struct s_sg_platf_linkctn_cbarg *sg_platf_linkctn_cbarg_t;
-typedef struct s_sg_platf_linkctn_cbarg {
- const char *id;
- e_surf_link_ctn_direction_t direction;
-} s_sg_platf_linkctn_cbarg_t;
-
-typedef struct s_sg_platf_route_cbarg *sg_platf_route_cbarg_t;
-typedef struct s_sg_platf_route_cbarg {
- int symmetrical;
- const char *src;
- const char *dst;
-} s_sg_platf_route_cbarg_t;
-
-typedef struct s_sg_platf_ASroute_cbarg *sg_platf_ASroute_cbarg_t;
-typedef struct s_sg_platf_ASroute_cbarg {
- int symmetrical;
- const char *src;
- const char *dst;
- const char *gw_src;
- const char *gw_dst;
-} s_sg_platf_ASroute_cbarg_t;
-
-typedef struct s_sg_platf_bypassRoute_cbarg *sg_platf_bypassRoute_cbarg_t;
-typedef struct s_sg_platf_bypassRoute_cbarg {
- const char *src;
- const char *dst;
-} s_sg_platf_bypassRoute_cbarg_t;
-
-typedef struct s_sg_platf_bypassASroute_cbarg *sg_platf_bypassASroute_cbarg_t;
-typedef struct s_sg_platf_bypassASroute_cbarg {
- const char *src;
- const char *dst;
- const char *gw_src;
- const char *gw_dst;
-} s_sg_platf_bypassASroute_cbarg_t;
-
-typedef struct s_sg_platf_cluster_cbarg *sg_platf_cluster_cbarg_t;
-typedef struct s_sg_platf_cluster_cbarg {
- const char* id;
- const char* prefix;
- const char* suffix;
- const char* radical;
- double power;
- int core_amount;
- double bw;
- double lat;
- double bb_bw;
- double bb_lat;
- const char* router_id;
- e_surf_link_sharing_policy_t sharing_policy;
- e_surf_link_sharing_policy_t bb_sharing_policy;
- const char* availability_trace; //don't convert to tmgr_trace_t since there is a trace per host and some rewriting is needed
- const char* state_trace;
-} s_sg_platf_cluster_cbarg_t;
-
-typedef struct s_sg_platf_cabinet_cbarg *sg_platf_cabinet_cbarg_t;
-typedef struct s_sg_platf_cabinet_cbarg {
- const char* id;
- const char* prefix;
- const char* suffix;
- const char* radical;
- double power;
- double bw;
- double lat;
-} s_sg_platf_cabinet_cbarg_t;
-
-typedef struct {
- const char* id;
- const char* type_id;
- const char* content;
-} s_sg_platf_storage_cbarg_t, *sg_platf_storage_cbarg_t;
-
-typedef struct {
- const char* id;
- const char* model;
- const char* content;
- xbt_dict_t properties;
- unsigned long size; /* size in Gbytes */
-} s_sg_platf_storage_type_cbarg_t, *sg_platf_storage_type_cbarg_t;
-
-typedef struct {
- const char* type_id;
- const char* name;
-} s_sg_platf_mstorage_cbarg_t, *sg_platf_mstorage_cbarg_t;
-
-typedef struct {
- const char* id;
- const char* name;
-} s_sg_platf_mount_cbarg_t, *sg_platf_mount_cbarg_t;
-
-typedef struct s_sg_platf_prop_cbarg *sg_platf_prop_cbarg_t;
-typedef struct s_sg_platf_prop_cbarg {
- const char *id;
- const char *value;
-} s_sg_platf_prop_cbarg_t;
-
-typedef struct s_sg_platf_trace_cbarg *sg_platf_trace_cbarg_t;
-typedef struct s_sg_platf_trace_cbarg {
- const char *id;
- const char *file;
- double periodicity;
- const char *pc_data;
-} s_sg_platf_trace_cbarg_t;
-
-typedef struct s_sg_platf_trace_connect_cbarg *sg_platf_trace_connect_cbarg_t;
-typedef struct s_sg_platf_trace_connect_cbarg {
- e_surf_trace_connect_kin_t kind;
- const char *trace;
- const char *element;
-} s_sg_platf_trace_connect_cbarg_t;
-
-typedef struct s_sg_platf_arg_cbarg *sg_platf_arg_cbarg_t;
-typedef struct s_sg_platf_arg_cbarg {
- const char *value;
-} s_sg_platf_arg_cbarg_t;
-
-typedef struct s_sg_platf_process_cbarg *sg_platf_process_cbarg_t;
-typedef struct s_sg_platf_process_cbarg {
- const char **argv;
- int argc;
- xbt_dict_t properties;
- const char *host;
- const char *function;
- double start_time;
- double kill_time;
- e_surf_process_on_failure_t on_failure;
-} s_sg_platf_process_cbarg_t;