src/instr/smx_instr.c
src/instr/surf_instr.c
src/instr/smpi_instr.c
+ src/instr/sd_instr.c
src/instr/variables_instr.c
src/instr/resource_utilization.c
src/instr/private.h
#include "xbt.h"
#include "msg/msg.h"
+#include "simdag/simdag.h"
/* Trace error codes (used in exceptions) */
#define TRACE_ERROR_COMPLEX_ROUTES 100
XBT_PUBLIC(void) TRACE_declare_mark (const char *mark_type);
XBT_PUBLIC(void) TRACE_mark (const char *mark_type, const char *mark_value);
XBT_PUBLIC(int) TRACE_smpi_set_category (const char *category);
+XBT_PUBLIC(void) TRACE_sd_set_task_category(SD_task_t task, const char *category);
#define TRACE_host_variable_declare(var) \
TRACE_user_host_variable(0,var,0,"declare");
#define TRACE_declare_mark(type)
#define TRACE_mark(type,value)
#define TRACE_smpi_set_category(cat)
+#define TRACE_sd_set_task_category(task,cat)
#endif /* HAVE_TRACING */
/** @} */
+#include "instr/instr.h"
+
SG_END_DECL()
#endif
#include "instr/instr.h"
#include "msg/msg.h"
+#include "simdag/private.h"
#include "simix/private.h"
/* from paje.c */
void TRACE_surf_resource_utilization_alloc (void);
void TRACE_surf_resource_utilization_release (void);
+/* sd_instr.c */
+void TRACE_sd_task_create (SD_task_t task);
+void TRACE_sd_task_destroy (SD_task_t task);
+
#endif
#endif /* PRIVATE_H_ */
--- /dev/null
+/* Copyright (c) 2010. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "instr/private.h"
+
+#ifdef HAVE_TRACING
+
+void TRACE_sd_task_create (SD_task_t task)
+{
+ if (!IS_TRACING) return;
+ task->category = NULL;
+}
+
+void TRACE_sd_task_destroy (SD_task_t task)
+{
+ if (!IS_TRACING) return;
+ if (task->category) xbt_free (task->category);
+}
+
+void TRACE_sd_set_task_category(SD_task_t task, const char *category)
+{
+ if (!IS_TRACING) return;
+ task->category = xbt_new (char, strlen (category)+1);
+ strncpy(task->category, category, strlen(category)+1);
+}
+
+#endif
double *computation_amount;
double *communication_amount;
double rate;
+
+#ifdef HAVE_TRACING
+ char *category; /* sd task category for instrumentation */
+#endif
} s_SD_task_t;
/* Task dependencies */
#include "xbt/log.h"
#include "xbt/str.h"
#include "xbt/config.h"
+#include "instr/private.h"
#ifdef HAVE_LUA
#include <lua.h>
#include <lauxlib.h>
*/
void SD_init(int *argc, char **argv)
{
+#ifdef HAVE_TRACING
+ TRACE_global_init (argc, argv);
+#endif
s_SD_task_t task;
DEBUG2("Workstation number: %d, link number: %d",
SD_workstation_get_number(), SD_link_get_number());
+
+#ifdef HAVE_TRACING
+ TRACE_surf_save_onelink ();
+#endif
}
/**
*/
void SD_exit(void)
{
+#ifdef HAVE_TRACING
+ TRACE_surf_release ();
+#endif
if (SD_INITIALISED()) {
DEBUG0("Destroying workstation and link dictionaries...");
xbt_dict_free(&sd_global->workstations);
#include "simdag/simdag.h"
#include "xbt/sysdep.h"
#include "xbt/dynar.h"
+#include "instr/private.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sd_task, sd,
"Logging specific to SimDag (task)");
sd_global->task_number++;
+#ifdef HAVE_TRACING
+ TRACE_sd_task_create (task);
+#endif
+
return task;
}
DEBUG1("surf_action = %p", task->surf_action);
+#ifdef HAVE_TRACING
+ if (task->category) TRACE_surf_action(task->surf_action, task->category);
+#endif
+
__SD_task_destroy_scheduling_data(task); /* now the scheduling data are not useful anymore */
__SD_task_set_state(task, SD_RUNNING);
xbt_assert2(__SD_task_is_running(task), "Bad state of task '%s': %d",
if (task->computation_amount)
xbt_free(task->computation_amount);
+#ifdef HAVE_TRACING
+ TRACE_sd_task_destroy (task);
+#endif
+
xbt_dynar_free(&task->tasks_before);
xbt_dynar_free(&task->tasks_after);
xbt_free(task);