- SIMIX_mutex_destroy(mutex);
- SIMIX_cond_destroy(cond);
- //SIMIX_action_destroy(action);
+void smpi_do_once_1(const char *file, int line)
+{
+ smpi_do_once_duration_node_t curr, prev;
+ smpi_bench_end();
+ SIMIX_mutex_lock(smpi_global->do_once_mutex);
+ prev = NULL;
+ for (curr = smpi_global->do_once_duration_nodes;
+ NULL != curr && (strcmp(curr->file, file) || curr->line != line);
+ curr = curr->next) {
+ prev = curr;
+ }
+ if (NULL == curr) {
+ curr = xbt_new(s_smpi_do_once_duration_node_t, 1);
+ curr->file = xbt_strdup(file);
+ curr->line = line;
+ curr->duration = -1;
+ curr->next = NULL;
+ if (NULL == prev) {
+ smpi_global->do_once_duration_nodes = curr;
+ } else {
+ prev->next = curr;
+ }
+ }
+ smpi_global->do_once_duration = &curr->duration;
+}