*
* @section MSG_ex_apps Examples of full applications
*
- * - <b>token_ring/ring_call.c</b>: Classical token ring
- * communication, where a token is exchanged along a ring to reach
- * every participant.
+ * - <b>token_ring/token_bypass.c</b>: Classical token ring with a bypass deployment.
+ * A token is exchanged along a ring to reach every participant.
*
*/
sg_platf_begin();
sg_platf_new_AS_begin("AS0", A_surfxml_AS_routing_Full);
- s_sg_platf_host_cbarg_t bob;
- memset(&bob,0,sizeof(bob));
+ s_sg_platf_host_cbarg_t bob = SG_PLATF_HOST_INITIALIZER;
bob.id = "bob";
bob.power_peak = 98095000;
- bob.power_scale = 1.0;
- bob.core_amount = 1;
- bob.initial_state = A_surfxml_host_state_ON;
- bob.power_trace = NULL;
- bob.state_trace = NULL;
- bob.coord = NULL;
- bob.properties = NULL;
-
- s_sg_platf_host_cbarg_t alice;
- memset(&alice,0,sizeof(alice));
+ sg_platf_new_host(&bob);
+
+ s_sg_platf_host_cbarg_t alice = SG_PLATF_HOST_INITIALIZER;
alice.id = "alice";
alice.power_peak = 98095000;
- alice.power_scale = 1.0;
- alice.core_amount = 1;
- alice.initial_state = A_surfxml_host_state_ON;
- alice.power_trace = NULL;
- alice.state_trace = NULL;
- alice.coord = NULL;
- alice.properties = NULL;
-
- sg_platf_new_host(&bob);
sg_platf_new_host(&alice);
- s_sg_platf_link_cbarg_t link;
- memset(&link, 0, sizeof(link));
+ s_sg_platf_link_cbarg_t link = SG_PLATF_LINK_INITIALIZER;
link.id = "link1";
- link.state = A_surfxml_link_state_ON;
- link.policy = A_surfxml_link_sharing_policy_SHARED;
link.latency = 0.000278066;
link.bandwidth = 27946250;
sg_platf_new_link(&link);
- s_sg_platf_route_cbarg_t route;
- memset(&route,0,sizeof(route));
+ s_sg_platf_route_cbarg_t route= SG_PLATF_ROUTE_INITIALIZER;
route.src = "bob";
route.dst = "alice";
- route.symmetrical = FALSE;
- sg_platf_route_begin(&route);
- sg_platf_route_add_link("link1", &route);
- sg_platf_route_end(&route);
-
- route.src = "alice";
- route.dst = "bob";
sg_platf_route_begin(&route);
sg_platf_route_add_link("link1", &route);
sg_platf_route_end(&route);
xbt_dict_t properties;
} s_sg_platf_host_cbarg_t, *sg_platf_host_cbarg_t;
+#define SG_PLATF_HOST_INITIALIZER {\
+ .id = NULL, \
+ .power_peak = 0, \
+ .core_amount = 1., \
+ .power_scale = 1, \
+ .initial_state = A_surfxml_host_state_ON, \
+ .power_trace = NULL, \
+ .state_trace = NULL, \
+ .coord = NULL, \
+ .properties = NULL \
+ }
+
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;
+#define SG_PLATF_HOST_LINK_INITIALIZER {NULL,NULL,NULL}
typedef struct {
const char* id;
const char* coord;
} s_sg_platf_router_cbarg_t, *sg_platf_router_cbarg_t;
+#define SG_PLATF_ROUTER_INITIALIZER {NULL,NULL}
+
typedef struct {
const char* id;
double bandwidth;
xbt_dict_t properties;
} s_sg_platf_link_cbarg_t, *sg_platf_link_cbarg_t;
+#define SG_PLATF_LINK_INITIALIZER {\
+ .id = NULL,\
+ .bandwidth = 0.,\
+ .bandwidth_trace = NULL,\
+ .latency = 0.,\
+ .latency_trace = NULL,\
+ .state = A_surfxml_link_state_ON,\
+ .state_trace = NULL,\
+ .policy = A_surfxml_link_sharing_policy_SHARED,\
+ .properties = NULL\
+}
+
typedef struct s_sg_platf_peer_cbarg *sg_platf_peer_cbarg_t;
typedef struct s_sg_platf_peer_cbarg {
const char* id;
tmgr_trace_t state_trace;
} s_sg_platf_peer_cbarg_t;
+#define SG_PLATF_PEER_INITIALIZER {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}
+
typedef struct s_sg_platf_route_cbarg *sg_platf_route_cbarg_t;
typedef struct s_sg_platf_route_cbarg {
int symmetrical;
xbt_dynar_t link_list;
} s_sg_platf_route_cbarg_t;
+#define SG_PLATF_ROUTE_INITIALIZER {TRUE,NULL,NULL,NULL,NULL,NULL}
+
typedef struct s_sg_platf_cluster_cbarg *sg_platf_cluster_cbarg_t;
typedef struct s_sg_platf_cluster_cbarg {
const char* id;
const char* state_trace;
} s_sg_platf_cluster_cbarg_t;
+#define SG_PLATF_CLUSTER_INITIALIZER {NULL,NULL,NULL,NULL,NULL,NULL \
+ ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}
+
typedef struct s_sg_platf_cabinet_cbarg *sg_platf_cabinet_cbarg_t;
typedef struct s_sg_platf_cabinet_cbarg {
const char* id;
double lat;
} s_sg_platf_cabinet_cbarg_t;
+#define SG_PLATF_CABINET_INITIALIZER {NULL,NULL,NULL,NULL,NULL,NULL,NULL}
+
typedef struct {
const char* id;
const char* type_id;
const char* content;
} s_sg_platf_storage_cbarg_t, *sg_platf_storage_cbarg_t;
+#define SG_PLATF_STORAGE_INITIALIZER {NULL,NULL,NULL}
+
typedef struct {
const char* id;
const char* model;
unsigned long size; /* size in Gbytes */
} s_sg_platf_storage_type_cbarg_t, *sg_platf_storage_type_cbarg_t;
+#define SG_PLATF_STORAGE_TYPE_INITIALIZER {NULL,NULL,NULL,NULL,NULL}
+
typedef struct {
const char* type_id;
const char* name;
} s_sg_platf_mstorage_cbarg_t, *sg_platf_mstorage_cbarg_t;
+#define SG_PLATF_MSTORAGE_INITIALIZER {NULL,NULL}
+
typedef struct {
const char* id;
const char* name;
} s_sg_platf_mount_cbarg_t, *sg_platf_mount_cbarg_t;
+#define SG_PLATF_MOUNT_INITIALIZER {NULL,NULL}
+
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;
+#define SG_PLATF_PROP_INITIALIZER {NULL,NULL}
+
typedef struct s_sg_platf_trace_cbarg *sg_platf_trace_cbarg_t;
typedef struct s_sg_platf_trace_cbarg {
const char *id;
const char *pc_data;
} s_sg_platf_trace_cbarg_t;
+#define SG_PLATF_TRACE_INITIALIZER {NULL,NULL,NULL,NULL}
+
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 *element;
} s_sg_platf_trace_connect_cbarg_t;
+#define SG_PLATF_TRACE_CONNECT_INITIALIZER {NULL,NULL,NULL}
+
typedef struct s_sg_platf_process_cbarg *sg_platf_process_cbarg_t;
typedef struct s_sg_platf_process_cbarg {
const char **argv;
e_surf_process_on_failure_t on_failure;
} s_sg_platf_process_cbarg_t;
+#define SG_PLATF_PROCESS_INITIALIZER {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}
+
XBT_PUBLIC(void) sg_platf_begin(void); // Start a new platform
XBT_PUBLIC(void) sg_platf_end(void); // Finish the creation of the platform