Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' into hypervisor
authoralebre <adrien.lebre@inria.fr>
Thu, 31 Jan 2013 22:51:36 +0000 (23:51 +0100)
committeralebre <adrien.lebre@inria.fr>
Thu, 31 Jan 2013 22:51:36 +0000 (23:51 +0100)
1  2 
buildtools/Cmake/DefinePackages.cmake
include/simgrid/simix.h
src/msg/msg_global.c
src/msg/msg_private.h
src/msg/msg_process.c
src/simix/smx_smurf_private.h
src/simix/smx_user.c

@@@ -2,6 -2,7 +2,7 @@@
  
  set(EXTRA_DIST
    include/xbt/win32_ucontext.h
+   src/bindings/java/MANIFEST.MF
    src/include/instr/instr_interface.h
    src/include/mc/datatypes.h
    src/include/mc/mc.h
@@@ -215,7 -216,6 +216,7 @@@ set(SURF_SR
    src/surf/trace_mgr.c
    src/surf/workstation.c
    src/surf/workstation_ptask_L07.c
 +  src/surf/vm_workstation.c
    src/xbt/xbt_sg_stubs.c
    )
  
@@@ -233,7 -233,6 +234,7 @@@ set(SIMIX_SR
    src/simix/smx_smurf.c
    src/simix/smx_synchro.c
    src/simix/smx_user.c
 +  src/simix/smx_vm.c
    )
  
  set(SIMGRID_SRC
@@@ -288,6 -287,7 +289,7 @@@ set(EXTRA_DIS
  #* ****************************************************************************************** *#
  
  set(SIMDAG_SRC
+   src/simdag/instr_sd_task.c
    src/simdag/sd_daxloader.c
    src/simdag/sd_global.c
    src/simdag/sd_link.c
@@@ -312,6 -312,70 +314,70 @@@ set(BINDINGS_SR
    src/bindings/lua/simgrid_lua.h
    )
  
+ set(JMSG_C_SRC
+   src/bindings/java/jmsg.c
+   src/bindings/java/jmsg.h
+   src/bindings/java/jmsg_comm.c
+   src/bindings/java/jmsg_comm.h
+   src/bindings/java/jmsg_file.c
+   src/bindings/java/jmsg_file.h
+   src/bindings/java/jmsg_host.c
+   src/bindings/java/jmsg_host.h
+   src/bindings/java/jmsg_process.c
+   src/bindings/java/jmsg_process.h
+   src/bindings/java/jmsg_rngstream.c
+   src/bindings/java/jmsg_rngstream.h
+   src/bindings/java/jmsg_synchro.c
+   src/bindings/java/jmsg_synchro.h
+   src/bindings/java/jmsg_task.c
+   src/bindings/java/jmsg_task.h
+   src/bindings/java/jmsg_vm.c
+   src/bindings/java/jmsg_vm.h
+   src/bindings/java/jxbt_utilities.c
+   src/bindings/java/jxbt_utilities.h
+   src/bindings/java/smx_context_cojava.c
+   src/bindings/java/smx_context_cojava.h
+   src/bindings/java/smx_context_java.c
+   src/bindings/java/smx_context_java.h
+ )
+ set(JMSG_JAVA_SRC
+   src/bindings/java/org/simgrid/msg/Comm.java
+   src/bindings/java/org/simgrid/msg/File.java
+   src/bindings/java/org/simgrid/msg/Host.java
+   src/bindings/java/org/simgrid/msg/HostFailureException.java
+   src/bindings/java/org/simgrid/msg/HostNotFoundException.java
+   src/bindings/java/org/simgrid/msg/JniException.java
+   src/bindings/java/org/simgrid/msg/Msg.java
+   src/bindings/java/org/simgrid/msg/MsgException.java
+   src/bindings/java/org/simgrid/msg/Mutex.java
+   src/bindings/java/org/simgrid/msg/NativeException.java
+   src/bindings/java/org/simgrid/msg/Process.java
+   src/bindings/java/org/simgrid/msg/ProcessKilledError.java
+   src/bindings/java/org/simgrid/msg/ProcessNotFoundException.java
+   src/bindings/java/org/simgrid/msg/RngStream.java
+   src/bindings/java/org/simgrid/msg/Task.java
+   src/bindings/java/org/simgrid/msg/TaskCancelledException.java
+   src/bindings/java/org/simgrid/msg/TimeoutException.java
+   src/bindings/java/org/simgrid/msg/TransferFailureException.java
+   src/bindings/java/org/simgrid/msg/VM.java
+ )
+ set(JTRACE_C_SRC
+   src/bindings/java/jtrace.c
+   src/bindings/java/jtrace.h
+ )
+ set(JTRACE_JAVA_SRC
+   src/bindings/java/org/simgrid/trace/Trace.java
+ )
+ if(HAVE_TRACING)
+   list(APPEND JMSG_C_SRC ${JTRACE_C_SRC})
+ else()
+   list(APPEND EXTRA_DIST ${JTRACE_C_SRC})
+ endif()
  set(LUA_SRC
    src/bindings/lua/lua_comm.c
    src/bindings/lua/lua_host.c
@@@ -661,6 -725,7 +727,7 @@@ set(txt_file
    )
  
  set(EXAMPLES_CMAKEFILES_TXT
+   examples/java/bittorrent/CMakeLists.txt
    examples/lua/CMakeLists.txt
    examples/msg/CMakeLists.txt
    examples/msg/actions/CMakeLists.txt
@@@ -787,7 -852,6 +854,6 @@@ set(CMAKE_SOURCE_FILE
    buildtools/Cmake/test_prog/prog_stackgrowth.c
    buildtools/Cmake/test_prog/prog_stacksetup.c
    buildtools/Cmake/test_prog/prog_thread_storage.c
-   buildtools/Cmake/test_prog/prog_va_copy.c
    buildtools/Cmake/test_prog/prog_vsnprintf.c
    )
  
diff --combined include/simgrid/simix.h
@@@ -328,13 -328,6 +328,13 @@@ XBT_PUBLIC(e_smx_state_t) simcall_host_
  XBT_PUBLIC(void) simcall_host_execution_set_priority(smx_action_t execution, double priority);
  XBT_PUBLIC(e_smx_state_t) simcall_host_execution_wait(smx_action_t execution);
  
 +/******************************* VM simcalls ********************************/
 +// Create the vm_workstation at the SURF level
 +XBT_PUBLIC(void*) simcall_vm_ws_create(const char *name, smx_host_t host);
 +XBT_PUBLIC(void*) simcall_get_vm_state(smx_host_t vm);
 +XBT_PUBLIC(void) simcall_vm_start(smx_host_t vm);
 +XBT_PUBLIC(void) simcall_vm_suspend(smx_host_t vm);
 +XBT_PUBLIC(void) simcall_vm_destroy(smx_host_t vm);
  
  /**************************** Process simcalls ********************************/
  /* Constructor and Destructor */
@@@ -349,7 -342,7 +349,7 @@@ XBT_PUBLIC(void) simcall_process_create
                                            int auto_restart);
  
  XBT_PUBLIC(void) simcall_process_kill(smx_process_t process);
- XBT_PUBLIC(void) simcall_process_killall(void);
+ XBT_PUBLIC(void) simcall_process_killall(int reset_pid);
  
  /* Process handling */
  XBT_PUBLIC(void) simcall_process_cleanup(smx_process_t process);
@@@ -364,6 -357,8 +364,8 @@@ XBT_PUBLIC(void *) simcall_process_get_
  XBT_PUBLIC(void) simcall_process_set_data(smx_process_t process, void *data);
  XBT_PUBLIC(smx_host_t) simcall_process_get_host(smx_process_t process);
  XBT_PUBLIC(const char *) simcall_process_get_name(smx_process_t process);
+ XBT_PUBLIC(int) simcall_process_get_PID(smx_process_t process);
+ XBT_PUBLIC(int) simcall_process_get_PPID(smx_process_t process);
  XBT_PUBLIC(int) simcall_process_is_suspended(smx_process_t process);
  XBT_PUBLIC(xbt_dict_t) simcall_process_get_properties(smx_process_t host);
  XBT_PUBLIC(void) simcall_process_set_kill_time(smx_process_t process, double kill_time);
diff --combined src/msg/msg_global.c
@@@ -37,7 -37,7 +37,7 @@@ void MSG_init_nocheck(int *argc, char *
  
    xbt_getpid = MSG_process_self_PID;
    if (!msg_global) {
 -    s_msg_vm_t vm; // to compute the offset
 + //   s_msg_vm_t vm; // to compute the offset
  
      SIMIX_global_init(argc, argv);
      
  #ifdef MSG_USE_DEPRECATED
      msg_global->max_channel = 0;
  #endif
-     msg_global->PID = 1;
      msg_global->sent_msg = 0;
      msg_global->task_copy_callback = NULL;
      msg_global->process_data_cleanup = NULL;
 -    msg_global->vms = xbt_swag_new(xbt_swag_offset(vm,all_vms_hookup));
 +//    msg_global->vms = xbt_swag_new(xbt_swag_offset(vm,all_vms_hookup));
  
      /* initialization of the action module */
      _MSG_action_init();
@@@ -152,14 -151,12 +151,12 @@@ void MSG_config(const char *key, const 
   */
  int MSG_process_killall(int reset_PIDs)
  {
-   simcall_process_killall();
+   simcall_process_killall(reset_PIDs);
  
-   if (reset_PIDs > 0) {
-     msg_global->PID = reset_PIDs;
+   if (reset_PIDs > 0)
      msg_global->session++;
-   }
  
-   return msg_global->PID;
+   return 0;
  
  }
  
diff --combined src/msg/msg_private.h
@@@ -58,8 -58,6 +58,6 @@@ typedef struct simdata_gpu_task 
  
  typedef struct simdata_process {
    msg_host_t m_host;              /* the host on which the process is running */
-   int PID;                      /* used for debugging purposes */
-   int PPID;                     /* The parent PID */
    msg_host_t put_host;            /* used for debugging purposes */
  #ifdef MSG_USE_DEPRECATED
    m_channel_t put_channel;      /* used for debugging purposes */
@@@ -70,6 -68,8 +68,6 @@@
    int argc;                     /* arguments number if any */
    msg_error_t last_errno;       /* the last value returned by a MSG_function */
  
 -  msg_vm_t vm;                 /* virtual machine the process is in */
 -
    void* data;                   /* user data */
  } s_simdata_process_t, *simdata_process_t;
  
@@@ -110,7 -110,6 +108,6 @@@ typedef struct MSG_Global 
  #ifdef MSG_USE_DEPRECATED
    int max_channel;
  #endif
-   int PID;
    int session;
    unsigned long int sent_msg;   /* Total amount of messages sent during the simulation */
    void (*task_copy_callback) (msg_task_t task, msg_process_t src, msg_process_t dst);
diff --combined src/msg/msg_process.c
@@@ -50,6 -50,12 +50,6 @@@ void MSG_process_cleanup_from_SIMIX(smx
      msg_global->process_data_cleanup(msg_proc->data);
    }
  
 -  // remove the process from its virtual machine
 -  if (msg_proc->vm) {
 -    int pos = xbt_dynar_search(msg_proc->vm->processes,&smx_proc);
 -    xbt_dynar_remove_at(msg_proc->vm->processes,pos, NULL);
 -  }
 -
    // free the MSG process
    xbt_free(msg_proc);
  }
@@@ -156,7 -162,6 +156,6 @@@ msg_process_t MSG_process_create_with_e
    msg_process_t process;
  
    /* Simulator data for MSG */
-   simdata->PID = msg_global->PID++;
    simdata->waiting_action = NULL;
    simdata->waiting_task = NULL;
    simdata->m_host = host;
    simdata->data = data;
    simdata->last_errno = MSG_OK;
  
-   if (SIMIX_process_self()) {
-     simdata->PPID = MSG_process_get_PID(MSG_process_self());
-   } else {
-     simdata->PPID = -1;
-   }
- #ifdef HAVE_TRACING
-   TRACE_msg_process_create(name, simdata->PID, simdata->m_host);
- #endif
    /* 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,
                             argc, argv, properties,0);
  
+   #ifdef HAVE_TRACING
+     TRACE_msg_process_create(name, simcall_process_get_PID(process), simdata->m_host);
+   #endif
    if (!process) {
      /* Undo everything we have just changed */
-     msg_global->PID--;
      xbt_free(simdata);
      return NULL;
    }
@@@ -338,10 -337,7 +331,7 @@@ int MSG_process_get_PID(msg_process_t p
    if (process == NULL) {
      return 0;
    }
-   simdata_process_t simdata = simcall_process_get_data(process);
-   return simdata != NULL ? simdata->PID : 0;
+   return simcall_process_get_PID(process);
  }
  
  /** \ingroup m_process_management
@@@ -355,9 -351,7 +345,7 @@@ int MSG_process_get_PPID(msg_process_t 
  {
    xbt_assert(process != NULL, "Invalid parameter");
  
-   simdata_process_t simdata = simcall_process_get_data(process);
-   return simdata->PPID;
+   return simcall_process_get_PPID(process);
  }
  
  /** \ingroup m_process_management
@@@ -274,21 -274,16 +274,23 @@@ ACTION(SIMCALL_HOST_EXECUTION_GET_REMAI
  ACTION(SIMCALL_HOST_EXECUTION_GET_STATE, host_execution_get_state, WITH_ANSWER, TINT(result), TSPEC(execution, smx_action_t)) sep \
  ACTION(SIMCALL_HOST_EXECUTION_SET_PRIORITY, host_execution_set_priority, WITH_ANSWER, TVOID(result), TSPEC(execution, smx_action_t), TDOUBLE(priority)) sep \
  ACTION(SIMCALL_HOST_EXECUTION_WAIT, host_execution_wait, WITHOUT_ANSWER, TINT(result), TSPEC(execution, smx_action_t)) sep \
 +ACTION(SIMCALL_VM_WS_CREATE, vm_ws_create, WITH_ANSWER, TPTR(result), TSTRING(name), TSPEC(phys_host, smx_host_t)) sep \
 +ACTION(SIMCALL_VM_START, vm_start, WITHOUT_ANSWER, TVOID(result), TSPEC(ind_phys_host, smx_host_t)) sep \
 +ACTION(SIMCALL_VM_SET_STATE, vm_set_state, WITHOUT_ANSWER, TVOID(result), TSPEC(ind_vm, smx_host_t), TINT(state)) sep \
 +ACTION(SIMCALL_VM_GET_STATE, vm_get_state, WITH_ANSWER, TINT(result), TSPEC(ind_vm, smx_host_t)) sep \
 +ACTION(SIMCALL_VM_DESTROY, vm_destroy, WITHOUT_ANSWER, TVOID(result), TSPEC(ind_vm, smx_host_t)) sep \
 +ACTION(SIMCALL_VM_SUSPEND, vm_suspend, WITHOUT_ANSWER, TVOID(result), TSPEC(vm, smx_host_t)) sep \
 +ACTION(SIMCALL_VM_SHUTDOWN, vm_shutdown, WITHOUT_ANSWER, TVOID(result), TSPEC(vm, smx_host_t)) sep \
  ACTION(SIMCALL_PROCESS_CREATE, process_create, WITH_ANSWER, TVOID(result), TSPEC(process, smx_process_t*), TSTRING(name), TSPEC(code, xbt_main_func_t), TPTR(data), TSTRING(hostname), TDOUBLE(kill_time), TINT(argc), TSPEC(argv, char**), TSPEC(properties, xbt_dict_t), TINT(auto_restart)) sep \
  ACTION(SIMCALL_PROCESS_KILL, process_kill, WITH_ANSWER, TVOID(result), TSPEC(process, smx_process_t)) sep \
- ACTION(SIMCALL_PROCESS_KILLALL, process_killall, WITH_ANSWER, TVOID(result)) sep \
+ ACTION(SIMCALL_PROCESS_KILLALL, process_killall, WITH_ANSWER, TVOID(result), TINT(reset_pid)) sep \
  ACTION(SIMCALL_PROCESS_CLEANUP, process_cleanup, WITH_ANSWER, TVOID(result), TSPEC(process, smx_process_t)) sep \
  ACTION(SIMCALL_PROCESS_CHANGE_HOST, process_change_host, WITH_ANSWER, TVOID(result), TSPEC(process, smx_process_t), TSPEC(dest, smx_host_t)) sep \
  ACTION(SIMCALL_PROCESS_SUSPEND, process_suspend, WITHOUT_ANSWER, TVOID(result), TSPEC(process, smx_process_t)) sep \
  ACTION(SIMCALL_PROCESS_RESUME, process_resume, WITH_ANSWER, TVOID(result), TSPEC(process, smx_process_t)) sep \
  ACTION(SIMCALL_PROCESS_COUNT, process_count, WITH_ANSWER, TINT(result)) sep \
+ ACTION(SIMCALL_PROCESS_GET_PID, process_get_PID, WITH_ANSWER, TINT(result), TSPEC(process, smx_process_t)) sep  \
+ ACTION(SIMCALL_PROCESS_GET_PPID, process_get_PPID, WITH_ANSWER, TINT(result), TSPEC(process, smx_process_t)) sep  \
  ACTION(SIMCALL_PROCESS_GET_DATA, process_get_data, WITH_ANSWER, TPTR(result), TSPEC(process, smx_process_t)) sep \
  ACTION(SIMCALL_PROCESS_SET_DATA, process_set_data, WITH_ANSWER, TVOID(result), TSPEC(process, smx_process_t), TPTR(data)) sep \
  ACTION(SIMCALL_PROCESS_GET_HOST, process_get_host, WITH_ANSWER, TSPEC(result, smx_host_t), TSPEC(process, smx_process_t)) sep \
diff --combined src/simix/smx_user.c
@@@ -274,44 -274,6 +274,44 @@@ e_smx_state_t simcall_host_execution_wa
    return simcall_BODY_host_execution_wait(execution);
  }
  
 +
 +/**
 + * \ingroup simix_vm_management
 + * \brief Returns a dict of the properties assigned to a host.
 + *
 + * \param host A host
 + * \return The properties of this host
 + */
 +void* simcall_vm_ws_create(const char *name, smx_host_t phys_host){
 +  return simcall_BODY_vm_ws_create(name, phys_host);
 +}
 +
 +void simcall_vm_start(smx_host_t vm) {
 +{
 +  simcall_BODY_set_vm_state(vm, msg_vm_state_running);
 +}
 +
 +void simcall_vm_suspend(smx_host_t vm)
 +{
 +  /* will jump to SIMIX_pre_vm_suspend */
 +  simcall_BODY_vm_suspend(vm);
 +}
 +
 +void simcall_vm_shutdown(smx_host_t vm)
 +{
 +  /* will jump to SIMIX_pre_vm_shutdown */
 +  simcall_BODY_vm_shutdown(vm);
 +}
 +
 +void simcall_vm_destroy(smx_host_t vm)
 +{
 +  /*
 +   * simcall_BODY_ is defined in src/simix/smx_smurf_private.h.
 +   * This function will jump to SIMIX_pre_vm_destroy.
 +   **/
 +  simcall_BODY_vm_destroy(vm);
 +}
 +
  /**
   * \ingroup simix_process_management
   * \brief Creates and runs a new SIMIX process.
@@@ -361,9 -323,9 +361,9 @@@ void simcall_process_kill(smx_process_
   * \ingroup simix_process_management
   * \brief Kills all SIMIX processes.
   */
- void simcall_process_killall(void)
+ void simcall_process_killall(int reset_pid)
  {
-   simcall_BODY_process_killall();
+   simcall_BODY_process_killall(reset_pid);
  }
  
  /**
@@@ -431,6 -393,38 +431,38 @@@ int simcall_process_count(void
    return simcall_BODY_process_count();
  }
  
+ /**
+  * \ingroup simix_process_management
+  * \brief Return the PID of a #smx_process_t.
+  * \param process a SIMIX process
+  * \return the PID of this process
+  */
+ int simcall_process_get_PID(smx_process_t process)
+ {
+   if (process == SIMIX_process_self()) {
+     /* avoid a simcall if this function is called by the process itself */
+     return SIMIX_process_get_PID(process);
+   }
+   return simcall_BODY_process_get_PID(process);
+ }
+ /**
+  * \ingroup simix_process_management
+  * \brief Return the parent PID of a #smx_process_t.
+  * \param process a SIMIX process
+  * \return the PID of this process parenrt
+  */
+ int simcall_process_get_PPID(smx_process_t process)
+ {
+   if (process == SIMIX_process_self()) {
+     /* avoid a simcall if this function is called by the process itself */
+     return SIMIX_process_get_PPID(process);
+   }
+   return simcall_BODY_process_get_PPID(process);
+ }
  /**
   * \ingroup simix_process_management
   * \brief Return the user data of a #smx_process_t.