+void TRACE_generate_triva_uncat_conf (void)
+{
+ char *output = TRACE_get_triva_uncat_conf ();
+ if (output && strlen(output) > 0){
+ xbt_dict_cursor_t cursor=NULL;
+ char *name, *value;
+
+ FILE *file = fopen (output, "w");
+ if (file == NULL){
+ THROWF (system_error, 1, "Unable to open file (%s) for writing triva graph "
+ "configuration (uncategorized).", output);
+ }
+
+ //open
+ fprintf (file, "{\n");
+
+ //register NODE types
+ fprintf (file, " node = (");
+ xbt_dict_foreach(trivaNodeTypes, cursor, name, value) {
+ fprintf (file, "%s, ", name);
+ }
+
+ //register EDGE types
+ fprintf (file,
+ ");\n"
+ " edge = (");
+ xbt_dict_foreach(trivaEdgeTypes, cursor, name, value) {
+ fprintf (file, "%s, ", name);
+ }
+ fprintf (file,
+ ");\n"
+ "\n");
+
+ //configuration for all nodes
+ fprintf (file,
+ " host = {\n"
+ " type = square;\n"
+ " size = power;\n"
+ " values = (power_used);\n"
+ " };\n"
+ " link = {\n"
+ " type = rhombus;\n"
+ " size = bandwidth;\n"
+ " values = (bandwidth_used);\n"
+ " };\n");
+ //close
+ fprintf (file, "}\n");
+ fclose (file);
+ }
+}
+
+void TRACE_generate_triva_cat_conf (void)
+{
+ char *output = TRACE_get_triva_cat_conf();
+ if (output && strlen(output) > 0){
+ xbt_dict_cursor_t cursor=NULL, cursor2=NULL;
+ char *name, *name2, *value, *value2;
+
+ //check if we do have categories declared
+ if (xbt_dict_is_empty(created_categories)){
+ XBT_INFO("No categories declared, ignoring generation of triva graph configuration");
+ return;
+ }
+
+ FILE *file = fopen (output, "w");
+ if (file == NULL){
+ THROWF (system_error, 1, "Unable to open file (%s) for writing triva graph "
+ "configuration (categorized).", output);
+ }
+
+ //open
+ fprintf (file, "{\n");
+
+ //register NODE types
+ fprintf (file, " node = (");
+ xbt_dict_foreach(trivaNodeTypes, cursor, name, value) {
+ fprintf (file, "%s, ", name);
+ }
+
+ //register EDGE types
+ fprintf (file,
+ ");\n"
+ " edge = (");
+ xbt_dict_foreach(trivaEdgeTypes, cursor, name, value) {
+ fprintf (file, "%s, ", name);
+ }
+ fprintf (file,
+ ");\n"
+ "\n");
+
+ //configuration for all nodes
+ fprintf (file,
+ " host = {\n"
+ " type = square;\n"
+ " size = power;\n"
+ " values = (");
+ xbt_dict_foreach(created_categories,cursor2,name2,value2) {
+ fprintf (file, "p%s, ", name2);
+ }
+ fprintf (file,
+ ");\n"
+ " };\n"
+ " link = {\n"
+ " type = rhombus;\n"
+ " size = bandwidth;\n"
+ " values = (");
+ xbt_dict_foreach(created_categories,cursor2,name2,value2) {
+ fprintf (file, "b%s, ", name2);
+ }
+ fprintf (file,
+ ");\n"
+ " };\n");
+ //close
+ fprintf (file, "}\n");
+ fclose (file);
+ }
+}
+
+void TRACE_set_network_update_mechanism (void)
+{
+ if (TRACE_is_enabled()){
+ if (TRACE_categorized() || TRACE_uncategorized()){
+ XBT_INFO ("Tracing resource utilization active, network/optim configuration now set to Full.");
+ xbt_cfg_set_string (_surf_cfg_set, "network/optim", "Full");
+ }
+ }
+}
+