X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/34c9e08888fae4fc39aa22502070b37c0ab8a5d6..24b8c09e598e49839cc9115f23b95ebfc0e00429:/src/simix/smx_user.c diff --git a/src/simix/smx_user.c b/src/simix/smx_user.c index 1b75a462a9..5effb483d6 100644 --- a/src/simix/smx_user.c +++ b/src/simix/smx_user.c @@ -150,7 +150,8 @@ void SIMIX_req_host_set_data(smx_host_t host, void *data) * \return A new SIMIX execution action */ smx_action_t SIMIX_req_host_execute(const char *name, smx_host_t host, - double computation_amount) + double computation_amount, + double priority) { smx_req_t req = SIMIX_req_mine(); @@ -158,6 +159,7 @@ smx_action_t SIMIX_req_host_execute(const char *name, smx_host_t host, req->host_execute.name = name; req->host_execute.host = host; req->host_execute.computation_amount = computation_amount; + req->host_execute.priority = priority; SIMIX_request_push(); return req->host_execute.result; } @@ -277,24 +279,26 @@ void SIMIX_req_host_execution_set_priority(smx_action_t execution, double priori } /** - * \brief Waits for the completion of an execution action. + * \brief Waits for the completion of an execution action and destroy it. * * \param execution The execution action */ -void SIMIX_req_host_execution_wait(smx_action_t execution) +e_smx_state_t SIMIX_req_host_execution_wait(smx_action_t execution) { smx_req_t req = SIMIX_req_mine(); req->call = REQ_HOST_EXECUTION_WAIT; req->host_execution_wait.execution = execution; SIMIX_request_push(); + return req->host_execution_wait.result; } /** * \brief Creates and runs a new SIMIX process. * - * The structure and the corresponding threada are created and put in the list of ready processes. + * The structure and the corresponding thread are created and put in the list of ready processes. * + * \param process the process created will be stored in this pointer * \param name a name for the process. It is for user-level information and can be NULL. * \param code the main function of the process * \param data a pointer to any data one may want to attach to the new object. It is for user-level information and can be NULL. @@ -303,18 +307,18 @@ void SIMIX_req_host_execution_wait(smx_action_t execution) * \param argc first argument passed to \a code * \param argv second argument passed to \a code * \param properties the properties of the process - * \return The new process */ -smx_process_t SIMIX_req_process_create(const char *name, - xbt_main_func_t code, - void *data, - const char *hostname, - int argc, char **argv, - xbt_dict_t properties) +void SIMIX_req_process_create(smx_process_t *process, const char *name, + xbt_main_func_t code, + void *data, + const char *hostname, + int argc, char **argv, + xbt_dict_t properties) { smx_req_t req = SIMIX_req_mine(); req->call = REQ_PROCESS_CREATE; + req->process_create.process = process; req->process_create.name = name; req->process_create.code = code; req->process_create.data = data; @@ -323,7 +327,6 @@ smx_process_t SIMIX_req_process_create(const char *name, req->process_create.argv = argv; req->process_create.properties = properties; SIMIX_request_push(); - return req->process_create.result; } /** \brief Kills a SIMIX process. @@ -371,6 +374,8 @@ void SIMIX_req_process_change_host(smx_process_t process, const char *source, co */ void SIMIX_req_process_suspend(smx_process_t process) { + xbt_assert0(process, "Invalid parameters"); + smx_req_t req = SIMIX_req_mine(); req->call = REQ_PROCESS_SUSPEND; @@ -562,12 +567,17 @@ void SIMIX_req_rdv_destroy(smx_rdv_t rdv) smx_rdv_t SIMIX_req_rdv_get_by_name(const char *name) { xbt_assert0(name != NULL, "Invalid parameter for SIMIX_req_rdv_get_by_name (name is NULL)"); - smx_req_t req = SIMIX_req_mine(); + /* FIXME: this is a horrible lost of performance, so we hack it out by + * skipping the request (for now). It won't work on distributed but + * probably we will change MSG for that. */ + return SIMIX_rdv_get_by_name(name); +/* + smx_req_t req = SIMIX_req_mine(); req->call = REQ_RDV_GEY_BY_NAME; req->rdv_get_by_name.name = name; SIMIX_request_push(); - return req->rdv_get_by_name.result; + return req->rdv_get_by_name.result;*/ } /**