X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5c0a9161484f1e1bb650f80d787719a28652b5f4..d9cad55dcc546b3936c278258e7f463ac70066df:/src/msg/msg_gos.c diff --git a/src/msg/msg_gos.c b/src/msg/msg_gos.c index 23911d7624..a5839c38e5 100644 --- a/src/msg/msg_gos.c +++ b/src/msg/msg_gos.c @@ -26,62 +26,6 @@ MSG_error_t MSG_task_execute(m_task_t task) return MSG_parallel_task_execute(task); } -/** \ingroup m_task_management - * \brief Creates a new #m_task_t (a parallel one....). - * - * A constructor for #m_task_t taking six arguments and returning the - corresponding object. - * \param name a name for the object. It is for user-level information - and can be NULL. - * \param host_nb the number of hosts implied in the parallel task. - * \param host_list an array of \p host_nb m_host_t. - * \param computation_amount an array of \p host_nb - doubles. computation_amount[i] is the total number of operations - that have to be performed on host_list[i]. - * \param communication_amount an array of \p host_nb* \p host_nb doubles. - * \param data a pointer to any data may want to attach to the new - object. It is for user-level information and can be NULL. It can - be retrieved with the function \ref MSG_task_get_data. - * \see m_task_t - * \return The new corresponding object. - */ -m_task_t -MSG_parallel_task_create(const char *name, int host_nb, - const m_host_t * host_list, - double *computation_amount, - double *communication_amount, void *data) -{ - int i; - simdata_task_t simdata = xbt_new0(s_simdata_task_t, 1); - m_task_t task = xbt_new0(s_m_task_t, 1); - task->simdata = simdata; - - /* Task structure */ - task->name = xbt_strdup(name); - task->data = data; - - /* Simulator Data */ - simdata->computation_amount = 0; - simdata->message_size = 0; - simdata->compute = NULL; - simdata->comm = NULL; - simdata->rate = -1.0; - simdata->isused = 0; - simdata->sender = NULL; - simdata->receiver = NULL; - simdata->source = NULL; - - simdata->host_nb = host_nb; - simdata->host_list = xbt_new0(smx_host_t, host_nb); - simdata->comp_amount = computation_amount; - simdata->comm_amount = communication_amount; - - for (i = 0; i < host_nb; i++) - simdata->host_list[i] = host_list[i]->smx_host; - - return task; -} - /** \ingroup msg_task_usage * \brief Executes a parallel task and waits for its termination. * @@ -93,54 +37,52 @@ MSG_parallel_task_create(const char *name, int host_nb, MSG_error_t MSG_parallel_task_execute(m_task_t task) { xbt_ex_t e; - simdata_task_t simdata = NULL; - simdata_process_t p_simdata; + simdata_task_t simdata = task->simdata; + msg_process_t self = SIMIX_process_self(); + simdata_process_t p_simdata = SIMIX_process_self_get_data(self); e_smx_state_t comp_state; MSG_error_t status = MSG_OK; - simdata = task->simdata; - m_process_t self = SIMIX_process_self(); - p_simdata = SIMIX_process_self_get_data(self); - - #ifdef HAVE_TRACING - TRACE_msg_task_execute_start(task); - #endif +#ifdef HAVE_TRACING + TRACE_msg_task_execute_start(task); +#endif xbt_assert((!simdata->compute) && (task->simdata->isused == 0), - "This task is executed somewhere else. Go fix your code! %d", - task->simdata->isused); + "This task is executed somewhere else. Go fix your code! %d", + task->simdata->isused); XBT_DEBUG("Computing on %s", MSG_process_get_name(MSG_process_self())); if (simdata->computation_amount == 0 && !simdata->host_nb) { - #ifdef HAVE_TRACING - TRACE_msg_task_execute_end(task); - #endif +#ifdef HAVE_TRACING + TRACE_msg_task_execute_end(task); +#endif return MSG_OK; } TRY { - #ifdef HAVE_TRACING - simcall_set_category(simdata->compute, task->category); - #endif simdata->isused=1; if (simdata->host_nb > 0) { - simdata->compute = simcall_host_parallel_execute(task->name, simdata->host_nb, - simdata->host_list, - simdata->comp_amount, - simdata->comm_amount, 1.0, -1.0); + simdata->compute = simcall_host_parallel_execute(task->name, + simdata->host_nb, + simdata->host_list, + simdata->comp_amount, + simdata->comm_amount, + 1.0, -1.0); XBT_DEBUG("Parallel execution action created: %p", simdata->compute); - } - else { - simdata->compute = - simcall_host_execute(task->name, p_simdata->m_host->smx_host, - simdata->computation_amount, - simdata->priority); + } else { + simdata->compute = simcall_host_execute(task->name, + p_simdata->m_host->smx_host, + simdata->computation_amount, + simdata->priority); } +#ifdef HAVE_TRACING + simcall_set_category(simdata->compute, task->category); +#endif p_simdata->waiting_action = simdata->compute; comp_state = simcall_host_execution_wait(simdata->compute); @@ -148,31 +90,27 @@ MSG_error_t MSG_parallel_task_execute(m_task_t task) simdata->isused=0; - XBT_DEBUG("Execution task '%s' finished in state %d", task->name, (int)comp_state); + XBT_DEBUG("Execution task '%s' finished in state %d", + task->name, (int)comp_state); } CATCH(e) { switch (e.category) { - case host_error: - status = MSG_HOST_FAILURE; - break; - case cancel_error: - #ifdef HAVE_TRACING - TRACE_msg_task_execute_end(task); - #endif - status = MSG_TASK_CANCELED; + case cancel_error: + status = MSG_TASK_CANCELED; break; - default: - RETHROW; + default: + RETHROW; } xbt_ex_free(e); } - /* action ended, set comm and compute = NULL, the actions is already destroyed in the main function */ + /* action ended, set comm and compute = NULL, the actions is already destroyed + * in the main function */ simdata->computation_amount = 0.0; simdata->comm = NULL; simdata->compute = NULL; - #ifdef HAVE_TRACING - TRACE_msg_task_execute_end(task); - #endif +#ifdef HAVE_TRACING + TRACE_msg_task_execute_end(task); +#endif MSG_RETURN(status); } @@ -187,9 +125,8 @@ MSG_error_t MSG_parallel_task_execute(m_task_t task) */ MSG_error_t MSG_process_sleep(double nb_sec) { - xbt_ex_t e; MSG_error_t status = MSG_OK; - /*m_process_t proc = MSG_process_self();*/ + /*msg_process_t proc = MSG_process_self();*/ #ifdef HAVE_TRACING TRACE_msg_process_sleep_in(MSG_process_self()); @@ -203,22 +140,7 @@ MSG_error_t MSG_process_sleep(double nb_sec) proc->simdata->waiting_action = NULL;*/ - TRY { - simcall_process_sleep(nb_sec); - } - CATCH(e) { - switch (e.category) { - case host_error: - #ifdef HAVE_TRACING - TRACE_msg_process_sleep_out(MSG_process_self()); - #endif - status = MSG_HOST_FAILURE; - break; - default: - RETHROW; - } - xbt_ex_free(e); - } + simcall_process_sleep(nb_sec); #ifdef HAVE_TRACING TRACE_msg_process_sleep_out(MSG_process_self()); @@ -369,7 +291,7 @@ XBT_INLINE msg_comm_t MSG_task_isend_with_matching(m_task_t task, const char *al void *match_data) { simdata_task_t t_simdata = NULL; - m_process_t process = MSG_process_self(); + msg_process_t process = MSG_process_self(); msg_mailbox_t mailbox = MSG_mailbox_get_by_alias(alias); /* FIXME: these functions are not traceable */ @@ -419,7 +341,7 @@ XBT_INLINE msg_comm_t MSG_task_isend_with_matching(m_task_t task, const char *al void MSG_task_dsend(m_task_t task, const char *alias, void_f_pvoid_t cleanup) { simdata_task_t t_simdata = NULL; - m_process_t process = MSG_process_self(); + msg_process_t process = MSG_process_self(); msg_mailbox_t mailbox = MSG_mailbox_get_by_alias(alias); /* FIXME: these functions are not traceable */ @@ -497,12 +419,6 @@ int MSG_comm_test(msg_comm_t comm) } CATCH(e) { switch (e.category) { - - case host_error: - comm->status = MSG_HOST_FAILURE; - finished = 1; - break; - case network_error: comm->status = MSG_TRANSFER_FAILURE; finished = 1; @@ -548,12 +464,6 @@ int MSG_comm_testany(xbt_dynar_t comms) } CATCH(e) { switch (e.category) { - - case host_error: - finished_index = e.value; - status = MSG_HOST_FAILURE; - break; - case network_error: finished_index = e.value; status = MSG_TRANSFER_FAILURE; @@ -618,9 +528,6 @@ MSG_error_t MSG_comm_wait(msg_comm_t comm, double timeout) } CATCH(e) { switch (e.category) { - case host_error: - comm->status = MSG_HOST_FAILURE; - break; case network_error: comm->status = MSG_TRANSFER_FAILURE; break; @@ -676,12 +583,6 @@ int MSG_comm_waitany(xbt_dynar_t comms) } CATCH(e) { switch (e.category) { - - case host_error: - finished_index = e.value; - status = MSG_HOST_FAILURE; - break; - case network_error: finished_index = e.value; status = MSG_TRANSFER_FAILURE;