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
Improve error message since this can also be caused by the fact that there is no...
[simgrid.git]
/
src
/
msg
/
gos.c
diff --git
a/src/msg/gos.c
b/src/msg/gos.c
index
fc58b2b
..
4e90b14
100644
(file)
--- a/
src/msg/gos.c
+++ b/
src/msg/gos.c
@@
-1,8
+1,5
@@
-/* $Id$ */
-
-/* Copyright (c) 2002-2007 Arnaud Legrand. */
-/* Copyright (c) 2007 Bruno Donassolo. */
-/* All rights reserved. */
+/* Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 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. */
/* 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. */
@@
-42,14
+39,23
@@
MSG_error_t MSG_task_execute(m_task_t task)
m_process_t self = MSG_process_self();
e_surf_action_state_t state = SURF_ACTION_NOT_IN_THE_SYSTEM;
CHECK_HOST();
m_process_t self = MSG_process_self();
e_surf_action_state_t state = SURF_ACTION_NOT_IN_THE_SYSTEM;
CHECK_HOST();
+#ifdef HAVE_TRACING
+ TRACE_msg_task_execute_start (task);
+#endif
simdata = task->simdata;
simdata = task->simdata;
- xbt_assert0((!simdata->compute)
-
&& (task->simdata->refcount == 1),
- "This task is executed somewhere else. Go fix your code!
"
);
+
+
xbt_assert1((!simdata->compute)
&& (task->simdata->refcount == 1),
+ "This task is executed somewhere else. Go fix your code!
%d", task->simdata->refcount
);
DEBUG1("Computing on %s", MSG_process_self()->simdata->m_host->name);
DEBUG1("Computing on %s", MSG_process_self()->simdata->m_host->name);
+ if (simdata->computation_amount == 0) {
+#ifdef HAVE_TRACING
+ TRACE_msg_task_execute_end (task);
+#endif
+ return MSG_OK;
+ }
simdata->refcount++;
SIMIX_mutex_lock(simdata->mutex);
simdata->compute =
simdata->refcount++;
SIMIX_mutex_lock(simdata->mutex);
simdata->compute =
@@
-76,18
+82,27
@@
MSG_error_t MSG_task_execute(m_task_t task)
simdata->computation_amount = 0.0;
simdata->comm = NULL;
simdata->compute = NULL;
simdata->computation_amount = 0.0;
simdata->comm = NULL;
simdata->compute = NULL;
+#ifdef HAVE_TRACING
+ TRACE_msg_task_execute_end (task);
+#endif
MSG_RETURN(MSG_OK);
} else if (SIMIX_host_get_state(SIMIX_host_self()) == 0) {
/* action ended, set comm and compute = NULL, the actions is already destroyed in the main function */
SIMIX_action_destroy(task->simdata->compute);
simdata->comm = NULL;
simdata->compute = NULL;
MSG_RETURN(MSG_OK);
} else if (SIMIX_host_get_state(SIMIX_host_self()) == 0) {
/* action ended, set comm and compute = NULL, the actions is already destroyed in the main function */
SIMIX_action_destroy(task->simdata->compute);
simdata->comm = NULL;
simdata->compute = NULL;
+#ifdef HAVE_TRACING
+ TRACE_msg_task_execute_end (task);
+#endif
MSG_RETURN(MSG_HOST_FAILURE);
} else {
/* action ended, set comm and compute = NULL, the actions is already destroyed in the main function */
SIMIX_action_destroy(task->simdata->compute);
simdata->comm = NULL;
simdata->compute = NULL;
MSG_RETURN(MSG_HOST_FAILURE);
} else {
/* action ended, set comm and compute = NULL, the actions is already destroyed in the main function */
SIMIX_action_destroy(task->simdata->compute);
simdata->comm = NULL;
simdata->compute = NULL;
+#ifdef HAVE_TRACING
+ TRACE_msg_task_execute_end (task);
+#endif
MSG_RETURN(MSG_TASK_CANCELLED);
}
}
MSG_RETURN(MSG_TASK_CANCELLED);
}
}
@@
-228,6
+243,10
@@
MSG_error_t MSG_process_sleep(double nb_sec)
smx_mutex_t mutex;
smx_cond_t cond;
smx_mutex_t mutex;
smx_cond_t cond;
+#ifdef HAVE_TRACING
+ TRACE_msg_process_sleep_in (MSG_process_self());
+#endif
+
/* create action to sleep */
act_sleep =
SIMIX_action_sleep(SIMIX_process_get_host(proc->simdata->s_process),
/* create action to sleep */
act_sleep =
SIMIX_action_sleep(SIMIX_process_get_host(proc->simdata->s_process),
@@
-256,29
+275,26
@@
MSG_error_t MSG_process_sleep(double nb_sec)
if (SIMIX_action_get_state(act_sleep) == SURF_ACTION_DONE) {
if (SIMIX_host_get_state(SIMIX_host_self()) == SURF_RESOURCE_OFF) {
SIMIX_action_destroy(act_sleep);
if (SIMIX_action_get_state(act_sleep) == SURF_ACTION_DONE) {
if (SIMIX_host_get_state(SIMIX_host_self()) == SURF_RESOURCE_OFF) {
SIMIX_action_destroy(act_sleep);
+#ifdef HAVE_TRACING
+ TRACE_msg_process_sleep_out (MSG_process_self());
+#endif
MSG_RETURN(MSG_HOST_FAILURE);
}
} else {
SIMIX_action_destroy(act_sleep);
MSG_RETURN(MSG_HOST_FAILURE);
}
} else {
SIMIX_action_destroy(act_sleep);
+#ifdef HAVE_TRACING
+ TRACE_msg_process_sleep_out (MSG_process_self());
+#endif
MSG_RETURN(MSG_HOST_FAILURE);
}
SIMIX_action_destroy(act_sleep);
MSG_RETURN(MSG_HOST_FAILURE);
}
SIMIX_action_destroy(act_sleep);
+#ifdef HAVE_TRACING
+ TRACE_msg_process_sleep_out (MSG_process_self());
+#endif
MSG_RETURN(MSG_OK);
}
MSG_RETURN(MSG_OK);
}
-/** \ingroup msg_gos_functions
- * \brief Return the number of MSG tasks currently running on
- * the host of the current running process.
- */
-static int MSG_get_msgload(void)
-{
- xbt_die("not implemented yet");
- return 0;
-}
-
-
-
/** \ingroup msg_gos_functions
* \brief Listen on \a channel and waits for receiving a task from \a host.
*
/** \ingroup msg_gos_functions
* \brief Listen on \a channel and waits for receiving a task from \a host.
*