details:
- and function to set it (to be used by forthcoming modifications)
- xbt_free to release in all action_unref of instrumented models
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8385
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
void *data; /**< for your convenience */
int refcount;
surf_model_t model_type;
+#ifdef HAVE_TRACING
+ char *category; /**< tracing category for categorized resource utilization monitoring */
+#endif
} s_surf_action_t;
typedef struct surf_action_lmm {
void TRACE_surf_link_set_latency (double date, void *link, double latency);
void TRACE_surf_save_onelink (void);
int TRACE_surf_link_is_traced (void *link);
+void TRACE_surf_action (surf_action_t surf_action, const char *category);
//for tracing gtnets
void TRACE_surf_gtnets_communicate (void *action, int src, int dst);
}
}
+void TRACE_surf_action (surf_action_t surf_action, const char *category)
+{
+ if (!IS_TRACING_PLATFORM) return;
+ if (!category){
+ xbt_die ("invalid tracing category");
+ }
+ surf_action->category = xbt_new (char, strlen (category)+1);
+ strncpy (surf_action->category, category, strlen(category)+1);
+}
#endif
if (((surf_action_cpu_Cas01_t) action)->variable)
lmm_variable_free(cpu_maxmin_system,
((surf_action_cpu_Cas01_t) action)->variable);
+#ifdef HAVE_TRACING
+ if (action->category) xbt_free (action->category);
+#endif
free(action);
return 1;
}
xbt_swag_remove(action,
((cpu_Cas01_im_t) ACTION_GET_CPU(action))->action_set);
xbt_swag_insert(ACTION_GET_CPU(action), cpu_im_modified_cpu);
+#ifdef HAVE_TRACING
+ if (action->category) xbt_free (action->category);
+#endif
free(action);
return 1;
}
#ifdef HAVE_TRACING
xbt_free (((surf_action_network_CM02_t)action)->src_name);
xbt_free (((surf_action_network_CM02_t)action)->dst_name);
+ if (action->category) xbt_free (action->category);
#endif
free(action);
return 1;
action->refcount--;
if (!action->refcount) {
xbt_swag_remove(action, action->state_set);
+#ifdef HAVE_TRACING
+ if (action->category) xbt_free (action->category);
+#endif
free(action);
return 1;
}
action->refcount--;
if (!action->refcount) {
xbt_swag_remove(action, action->state_set);
+#ifdef HAVE_TRACING
+ if (action->category) xbt_free (action->category);
+#endif
free(action);
return 1;
}
action->start = surf_get_clock();
action->finish = -1.0;
action->model_type = model;
+#ifdef HAVE_TRACING
+ action->category = NULL;
+#endif
if (failed)
action->state_set = model->states.failed_action_set;