-/* $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. */
- 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);
simdata->computation_amount);
SIMIX_action_set_priority(simdata->compute, simdata->priority);
simdata->computation_amount);
SIMIX_action_set_priority(simdata->compute, simdata->priority);
SIMIX_register_action_to_condition(simdata->compute, simdata->cond);
do {
SIMIX_cond_wait(simdata->cond, simdata->mutex);
state = SIMIX_action_get_state(simdata->compute);
} while (state == SURF_ACTION_READY || state == SURF_ACTION_RUNNING);
SIMIX_unregister_action_to_condition(simdata->compute, simdata->cond);
SIMIX_register_action_to_condition(simdata->compute, simdata->cond);
do {
SIMIX_cond_wait(simdata->cond, simdata->mutex);
state = SIMIX_action_get_state(simdata->compute);
} while (state == SURF_ACTION_READY || state == SURF_ACTION_RUNNING);
SIMIX_unregister_action_to_condition(simdata->compute, simdata->cond);
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;
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;
simdata->host_list, simdata->comp_amount,
simdata->comm_amount, 1.0, -1.0);
simdata->host_list, simdata->comp_amount,
simdata->comm_amount, 1.0, -1.0);
SIMIX_register_action_to_condition(simdata->compute, simdata->cond);
do {
SIMIX_cond_wait(simdata->cond, simdata->mutex);
SIMIX_register_action_to_condition(simdata->compute, simdata->cond);
do {
SIMIX_cond_wait(simdata->cond, simdata->mutex);
} while (state == SURF_ACTION_READY || state == SURF_ACTION_RUNNING);
SIMIX_unregister_action_to_condition(simdata->compute, simdata->cond);
} while (state == SURF_ACTION_READY || state == SURF_ACTION_RUNNING);
SIMIX_unregister_action_to_condition(simdata->compute, simdata->cond);
/* 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),
SIMIX_register_action_to_condition(act_sleep, cond);
do {
SIMIX_cond_wait(cond, mutex);
state = SIMIX_action_get_state(act_sleep);
} while (state == SURF_ACTION_READY || state == SURF_ACTION_RUNNING);
SIMIX_register_action_to_condition(act_sleep, cond);
do {
SIMIX_cond_wait(cond, mutex);
state = SIMIX_action_get_state(act_sleep);
} while (state == SURF_ACTION_READY || state == SURF_ACTION_RUNNING);
SIMIX_unregister_action_to_condition(act_sleep, cond);
SIMIX_mutex_unlock(mutex);
SIMIX_unregister_action_to_condition(act_sleep, cond);
SIMIX_mutex_unlock(mutex);
-/** \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.
*