A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
if deadlock, close trace file so it may help to find the problem
[simgrid.git]
/
src
/
simix
/
smx_global.c
diff --git
a/src/simix/smx_global.c
b/src/simix/smx_global.c
index
3681493
..
024009f
100644
(file)
--- a/
src/simix/smx_global.c
+++ b/
src/simix/smx_global.c
@@
-30,13
+30,21
@@
static void* SIMIX_action_mallocator_new_f(void);
static void SIMIX_action_mallocator_free_f(void* action);
static void SIMIX_action_mallocator_reset_f(void* action);
static void SIMIX_action_mallocator_free_f(void* action);
static void SIMIX_action_mallocator_reset_f(void* action);
+extern void smx_ctx_raw_new_sr(void);
+
/* FIXME: Yeah, I'll do it in a portable maner one day [Mt] */
#include <signal.h>
/* FIXME: Yeah, I'll do it in a portable maner one day [Mt] */
#include <signal.h>
+int _surf_do_verbose_exit = 1;
static void _XBT_CALL inthandler(int ignored)
{
static void _XBT_CALL inthandler(int ignored)
{
- XBT_INFO("CTRL-C pressed. Displaying status and bailing out");
- SIMIX_display_process_status();
+ if ( _surf_do_verbose_exit ) {
+ XBT_INFO("CTRL-C pressed. Displaying status and bailing out");
+ SIMIX_display_process_status();
+ }
+ else {
+ XBT_INFO("CTRL-C pressed. bailing out without displaying because verbose-exit disabled");
+ }
exit(1);
}
exit(1);
}
@@
-70,7
+78,6
@@
void SIMIX_global_init(int *argc, char **argv)
simix_global = xbt_new0(s_smx_global_t, 1);
simix_global = xbt_new0(s_smx_global_t, 1);
- simix_global->host = xbt_dict_new();
simix_global->process_to_run = xbt_dynar_new(sizeof(void *), NULL);
simix_global->process_list =
xbt_swag_new(xbt_swag_offset(proc, process_hookup));
simix_global->process_to_run = xbt_dynar_new(sizeof(void *), NULL);
simix_global->process_list =
xbt_swag_new(xbt_swag_offset(proc, process_hookup));
@@
-107,6
+114,9
@@
void SIMIX_global_init(int *argc, char **argv)
if (!simix_timers) {
simix_timers = xbt_heap_new(8, &free);
}
if (!simix_timers) {
simix_timers = xbt_heap_new(8, &free);
}
+
+ XBT_DEBUG("ADD SIMIX LEVELS");
+ SIMIX_HOST_LEVEL = xbt_lib_add_level(host_lib,SIMIX_host_destroy);
}
/**
}
/**
@@
-116,6
+126,10
@@
void SIMIX_global_init(int *argc, char **argv)
*/
void SIMIX_clean(void)
{
*/
void SIMIX_clean(void)
{
+#ifdef TIME_BENCH
+ smx_ctx_raw_new_sr();
+#endif
+
/* Kill everyone (except maestro) */
SIMIX_process_killall(simix_global->maestro_process);
/* Kill everyone (except maestro) */
SIMIX_process_killall(simix_global->maestro_process);
@@
-133,7
+147,6
@@
void SIMIX_clean(void)
simix_global->process_list = NULL;
simix_global->process_to_destroy = NULL;
xbt_dict_free(&(simix_global->registered_functions));
simix_global->process_list = NULL;
simix_global->process_to_destroy = NULL;
xbt_dict_free(&(simix_global->registered_functions));
- xbt_dict_free(&(simix_global->host));
/* Let's free maestro now */
SIMIX_context_free(simix_global->maestro_process->context);
/* Let's free maestro now */
SIMIX_context_free(simix_global->maestro_process->context);
@@
-185,6
+198,9
@@
void SIMIX_run(void)
do {
XBT_DEBUG("New Schedule Round; size(queue)=%lu",
xbt_dynar_length(simix_global->process_to_run));
do {
XBT_DEBUG("New Schedule Round; size(queue)=%lu",
xbt_dynar_length(simix_global->process_to_run));
+#ifdef TIME_BENCH
+ smx_ctx_raw_new_sr();
+#endif
do {
XBT_DEBUG("New Sub-Schedule Round; size(queue)=%lu",
xbt_dynar_length(simix_global->process_to_run));
do {
XBT_DEBUG("New Sub-Schedule Round; size(queue)=%lu",
xbt_dynar_length(simix_global->process_to_run));
@@
-224,6
+240,10
@@
void SIMIX_run(void)
if (xbt_swag_size(simix_global->process_list) != 0) {
if (xbt_swag_size(simix_global->process_list) != 0) {
+#ifdef HAVE_TRACING
+ TRACE_end();
+#endif
+
XBT_WARN("Oops ! Deadlock or code not perfectly clean.");
SIMIX_display_process_status();
xbt_abort();
XBT_WARN("Oops ! Deadlock or code not perfectly clean.");
SIMIX_display_process_status();
xbt_abort();