/** \ingroup m_task_management * \brief Creates a new #msg_task_t. * * A constructor for #msg_task_t taking four arguments and returning the corresponding object. * \param name a name for the object. It is for user-level information and can be NULL. * \param flop_amount a value of the processing amount (in flop) needed to process this new task. If 0, then it cannot be executed with MSG_task_execute(). This value has to be >=0. * \param message_size a value of the amount of data (in bytes) needed to transfer this new task. If 0, then it cannot be transfered with MSG_task_send() and MSG_task_recv(). This value has to be >=0. * \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 msg_task_t * \return The new corresponding object. */ msg_task_t MSG_task_create(const char *name, double flop_amount, double message_size, void *data) { msg_task_t task = xbt_new(s_msg_task_t, 1); simdata_task_t simdata = xbt_new(s_simdata_task_t, 1); task->simdata = simdata; /* Task structure */ task->name = xbt_strdup(name); task->data = data; /* Simulator Data */ simdata->compute = NULL; simdata->comm = NULL; simdata->bytes_amount = message_size; simdata->flops_amount = flop_amount; simdata->sender = NULL; simdata->receiver = NULL; simdata->source = NULL; simdata->priority = 1.0; simdata->bound = 0; simdata->affinity_mask_db = xbt_dict_new_homogeneous(NULL); simdata->rate = -1.0; simdata->isused = 0; simdata->host_nb = 0; simdata->host_list = NULL; simdata->flops_parallel_amount = NULL; simdata->bytes_parallel_amount = NULL; TRACE_msg_task_create(task); return task; }
/** \ingroup m_task_management * \brief Creates a new #msg_task_t. * * A constructor for #msg_task_t taking four arguments and returning the corresponding object. * \param name a name for the object. It is for user-level information and can be NULL. * \param compute_duration a value of the processing amount (in flop) needed to process this new task. If 0, then it cannot be executed with MSG_task_execute(). This value has to be >=0. * \param message_size a value of the amount of data (in bytes) needed to transfer this new task. If 0, then it cannot be transfered with MSG_task_send() and MSG_task_recv(). This value has to be >=0. * \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 msg_task_t * \return The new corresponding object. */ msg_task_t MSG_task_create(const char *name, double compute_duration, double message_size, void *data) { msg_task_t task = xbt_new(s_msg_task_t, 1); simdata_task_t simdata = xbt_new(s_simdata_task_t, 1); task->simdata = simdata; /* Task structure */ task->name = xbt_strdup(name); task->data = data; /* Simulator Data */ simdata->compute = NULL; simdata->comm = NULL; simdata->message_size = message_size; simdata->computation_amount = compute_duration; simdata->sender = NULL; simdata->receiver = NULL; simdata->source = NULL; simdata->priority = 1.0; simdata->bound = 0; simdata->affinity_mask_db = xbt_dict_new_homogeneous(NULL); simdata->rate = -1.0; simdata->isused = 0; simdata->host_nb = 0; simdata->host_list = NULL; simdata->comp_amount = NULL; simdata->comm_amount = NULL; #ifdef HAVE_TRACING TRACE_msg_task_create(task); #endif return task; }