X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/22b3e706eb926a52a50f895b3313e587a92ca0e5..8ba5ebec745c34478bd1082a07edcb76aab3aefb:/include/simgrid/platf.h diff --git a/include/simgrid/platf.h b/include/simgrid/platf.h index e67f56d1f4..68c26f3d63 100644 --- a/include/simgrid/platf.h +++ b/include/simgrid/platf.h @@ -9,9 +9,13 @@ #ifndef SG_PLATF_H #define SG_PLATF_H -#include /* our toolbox */ +#include typedef struct tmgr_trace *tmgr_trace_t; /**< Opaque structure defining an availability trace */ +XBT_PUBLIC(tmgr_trace_t) tmgr_trace_new(const char *filename); +XBT_PUBLIC(tmgr_trace_t) tmgr_trace_new_from_string(const char *id, + const char *input, + double periodicity); /** Defines whether a given resource is working or not */ typedef enum { @@ -19,6 +23,11 @@ typedef enum { 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; /* * Platform creation functions. Instead of passing 123 arguments to the creation functions @@ -31,45 +40,84 @@ typedef enum { */ typedef struct { - const char* V_host_id; //id - double V_host_power_peak; //power - int V_host_core; //core - double V_host_power_scale; //availability - tmgr_trace_t V_host_power_trace; //availability file - e_surf_resource_state_t V_host_state_initial; //state - tmgr_trace_t V_host_state_trace; //state file - const char* V_host_coord; + 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* V_router_id; - const char* V_router_coord; + const char* id; + const char* coord; } s_sg_platf_router_cbarg_t, *sg_platf_router_cbarg_t; typedef struct { - const char* V_link_id; - double V_link_bandwidth; - tmgr_trace_t V_link_bandwidth_file; - double V_link_latency; - tmgr_trace_t V_link_latency_file; - e_surf_resource_state_t V_link_state; - tmgr_trace_t V_link_state_file; - int V_link_sharing_policy; - int V_policy_initial_link; + 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; - -XBT_PUBLIC(void) sg_platf_open(void); // Start a new platform -XBT_PUBLIC(void) sg_platf_close(void); // Finish the creation of the platform - -XBT_PUBLIC(void) sg_platf_new_AS_open(const char *id, const char *mode); // Begin description of new AS -XBT_PUBLIC(void) sg_platf_new_AS_close(void); // That AS is fully described - -XBT_PUBLIC(void) sg_platf_new_host (sg_platf_host_cbarg_t host); // Add an host to the currently described AS -XBT_PUBLIC(void) sg_platf_new_router(sg_platf_router_cbarg_t router); // Add a router to the currently described AS -XBT_PUBLIC(void) sg_platf_new_link (sg_platf_link_cbarg_t link); // Add a link to the currently described AS +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; + const char *direction; +} s_sg_platf_linkctn_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; + + + +XBT_PUBLIC(void) sg_platf_begin(void); // Start a new platform +XBT_PUBLIC(void) sg_platf_end(void); // Finish the creation of the platform + +XBT_PUBLIC(void) sg_platf_new_AS_begin(const char *id, const char *mode); // Begin description of new AS +XBT_PUBLIC(void) sg_platf_new_AS_end(void); // That AS is fully described + +XBT_PUBLIC(void) sg_platf_new_host (sg_platf_host_cbarg_t host); // Add an host to the currently described AS +XBT_PUBLIC(void) sg_platf_new_router (sg_platf_router_cbarg_t router); // Add a router to the currently described AS +XBT_PUBLIC(void) sg_platf_new_link (sg_platf_link_cbarg_t link); // Add a link to the currently described AS +XBT_PUBLIC(void) sg_platf_new_peer (sg_platf_peer_cbarg_t peer); // Add a peer to the currently described AS +XBT_PUBLIC(void) sg_platf_new_cluster(sg_platf_cluster_cbarg_t clust); // Add a cluster to the currently described AS #endif /* SG_PLATF_H */