Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge java simix process creation with the standard process creation
authorcristianrosa <cristianrosa@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 18 Aug 2009 12:53:39 +0000 (12:53 +0000)
committercristianrosa <cristianrosa@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 18 Aug 2009 12:53:39 +0000 (12:53 +0000)
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
src/java/jmsg.c
src/simix/smx_process.c

index 5226cee..c26324f 100644 (file)
@@ -94,12 +94,6 @@ XBT_PUBLIC(smx_process_t) SIMIX_process_create(const char *name,
                                                char **argv,
                                                xbt_dict_t properties);
 
                                                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);
 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);
index cb01fa0..7faed5e 100644 (file)
@@ -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);
 
      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);
 
 
   DEBUG1("context created (s_process=%p)", process->simdata->s_process);
 
 
index f6e37a7..f90dcdb 100644 (file)
@@ -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->context = SIMIX_context_new(code, argc, argv, 
                                        simix_global->cleanup_process_function,
                                        process);
-
+  
   process->data = data;
 
   /* Add properties */
   process->data = data;
 
   /* Add properties */
@@ -127,61 +127,6 @@ smx_process_t SIMIX_process_create(const char *name,
   return process;
 }
 
   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 ? :).
 /** \brief Kill a SIMIX process
  *
  * This function simply kills a \a process... scarry isn't it ? :).