-smx_process_t SIMIX_jprocess_create(const char *name, smx_host_t host,
- void *data,
- void *jprocess, void *jenv)
-{
- smx_simdata_process_t simdata = xbt_new0(s_smx_simdata_process_t,1);
- smx_process_t process = xbt_new0(s_smx_process_t,1);
- smx_process_t self = NULL;
-
- DEBUG5("jprocess_create(name=%s,host=%p,data=%p,jproc=%p,jenv=%p)",
- name,host,data,jprocess,jenv);
- xbt_assert0(host, "Invalid parameters");
- /* Simulator Data */
- simdata->s_host = host;
- simdata->mutex = NULL;
- simdata->cond = NULL;
- simdata->argc = 0;
- simdata->argv = NULL;
-
- simdata->context = xbt_context_new(NULL, NULL, NULL,
- SIMIX_process_cleanup, process,
- /* argc/argv*/0,NULL);
- /* Process structure */
- process->name = xbt_strdup(name);
- process->simdata = simdata;
- process->data = data;
- SIMIX_process_set_jprocess(process,jprocess);
- SIMIX_process_set_jenv(process,jenv);
+smx_process_t SIMIX_process_create(const char *name,
+ xbt_main_func_t code,
+ void *data,
+ const char *hostname,
+ int argc, char **argv,
+ xbt_dict_t properties) {
+
+ smx_process_t process = NULL;
+ smx_host_t host = SIMIX_host_get_by_name(hostname);
+
+ DEBUG2("Start process %s on host %s", name, hostname);
+
+ if (!SIMIX_host_get_state(host)) {
+ WARN2("Cannot launch process '%s' on failed host '%s'", name,
+ hostname);
+ }
+ else {
+ process = xbt_new0(s_smx_process_t, 1);
+
+ xbt_assert0(((code != NULL) && (host != NULL)), "Invalid parameters");