From 50fd860b367f42edfa81ab6e83bcd2379b7e8ec8 Mon Sep 17 00:00:00 2001 From: cristianrosa Date: Tue, 18 Aug 2009 12:53:39 +0000 Subject: [PATCH] Merge java simix process creation with the standard process creation function. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6592 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/include/simix/simix.h | 6 ----- src/java/jmsg.c | 12 ++++----- src/simix/smx_process.c | 57 +-------------------------------------- 3 files changed, 7 insertions(+), 68 deletions(-) diff --git a/src/include/simix/simix.h b/src/include/simix/simix.h index 5226ceeb65..c26324f122 100644 --- a/src/include/simix/simix.h +++ b/src/include/simix/simix.h @@ -94,12 +94,6 @@ XBT_PUBLIC(smx_process_t) SIMIX_process_create(const char *name, char **argv, xbt_dict_t properties); -XBT_PUBLIC(void) SIMIX_jprocess_create(const char *name, - smx_host_t host, - void *data, - void *jprocess, void *jenv, - smx_process_t * res); - XBT_PUBLIC(void) SIMIX_process_kill(smx_process_t process); XBT_PUBLIC(void) SIMIX_process_cleanup(void *arg); XBT_PUBLIC(void) SIMIX_process_killall(void); diff --git a/src/java/jmsg.c b/src/java/jmsg.c index cb01fa0bd2..7faed5eaf6 100644 --- a/src/java/jmsg.c +++ b/src/java/jmsg.c @@ -125,12 +125,12 @@ Java_simgrid_msg_MsgNative_processCreate(JNIEnv * env, jclass cls, process, process->simdata, process->simdata->m_host, process->simdata->m_host->simdata, env); - SIMIX_jprocess_create(process->name, - process->simdata->m_host->simdata->smx_host, - /*data */ (void *) process, - jprocess, env, &process->simdata->s_process); - - + process->simdata->s_process = + SIMIX_process_create(process->name, (xbt_main_func_t)jprocess, + /*data */ (void *) process, + process->simdata->m_host->simdata->smx_host->name, + 0, NULL, NULL); + DEBUG1("context created (s_process=%p)", process->simdata->s_process); diff --git a/src/simix/smx_process.c b/src/simix/smx_process.c index f6e37a70ab..f90dcdb4a8 100644 --- a/src/simix/smx_process.c +++ b/src/simix/smx_process.c @@ -107,7 +107,7 @@ smx_process_t SIMIX_process_create(const char *name, process->context = SIMIX_context_new(code, argc, argv, simix_global->cleanup_process_function, process); - + process->data = data; /* Add properties */ @@ -127,61 +127,6 @@ smx_process_t SIMIX_process_create(const char *name, return process; } -/** - * \brief Creates and runs a new #smx_process_t hosting a JAVA thread - * - * Warning: this should only be used in libsimgrid4java, since it create - * a context with no code, which leads to segfaults in plain libsimgrid - */ -void SIMIX_jprocess_create(const char *name, smx_host_t host, - void *data, - void *jprocess, void *jenv, smx_process_t * res) -{ - smx_process_t process = xbt_new0(s_smx_process_t, 1); - smx_process_t self = NULL; - - /* HACK: We need this trick because when we xbt_context_new() do - syncronization stuff, the s_process field in the m_process needs - to have a valid value, and we call xbt_context_new() before - returning, of course, ie, before providing a right value to the - caller (Java_simgrid_msg_Msg_processCreate) have time to store it - in place. This way, we initialize the m_process->simdata->s_process - field ourself ASAP. - - All this would be much simpler if the synchronization stuff would be done - in the JAVA world, I think. - */ - *res = process; - - DEBUG5("jprocess_create(name=%s,host=%p,data=%p,jproc=%p,jenv=%p)", - name, host, data, jprocess, jenv); - xbt_assert0(host, "Invalid parameters"); - - /* Process data */ - process->name = xbt_strdup(name); - process->smx_host = host; - process->mutex = NULL; - process->cond = NULL; - process->context = SIMIX_context_new(jprocess, 0, NULL, - simix_global->cleanup_process_function, - process); - - process->data = data; - - /* Add the process to it's host process list */ - xbt_swag_insert(&process, host->process_list); - - /* fix current_process, about which xbt_context_start mocks around */ - self = simix_global->current_process; - SIMIX_context_start(process->context); - simix_global->current_process = self; - - /* Now insert it in the global process list and in the process to run list */ - xbt_swag_insert(process, simix_global->process_list); - DEBUG2("Inserting %s(%s) in the to_run list", process->name, host->name); - xbt_swag_insert(process, simix_global->process_to_run); -} - /** \brief Kill a SIMIX process * * This function simply kills a \a process... scarry isn't it ? :). -- 2.20.1