Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge pull request #17 from mpoquet/master
authorMartin Quinson <martin.quinson@loria.fr>
Tue, 14 Jul 2015 19:54:24 +0000 (21:54 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Tue, 14 Jul 2015 19:54:24 +0000 (21:54 +0200)
Candidate patch to issue #15

1  2 
src/msg/msg_process.c

diff --combined src/msg/msg_process.c
@@@ -15,9 -15,11 +15,9 @@@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_pro
  /** @addtogroup m_process_management
   * \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Processes" --> \endhtmlonly
   *
 - *  We need to simulate many independent scheduling decisions, so
 - *  the concept of <em>process</em> is at the heart of the
 - *  simulator. A process may be defined as a <em>code</em>, with
 - *  some <em>private data</em>, executing in a <em>location</em>.
 - *  \see msg_process_t
 + *  Processes (#msg_process_t) are independent agents that can do stuff on their own. They are in charge of executing your code interacting with the simulated world.
 + *  A process may be defined as a <em>code</em> with some <em>private data</em>.
 + *  Processes must be located on <em>hosts</em> (#msg_host_t), and they exchange data by sending tasks (#msg_task_t) that are similar to envelops containing data.
   */
  
  /******************************** Process ************************************/
@@@ -164,12 -166,14 +164,14 @@@ msg_process_t MSG_process_create_with_e
    simdata->data = data;
    simdata->last_errno = MSG_OK;
  
+   int future_simix_process_pid = SIMIX_process_get_maxpid();
+   TRACE_msg_process_create(name, future_simix_process_pid, host);
    /* Let's create the process: SIMIX may decide to start it right now,
     * even before returning the flow control to us */
-  simcall_process_create(&process, name, code, simdata, sg_host_name(host), -1,
+   simcall_process_create(&process, name, code, simdata, sg_host_name(host), -1,
                             argc, argv, properties,0);
-   TRACE_msg_process_create(name, SIMIX_process_get_PID(process), host);
+   xbt_assert(future_simix_process_pid == SIMIX_process_get_PID(process));
  
    if (!process) {
      /* Undo everything we have just changed */
@@@ -239,10 -243,7 +241,10 @@@ void* MSG_process_get_data(msg_process_
  
    /* get from SIMIX the MSG process data, and then the user data */
    simdata_process_t simdata = simcall_process_get_data(process);
 -  return simdata->data;
 +  if (simdata)
 +    return simdata->data;
 +  else
 +    return NULL;
  }
  
  /** \ingroup m_process_management