Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
authordegomme <degomme@debian.localdomain>
Thu, 13 Jun 2013 00:03:47 +0000 (02:03 +0200)
committerdegomme <degomme@debian.localdomain>
Thu, 13 Jun 2013 00:03:47 +0000 (02:03 +0200)
34 files changed:
buildtools/Cmake/DefinePackages.cmake
buildtools/Cmake/MakeExe.cmake
buildtools/Cmake/MakeJava.cmake
examples/java/io/Node.java
examples/msg/io/file.c
examples/msg/io/file_unlink.c
examples/msg/semaphores/CMakeLists.txt [new file with mode: 0644]
examples/msg/semaphores/synchro.c
examples/smpi/CMakeLists.txt
include/msg/datatypes.h
include/msg/msg.h
include/simgrid/simix.h
src/bindings/java/jmsg.c
src/bindings/java/jmsg.h
src/bindings/java/jmsg_as.c [new file with mode: 0644]
src/bindings/java/jmsg_as.h [new file with mode: 0644]
src/bindings/java/jmsg_file.c
src/bindings/java/jmsg_file.h
src/bindings/java/jmsg_vm.h
src/bindings/java/org/simgrid/msg/As.java [new file with mode: 0644]
src/bindings/java/org/simgrid/msg/Host.java
src/bindings/java/org/simgrid/msg/Msg.java
src/include/surf/surf.h
src/msg/msg_environment.c
src/msg/msg_io.c
src/simix/smx_io.c
src/simix/smx_io_private.h
src/simix/smx_smurf_private.h
src/simix/smx_user.c
src/surf/storage.c
src/surf/surf_private.h
src/surf/surf_routing.c
src/surf/workstation.c
tools/check_dist_archive.exclude

index 93d2114..4612ad1 100644 (file)
@@ -405,6 +405,8 @@ set(BINDINGS_SRC
 set(JMSG_C_SRC
   src/bindings/java/jmsg.c
   src/bindings/java/jmsg.h
+  src/bindings/java/jmsg_as.c
+  src/bindings/java/jmsg_as.h
   src/bindings/java/jmsg_comm.c
   src/bindings/java/jmsg_comm.h
   src/bindings/java/jmsg_file.c
@@ -430,6 +432,7 @@ set(JMSG_C_SRC
 )
 
 set(JMSG_JAVA_SRC
+  src/bindings/java/org/simgrid/msg/As.java    
   src/bindings/java/org/simgrid/msg/Comm.java
   src/bindings/java/org/simgrid/msg/File.java
   src/bindings/java/org/simgrid/msg/Host.java
@@ -844,14 +847,11 @@ set(EXAMPLES_CMAKEFILES_TXT
   examples/java/startKillTime/CMakeLists.txt
   examples/java/suspend/CMakeLists.txt
   examples/java/tracing/CMakeLists.txt
-  examples/scala/CMakeLists.txt
-  examples/scala/masterslave/CMakeLists.txt
-  examples/scala/master_slave_bypass/CMakeLists.txt
-  examples/scala/master_slave_kill/CMakeLists.txt
   examples/lua/CMakeLists.txt
   examples/msg/CMakeLists.txt
   examples/msg/actions/CMakeLists.txt
   examples/msg/bittorrent/CMakeLists.txt
+  examples/msg/chainsend/CMakeLists.txt
   examples/msg/chord/CMakeLists.txt
   examples/msg/cloud/CMakeLists.txt
   examples/msg/gpu/CMakeLists.txt
@@ -867,12 +867,16 @@ set(EXAMPLES_CMAKEFILES_TXT
   examples/msg/pmm/CMakeLists.txt
   examples/msg/priority/CMakeLists.txt
   examples/msg/properties/CMakeLists.txt
+  examples/msg/semaphores/CMakeLists.txt
   examples/msg/sendrecv/CMakeLists.txt
-  examples/msg/chainsend/CMakeLists.txt
   examples/msg/start_kill_time/CMakeLists.txt
   examples/msg/suspend/CMakeLists.txt
   examples/msg/token_ring/CMakeLists.txt
   examples/msg/tracing/CMakeLists.txt
+  examples/scala/CMakeLists.txt
+  examples/scala/master_slave_bypass/CMakeLists.txt
+  examples/scala/master_slave_kill/CMakeLists.txt
+  examples/scala/masterslave/CMakeLists.txt
   examples/simdag/CMakeLists.txt
   examples/simdag/dax/CMakeLists.txt
   examples/simdag/dot/CMakeLists.txt
@@ -890,20 +894,20 @@ set(TESHSUITE_CMAKEFILES_TXT
   teshsuite/msg/CMakeLists.txt
   teshsuite/msg/trace/CMakeLists.txt
   teshsuite/simdag/CMakeLists.txt
+  teshsuite/simdag/availability/CMakeLists.txt
   teshsuite/simdag/network/CMakeLists.txt
   teshsuite/simdag/network/mxn/CMakeLists.txt
   teshsuite/simdag/network/p2p/CMakeLists.txt
   teshsuite/simdag/partask/CMakeLists.txt
   teshsuite/simdag/platforms/CMakeLists.txt
-  teshsuite/simdag/availability/CMakeLists.txt
-  teshsuite/xbt/CMakeLists.txt
   teshsuite/smpi/CMakeLists.txt
   teshsuite/smpi/mpich-test/CMakeLists.txt
-  teshsuite/smpi/mpich-test/env/CMakeLists.txt
   teshsuite/smpi/mpich-test/coll/CMakeLists.txt
   teshsuite/smpi/mpich-test/context/CMakeLists.txt
+  teshsuite/smpi/mpich-test/env/CMakeLists.txt
   teshsuite/smpi/mpich-test/profile/CMakeLists.txt
   teshsuite/smpi/mpich-test/pt2pt/CMakeLists.txt
+  teshsuite/xbt/CMakeLists.txt
   )
 
 set(TOOLS_CMAKEFILES_TXT
index 33e9e2e..defe596 100644 (file)
@@ -10,29 +10,6 @@ add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/tools)
 ##################################################################
 
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/tools/tesh)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/tools/graphicator/)
-
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/testsuite/xbt)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/testsuite/surf)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/xbt)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/network)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/network/p2p)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/network/mxn)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/partask)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/platforms)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/availability)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test/env)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test/coll)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test/context)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test/profile)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test/pt2pt)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/msg)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/msg/trace)
-
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/async)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/bittorrent)
@@ -52,43 +29,67 @@ add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/startKillTime)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/suspend)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/tracing)
 
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/scala)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/scala/masterslave)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/scala/master_slave_bypass)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/scala/master_slave_kill)
-
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/properties)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/actions)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/migration)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/chainsend)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/suspend)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/parallel_task)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/priority)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/icomms)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/bittorrent)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/chainsend)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/chord)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/kademlia)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/pmm)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/start_kill_time)
-
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/io)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/cloud)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/gpu)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/tracing)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/mc)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/gtnets)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/icomms)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/io)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/kademlia)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/mc)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/migration)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/ns3)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/parallel_task)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/pmm)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/priority)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/properties)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/semaphores)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/start_kill_time)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/suspend)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/tracing)
+
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/scala)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/scala/master_slave_bypass)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/scala/master_slave_kill)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/scala/masterslave)
 
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/simdag)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/simdag/dax)
-add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/simdag/goal)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/simdag/dot)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/simdag/goal)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/simdag/metaxml)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/simdag/properties)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/simdag/scheduling)
 
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi/MM)
+
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/msg)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/msg/trace)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/availability)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/network)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/network/mxn)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/network/p2p)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/partask)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/platforms)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test/coll)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test/context)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test/env)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test/profile)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich-test/pt2pt)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/teshsuite/xbt)
+
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/testsuite/surf)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/testsuite/xbt)
+
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/tools/graphicator/)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/tools/tesh)
index a861c10..86d7dd3 100644 (file)
@@ -26,10 +26,11 @@ else()
 endif()
 message("-- [Java] SG_java includes: ${CHECK_INCLUDES}")
 
+target_link_libraries(SG_java simgrid)
+
 if(WIN32)
-  get_target_property(SIMGRID_LIB_NAME_NAME SG_java LIBRARY_OUTPUT_NAME)
   set_target_properties(SG_java PROPERTIES
-    LINK_FLAGS "-Wl,--subsystem,windows,--kill-at ${SIMGRID_LIB_NAME}"
+    LINK_FLAGS "-Wl,--subsystem,windows,--kill-at"
     PREFIX "")
   find_path(PEXPORTS_PATH NAMES pexports.exe PATHS NO_DEFAULT_PATHS)
   message(STATUS "pexports: ${PEXPORTS_PATH}")
@@ -37,8 +38,6 @@ if(WIN32)
     add_custom_command(TARGET SG_java POST_BUILD
       COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/SG_java.dll > ${CMAKE_BINARY_DIR}/SG_java.def)
   endif(PEXPORTS_PATH)
-else()
-  target_link_libraries(SG_java simgrid)
 endif()
 
 # Rules to build simgrid.jar
index 6885c7d..353db84 100644 (file)
@@ -54,6 +54,6 @@ public class Node extends Process {
                Msg.info("Having write " + write + " on " + filename);
 
                read = file.read(10000000,1);
-               Msg.info("Having read " + read + " on " + filename);            
+               Msg.info("Having read " + read + " on " + filename);    
        }
 }
index bcd2d94..84bded3 100644 (file)
@@ -49,13 +49,13 @@ int host(int argc, char *argv[])
 
   XBT_INFO("\tOpen file '%s'",file->name);
 
-  read = MSG_file_read(ptr,10000000,sizeof(char*),file);     // Read for 10MB
+  read = MSG_file_read(ptr,10000000,file);     // Read for 10MB
   XBT_INFO("\tHave read    %zu on %s",read,file->name);
 
-  write = MSG_file_write(ptr,100000,sizeof(char*),file);  // Write for 100KB
+  write = MSG_file_write(ptr,100000,file);  // Write for 100KB
   XBT_INFO("\tHave written %zu on %s",write,file->name);
 
-  read = MSG_file_read(ptr,110000,sizeof(char*),file);     // Read for 110KB
+  read = MSG_file_read(ptr,110000,file);     // Read for 110KB
   XBT_INFO("\tHave read    %zu on %s (of size %zu)",read,file->name,
       MSG_file_get_size(file));
 
index 60dcadc..30c7c17 100644 (file)
@@ -47,7 +47,7 @@ int host(int argc, char *argv[])
   file = MSG_file_open(mount,FILENAME1);
 
   // Write into the new file
-  write = MSG_file_write(ptr,100000,sizeof(char*),file);  // Write for 100Ko
+  write = MSG_file_write(ptr,100000,file);  // Write for 100Ko
   XBT_INFO("\tHave written %zu on %s",write,file->name);
 
   // Close the file
diff --git a/examples/msg/semaphores/CMakeLists.txt b/examples/msg/semaphores/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d8b48dd
--- /dev/null
@@ -0,0 +1,30 @@
+cmake_minimum_required(VERSION 2.6)
+
+set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
+
+add_executable(synchro synchro.c)
+
+### Add definitions for compile
+target_link_libraries(synchro simgrid)
+
+set(tesh_files
+  ${tesh_files}
+  PARENT_SCOPE
+  )
+set(xml_files
+  ${xml_files}
+  PARENT_SCOPE
+  )
+set(examples_src
+  ${examples_src}
+  ${CMAKE_CURRENT_SOURCE_DIR}/synchro.c
+  PARENT_SCOPE
+  )
+set(bin_files
+  ${bin_files}
+  PARENT_SCOPE
+  )
+set(txt_files
+  ${txt_files}
+  PARENT_SCOPE
+  )
index b63a759..b66b1d3 100644 (file)
@@ -8,7 +8,7 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(msg_semaphore_example,
 
 msg_sem_t sem;
 
-int peer(int argc, char* argv[]){
+static int peer(int argc, char* argv[]){
 
   int i = 0; 
   
@@ -27,6 +27,8 @@ int peer(int argc, char* argv[]){
   }
   MSG_process_sleep(50);
   XBT_INFO("Done");
+
+  return 0;
 }
 
 int main(int argc, char* argv[]) {
@@ -70,5 +72,5 @@ int main(int argc, char* argv[]) {
 
   msg_error_t res = MSG_main();
   printf("Finished\n");
-  return 0;
+  return (res != MSG_OK);
 }
index 58d9040..669d3e3 100644 (file)
@@ -62,11 +62,14 @@ set(txt_files
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions0.txt
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions1.txt
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_allReduce.txt
+  ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_allgatherv.txt
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_alltoall.txt
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_alltoallv.txt
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_barrier.txt
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_bcast.txt
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_bcast_reduce_datatypes.txt
+  ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_gather.txt
+  ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_reducescatter.txt
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_waitall.txt
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/actions_with_isend.txt
   ${CMAKE_CURRENT_SOURCE_DIR}/replay/split_traces
index 1e456ee..2661276 100644 (file)
@@ -26,6 +26,8 @@ SG_BEGIN_DECL()
  * want to send your task, but only the name of this mailbox. */
 typedef struct s_smx_rvpoint *msg_mailbox_t;
 
+/* ******************************** Environment ************************************ */
+typedef struct s_as *msg_as_t;
 
 /* ******************************** Host ************************************ */
 
index df345d2..920a80c 100644 (file)
@@ -69,12 +69,17 @@ XBT_PUBLIC(void) MSG_set_function(const char *host_id,
 XBT_PUBLIC(double) MSG_get_clock(void);
 XBT_PUBLIC(unsigned long int) MSG_get_sent_msg(void);
 
+/************************** Environment ***********************************/
+XBT_PUBLIC(msg_as_t) MSG_environment_get_routing_root(void);
+XBT_PUBLIC(const char *) MSG_environment_as_get_name(msg_as_t as);
+XBT_PUBLIC(xbt_dict_t) MSG_environment_as_get_routing_sons(msg_as_t as);
+XBT_PUBLIC(const char *) MSG_environment_as_get_property_value(msg_as_t as, const char *name);
+XBT_PUBLIC(const char *) MSG_environment_as_get_model(msg_as_t as);
+XBT_PUBLIC(xbt_dynar_t) MSG_environment_as_get_hosts(msg_as_t as);
 
 /************************** File handling ***********************************/
-XBT_PUBLIC(size_t) MSG_file_read(void* ptr, size_t size, size_t nmemb,
-                                 msg_file_t fd);
-XBT_PUBLIC(size_t) MSG_file_write(const void* ptr, size_t size, size_t nmemb,
-                                  msg_file_t fd);
+XBT_PUBLIC(size_t) MSG_file_read(void* ptr, size_t size, msg_file_t fd);
+XBT_PUBLIC(size_t) MSG_file_write(const void* ptr, size_t size, msg_file_t fd);
 XBT_PUBLIC(msg_file_t) MSG_file_open(const char* mount, const char* path);
 XBT_PUBLIC(int) MSG_file_close(msg_file_t fd);
 XBT_PUBLIC(size_t) MSG_file_get_size(msg_file_t fd);
index d6252f0..b3305ca 100644 (file)
@@ -460,10 +460,9 @@ XBT_PUBLIC(void) simcall_sem_acquire_timeout(smx_sem_t sem,
                                              double max_duration);
 XBT_PUBLIC(int) simcall_sem_get_capacity(smx_sem_t sem);
 
-XBT_PUBLIC(double) simcall_file_read(void* ptr, size_t size, size_t nmemb,
-                                     smx_file_t fd);
+XBT_PUBLIC(size_t) simcall_file_read(void* ptr, size_t size, smx_file_t fd);
 XBT_PUBLIC(size_t) simcall_file_write(const void* ptr, size_t size,
-                                      size_t nmemb, smx_file_t fd);
+                                      smx_file_t fd);
 XBT_PUBLIC(smx_file_t) simcall_file_open(const char* storage, const char* path);
 XBT_PUBLIC(int) simcall_file_close(smx_file_t fd);
 XBT_PUBLIC(int) simcall_file_unlink(smx_file_t fd);
index 29428b3..64b5ef5 100644 (file)
@@ -16,6 +16,8 @@
 
 #include "jmsg_process.h"
 
+#include "jmsg_as.h"
+
 #include "jmsg_host.h"
 #include "jmsg_task.h"
 #include "jxbt_utilities.h"
@@ -170,6 +172,26 @@ Java_org_simgrid_msg_Msg_createEnvironment(JNIEnv * env, jclass cls,
 
   (*env)->ReleaseStringUTFChars(env, jplatformFile, platformFile);
 }
+
+JNIEXPORT jobject JNICALL
+Java_org_simgrid_msg_Msg_environmentGetRoutingRoot(JNIEnv * env, jclass cls)
+{
+  msg_as_t as = MSG_environment_get_routing_root();
+  jobject jas = jas_new_instance(env);
+  if (!jas) {
+    jxbt_throw_jni(env, "java As instantiation failed");
+    return NULL;
+  }
+  jas = jas_ref(env, jas);
+  if (!jas) {
+    jxbt_throw_jni(env, "new global ref allocation failed");
+    return NULL;
+  }
+  jas_bind(jas, as, env);
+
+  return (jobject) jas;
+}
+
 JNIEXPORT void JNICALL
 Java_org_simgrid_msg_Msg_debug(JNIEnv * env, jclass cls, jstring js)
 {
index 73e9ad9..4d9a5d4 100644 (file)
@@ -56,6 +56,8 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_critical(JNIEnv *, jclass,
 JNIEXPORT void JNICALL
 Java_org_simgrid_msg_Msg_createEnvironment(JNIEnv * env, jclass cls,
                                        jstring jplatformFile);
+JNIEXPORT jobject JNICALL
+Java_org_simgrid_msg_Msg_environmentGetRoutingRoot(JNIEnv * env, jclass cls);
 JNIEXPORT void JNICALL
 Java_org_simgrid_msg_Msg_deployApplication(JNIEnv * env, jclass cls,
                                        jstring jdeploymentFile);
diff --git a/src/bindings/java/jmsg_as.c b/src/bindings/java/jmsg_as.c
new file mode 100644 (file)
index 0000000..30f8b0e
--- /dev/null
@@ -0,0 +1,174 @@
+/* Functions related to the java host instances.                            */
+
+/* Copyright (c) 2007-2012. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+  * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "xbt/str.h"
+#include "xbt/dict.h"
+#include "msg/msg.h"
+#include "jmsg_as.h"
+#include "jxbt_utilities.h"
+
+XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg);
+
+static jmethodID jas_method_As_constructor;
+static jfieldID jas_field_As_bind;
+
+jobject jas_new_instance(JNIEnv * env) {
+  jclass cls = jxbt_get_class(env, "org/simgrid/msg/As");
+  return (*env)->NewObject(env, cls, jas_method_As_constructor);
+}
+
+jobject jas_ref(JNIEnv * env, jobject jas) {
+  return (*env)->NewGlobalRef(env, jas);
+}
+
+void jas_unref(JNIEnv * env, jobject jas) {
+  (*env)->DeleteGlobalRef(env, jas);
+}
+
+void jas_bind(jobject jas, msg_as_t as, JNIEnv * env) {
+  (*env)->SetLongField(env, jas, jas_field_As_bind, (jlong) (long) (as));
+}
+
+msg_as_t jas_get_native(JNIEnv * env, jobject jas) {
+  return (msg_as_t) (long) (*env)->GetLongField(env, jas, jas_field_As_bind);
+}
+
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_As_nativeInit(JNIEnv *env, jclass cls) {
+  jclass class_As = (*env)->FindClass(env, "org/simgrid/msg/As");
+  jas_method_As_constructor = (*env)->GetMethodID(env, class_As, "<init>", "()V");
+  jas_field_As_bind = jxbt_get_jfield(env,class_As, "bind", "J");
+  if (!class_As || !jas_method_As_constructor || !jas_field_As_bind) {
+    jxbt_throw_native(env,bprintf("Can't find some fields in Java class. You should report this bug."));
+  }
+}
+
+JNIEXPORT jobject JNICALL
+Java_org_simgrid_msg_As_getName(JNIEnv * env, jobject jas) {
+  msg_as_t as = jas_get_native(env, jas);
+  return (*env)->NewStringUTF(env, MSG_environment_as_get_name(as));
+}
+
+JNIEXPORT jobjectArray JNICALL
+Java_org_simgrid_msg_As_getSons(JNIEnv * env, jobject jas) {
+  int index = 0;
+  jobjectArray jtable;
+  jobject tmp_jas;
+  msg_as_t tmp_as;
+  msg_as_t self_as = jas_get_native(env, jas);
+  
+  xbt_dict_t dict = MSG_environment_as_get_routing_sons(self_as);
+  int count = xbt_dict_length(dict);
+  jclass cls = (*env)->FindClass(env, "org/simgrid/msg/As");
+
+  if (!cls) {
+    return NULL;
+  }
+
+  jtable = (*env)->NewObjectArray(env, (jsize) count, cls, NULL);
+
+  if (!jtable) {
+    jxbt_throw_jni(env, "Hosts table allocation failed");
+    return NULL;
+  }
+
+  xbt_dict_cursor_t cursor=NULL;
+  char *key;
+
+  xbt_dict_foreach(dict,cursor,key,tmp_as) {
+    tmp_jas = jas_new_instance(env);
+    if (!tmp_jas) {
+      jxbt_throw_jni(env, "java As instantiation failed");
+      return NULL;
+    }
+    tmp_jas = jas_ref(env, tmp_jas);
+    if (!tmp_jas) {
+      jxbt_throw_jni(env, "new global ref allocation failed");
+      return NULL;
+    }
+    jas_bind(tmp_jas, tmp_as, env);
+
+    (*env)->SetObjectArrayElement(env, jtable, index, tmp_jas);
+    index++;
+
+  }
+  return jtable;
+}
+
+JNIEXPORT jobject JNICALL
+Java_org_simgrid_msg_As_getProperty(JNIEnv *env, jobject jas, jobject jname) {
+  msg_as_t as = jas_get_native(env, jas);
+
+  if (!as) {
+    jxbt_throw_notbound(env, "as", jas);
+    return NULL;
+  }
+  const char *name = (*env)->GetStringUTFChars(env, jname, 0);
+
+  const char *property = MSG_environment_as_get_property_value(as, name);
+  if (!property) {
+    return NULL;
+  }
+
+  jobject jproperty = (*env)->NewStringUTF(env, property);
+
+  (*env)->ReleaseStringUTFChars(env, jname, name);
+
+  return jproperty;
+}
+
+JNIEXPORT jobject JNICALL
+Java_org_simgrid_msg_As_getModel(JNIEnv * env, jobject jas) {
+  msg_as_t as = jas_get_native(env, jas);
+  return (*env)->NewStringUTF(env, MSG_environment_as_get_model(as));
+}
+
+JNIEXPORT jobjectArray JNICALL
+Java_org_simgrid_msg_As_getHosts(JNIEnv * env, jobject jas)
+{
+  int index;
+  jobjectArray jtable;
+  jobject jhost;
+  jstring jname;
+  msg_host_t host;
+  msg_as_t as = jas_get_native(env, jas);
+
+  xbt_dynar_t table =  MSG_environment_as_get_hosts(as);
+  int count = xbt_dynar_length(table);
+
+  jclass cls = jxbt_get_class(env, "org/simgrid/msg/Host");
+
+  if (!cls) {
+    return NULL;
+  }
+  
+  jtable = (*env)->NewObjectArray(env, (jsize) count, cls, NULL);
+
+  if (!jtable) {
+    jxbt_throw_jni(env, "Hosts table allocation failed");
+    return NULL;
+  }
+
+  for (index = 0; index < count; index++) {
+
+    host = xbt_dynar_get_as(table,index,msg_host_t);
+
+    jhost = (jobject) (MSG_host_get_data(host));
+    if (!jhost) {
+      jname = (*env)->NewStringUTF(env, MSG_host_get_name(host));
+
+      jhost = Java_org_simgrid_msg_Host_getByName(env, cls, jname);
+
+      /* FIXME: leak of jname ? */
+    }
+
+    (*env)->SetObjectArrayElement(env, jtable, index, jhost);
+  }
+  xbt_dynar_free(&table);
+  return jtable;
+}
diff --git a/src/bindings/java/jmsg_as.h b/src/bindings/java/jmsg_as.h
new file mode 100644 (file)
index 0000000..00b21fc
--- /dev/null
@@ -0,0 +1,51 @@
+/* Functions related to the java As instances.                            */
+
+/* Copyright (c) 2007-2012. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+  * under the terms of the license (GNU LGPL) which comes with this package. */
+
+
+#ifndef MSG_JAS_H
+#define MSG_JAS_H
+#include <jni.h>
+#include "msg/msg.h"
+
+/* Functions related to the java host instances.                            */
+
+/* Copyright (c) 2007-2012. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+  * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "msg/msg.h"
+#include "jmsg.h"
+#include "jmsg_host.h"
+
+jobject jas_new_instance(JNIEnv * env);
+jobject jas_ref(JNIEnv * env, jobject jas);
+void jas_unref(JNIEnv * env, jobject jas);
+void jas_bind(jobject jas, msg_as_t as, JNIEnv * env);
+msg_as_t jas_get_native(JNIEnv * env, jobject jas);
+
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_As_nativeInit(JNIEnv *env, jclass cls);
+
+JNIEXPORT jobject JNICALL
+Java_org_simgrid_msg_As_getName(JNIEnv * env, jobject jas);
+
+JNIEXPORT jobjectArray JNICALL
+Java_org_simgrid_msg_As_getSons(JNIEnv * env, jobject jas);
+
+JNIEXPORT jobject JNICALL
+Java_org_simgrid_msg_As_getProperty(JNIEnv *env, jobject jhost, jobject jname);
+
+JNIEXPORT jobject JNICALL
+Java_org_simgrid_msg_As_getModel(JNIEnv * env, jobject jas);
+
+JNIEXPORT jobjectArray JNICALL
+Java_org_simgrid_msg_As_getHosts(JNIEnv * env, jobject jas);
+
+#endif                          /*!MSG_JAS_H */
index 63f4992..d1e57c2 100644 (file)
@@ -36,18 +36,18 @@ Java_org_simgrid_msg_File_open(JNIEnv *env, jobject jfile, jobject jstorage, job
   (*env)->ReleaseStringUTFChars(env, jpath, path);
 }
 JNIEXPORT jlong JNICALL
-Java_org_simgrid_msg_File_read(JNIEnv *env, jobject jfile, jlong jsize, jlong jnmemb) {
+Java_org_simgrid_msg_File_read(JNIEnv *env, jobject jfile, jlong jsize) {
   msg_file_t file = jfile_get_native(env, jfile);
   size_t n;
-  n = MSG_file_read(NULL,(size_t)jsize, (size_t)jnmemb, file);
+  n = MSG_file_read(NULL,(size_t)jsize, file);
   return (jlong)n;
 }
 
 JNIEXPORT jlong JNICALL
-Java_org_simgrid_msg_File_write(JNIEnv *env, jobject jfile, jlong jsize, jlong jnmemb) {
+Java_org_simgrid_msg_File_write(JNIEnv *env, jobject jfile, jlong jsize) {
   msg_file_t file = jfile_get_native(env, jfile);
   size_t n;
-  n = MSG_file_write(NULL, (size_t)jsize, (size_t)jnmemb, file);
+  n = MSG_file_write(NULL, (size_t)jsize, file);
   return (jlong)n;
 }
 JNIEXPORT void JNICALL
index dfa3690..182bef1 100644 (file)
@@ -33,13 +33,13 @@ Java_org_simgrid_msg_File_open(JNIEnv*, jobject, jobject, jobject);
  * Method                      read
  */
 JNIEXPORT jlong JNICALL
-Java_org_simgrid_msg_File_read(JNIEnv*, jobject, jlong, jlong);
+Java_org_simgrid_msg_File_read(JNIEnv*, jobject, jlong);
 /**
  * Class                       org_simgrid_msg_File
  * Method                      write
  */
 JNIEXPORT jlong JNICALL
-Java_org_simgrid_msg_File_write(JNIEnv*, jobject, jlong, jlong);
+Java_org_simgrid_msg_File_write(JNIEnv*, jobject, jlong);
 /**
  * Class                       org_simgrid_msg_File
  * Method                      close
index b0146de..49d54b2 100644 (file)
@@ -100,4 +100,6 @@ Java_org_simgrid_msg_VM_shutdown(JNIEnv *env, jobject jvm);
 JNIEXPORT void JNICALL
 Java_org_simgrid_msg_VM_reboot(JNIEnv *env, jobject jvm);
 
+JNIEXPORT jobject JNICALL
+Java_org_simgrid_msg_VM_get_pm(JNIEnv *env, jobject jvm);
 #endif
diff --git a/src/bindings/java/org/simgrid/msg/As.java b/src/bindings/java/org/simgrid/msg/As.java
new file mode 100644 (file)
index 0000000..f895e1a
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Bindings to the MSG hosts
+ *
+ * Copyright 2006-2012 The SimGrid Team           
+ * All right reserved. 
+ *
+ * This program is free software; you can redistribute 
+ * it and/or modify it under the terms of the license 
+ *(GNU LGPL) which comes with this package. 
+ *
+ */  
+package org.simgrid.msg;
+
+public class As {
+
+    private long bind;
+    
+    protected As() {
+       };
+
+    public String toString (){
+       return this.getName(); 
+    }
+    public native String getName();
+
+    public native As[] getSons();
+
+    public native String getProperty(String name);
+
+    public native String getModel();
+
+    public native Host[] getHosts();
+
+    /**
+      * Class initializer, to initialize various JNI stuff
+      */
+    public static native void nativeInit();
+    static {
+       nativeInit();
+    }
+}
index 11605f9..82a4753 100644 (file)
@@ -110,7 +110,7 @@ public class Host {
      * If there is a need to receive some messages asynchronously, and some not, 
      * two different mailboxes should be used.
      *
-     * @param alias The name of the mailbox 
+     * @param mailboxName The name of the mailbox
      */
     public static native void setAsyncMailbox(String mailboxName);
 
index c06adb3..5a08809 100644 (file)
@@ -192,6 +192,8 @@ public final class Msg {
         */
        public final static native void createEnvironment(String platformFile);
 
+       public final static native As environmentGetRoutingRoot();
+
        /**
         * The method to deploy the simulation.
         *
index f6c7bc1..ae2e61d 100644 (file)
@@ -227,10 +227,10 @@ typedef struct surf_network_model_extension_public {
 typedef struct surf_storage_model_extension_public {
   surf_action_t(*open) (void *storage, const char* mount, const char* path);
   surf_action_t(*close) (void *storage, surf_file_t fd);
-  surf_action_t(*read) (void *storage, void* ptr, double size, size_t nmemb,
+  surf_action_t(*read) (void *storage, void* ptr, size_t size,
                         surf_file_t fd);
   surf_action_t(*write) (void *storage, const void* ptr, size_t size,
-                         size_t nmemb, surf_file_t fd);
+                         surf_file_t fd);
   surf_action_t(*stat) (void *storage, surf_file_t fd);
   surf_action_t(*ls) (void *storage, const char *path);
 } s_surf_model_extension_storage_t;
@@ -263,10 +263,10 @@ typedef struct surf_workstation_model_extension_public {
   surf_action_t(*open) (void *workstation, const char* storage,
                         const char* path);
   surf_action_t(*close) (void *workstation, surf_file_t fd);
-  surf_action_t(*read) (void *workstation, void* ptr, size_t size, size_t nmemb,
+  surf_action_t(*read) (void *workstation, void* ptr, size_t size,
                         surf_file_t fd);
   surf_action_t(*write) (void *workstation, const void* ptr, size_t size,
-                         size_t nmemb, surf_file_t fd);
+                         surf_file_t fd);
   surf_action_t(*stat) (void *workstation, surf_file_t fd);
   int(*unlink) (void *workstation, surf_file_t fd);
   surf_action_t(*ls) (void *workstation, const char* mount, const char *path);
@@ -626,6 +626,17 @@ XBT_PUBLIC_DATA(s_surf_model_description_t) surf_new_model_description[];
  */
 XBT_PUBLIC_DATA(xbt_dynar_t) model_list;
 
+/*******************************************/
+/*** SURF Platform *************************/
+/*******************************************/
+typedef struct s_as *AS_t;
+
+XBT_PUBLIC_DATA(AS_t) surf_AS_get_routing_root(void); 
+XBT_PUBLIC_DATA(const char *) surf_AS_get_name(AS_t as);
+XBT_PUBLIC_DATA(xbt_dict_t) surf_AS_get_routing_sons(AS_t as);
+XBT_PUBLIC_DATA(const char *) surf_AS_get_model(AS_t as);
+XBT_PUBLIC_DATA(xbt_dynar_t) surf_AS_get_hosts(AS_t as);
+
 /*******************************************/
 /*** SURF Globals **************************/
 /*******************************************/
index 497b254..77c8761 100644 (file)
@@ -48,3 +48,32 @@ void MSG_post_create_environment(void) {
       __MSG_host_create(xbt_dict_cursor_get_elm(cursor));
   }
 }
+
+msg_as_t MSG_environment_get_routing_root() {
+  return surf_AS_get_routing_root();
+}
+
+const char *MSG_environment_as_get_name(msg_as_t as) {
+  return surf_AS_get_name(as);
+}
+
+xbt_dict_t MSG_environment_as_get_routing_sons(msg_as_t as) {
+  xbt_dict_t res = surf_AS_get_routing_sons(as);
+  return res;
+}
+
+const char *MSG_environment_as_get_property_value(msg_as_t as, const char *name)
+{
+  xbt_dict_t dict = xbt_lib_get_or_null(as_router_lib, MSG_environment_as_get_name(as), ROUTING_PROP_ASR_LEVEL);
+  if (dict==NULL)
+    return NULL;
+  return xbt_dict_get_or_null(dict, name);
+}
+
+const char *MSG_environment_as_get_model(msg_as_t as) {
+  return surf_AS_get_model(as);
+}
+
+xbt_dynar_t MSG_environment_as_get_hosts(msg_as_t as) {
+  return surf_AS_get_hosts(as);
+}
index b15cdb5..798e7e2 100644 (file)
@@ -23,28 +23,26 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_io, msg,
  * \brief Read elements of a file
  *
  * \param ptr buffer to where the data is copied
- * \param size of each element
- * \param nmemb is the number of elements of data to read
+ * \param size of the file to read
  * \param fd is a the file descriptor
  * \return the number of items successfully read
  */
-size_t MSG_file_read(void* ptr, size_t size, size_t nmemb, msg_file_t fd)
+size_t MSG_file_read(void* ptr, size_t size, msg_file_t fd)
 {
-  return simcall_file_read(ptr, size, nmemb, fd->simdata->smx_file);
+  return simcall_file_read(ptr, size, fd->simdata->smx_file);
 }
 
 /** \ingroup msg_file_management
  * \brief Write elements into a file
  *
  * \param ptr buffer from where the data is copied
- * \param size of each element
- * \param nmemb is the number of elements of data to write
+ * \param size of the file to write
  * \param fd is a the file descriptor
  * \return the number of items successfully write
  */
-size_t MSG_file_write(const void* ptr, size_t size, size_t nmemb, msg_file_t fd)
+size_t MSG_file_write(const void* ptr, size_t size, msg_file_t fd)
 {
-  return simcall_file_write(ptr, size, nmemb, fd->simdata->smx_file);
+  return simcall_file_write(ptr, size, fd->simdata->smx_file);
 }
 
 /** \ingroup msg_file_management
index 1b00eed..9f4f6dc 100644 (file)
@@ -17,15 +17,15 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_io, simix,
 
 //SIMIX FILE READ
 void SIMIX_pre_file_read(smx_simcall_t simcall, void *ptr, size_t size,
-                        size_t nmemb, smx_file_t fd)
+                       smx_file_t fd)
 {
-  smx_action_t action = SIMIX_file_read(simcall->issuer, ptr, size, nmemb, fd);
+  smx_action_t action = SIMIX_file_read(simcall->issuer, ptr, size, fd);
   xbt_fifo_push(action->simcalls, simcall);
   simcall->issuer->waiting_action = action;
 }
 
 smx_action_t SIMIX_file_read(smx_process_t process, void* ptr, size_t size,
-                             size_t nmemb, smx_file_t fd)
+                             smx_file_t fd)
 {
   smx_action_t action;
   smx_host_t host = process->smx_host;
@@ -46,7 +46,7 @@ smx_action_t SIMIX_file_read(smx_process_t process, void* ptr, size_t size,
 
   action->io.host = host;
   action->io.surf_io =
-      surf_workstation_model->extension.workstation.read(host, ptr, size, nmemb,
+      surf_workstation_model->extension.workstation.read(host, ptr, size,
                                                          fd->surf_file);
 
   surf_workstation_model->action_data_set(action->io.surf_io, action);
@@ -57,15 +57,15 @@ smx_action_t SIMIX_file_read(smx_process_t process, void* ptr, size_t size,
 
 //SIMIX FILE WRITE
 void SIMIX_pre_file_write(smx_simcall_t simcall, const void *ptr, size_t size,
-                         size_t nmemb, smx_file_t fd)
+                         smx_file_t fd)
 {
-  smx_action_t action = SIMIX_file_write(simcall->issuer, ptr, size, nmemb, fd);
+  smx_action_t action = SIMIX_file_write(simcall->issuer, ptr, size, fd);
   xbt_fifo_push(action->simcalls, simcall);
   simcall->issuer->waiting_action = action;
 }
 
 smx_action_t SIMIX_file_write(smx_process_t process, const void* ptr,
-                              size_t size, size_t nmemb, smx_file_t fd)
+                              size_t size, smx_file_t fd)
 {
   smx_action_t action;
   smx_host_t host = process->smx_host;
@@ -87,7 +87,7 @@ smx_action_t SIMIX_file_write(smx_process_t process, const void* ptr,
   action->io.host = host;
   action->io.surf_io =
       surf_workstation_model->extension.workstation.write(host, ptr, size,
-                                                          nmemb, fd->surf_file);
+                                                          fd->surf_file);
 
   surf_workstation_model->action_data_set(action->io.surf_io, action);
   XBT_DEBUG("Create io action %p", action);
index 0fd7e61..c4f1d65 100644 (file)
@@ -11,9 +11,9 @@
 #include "smx_smurf_private.h"
 
 void SIMIX_pre_file_read(smx_simcall_t simcall, void *ptr, size_t size,
-                        size_t nmemb, smx_file_t fd);
+                        smx_file_t fd);
 void SIMIX_pre_file_write(smx_simcall_t simcall, const void *ptr, size_t size,
-                         size_t nmemb, smx_file_t fd);
+                         smx_file_t fd);
 void SIMIX_pre_file_open(smx_simcall_t simcall, const char* mount,
                         const char* path);
 void SIMIX_pre_file_close(smx_simcall_t simcall, smx_file_t fd);
@@ -23,9 +23,9 @@ void SIMIX_pre_file_ls(smx_simcall_t simcall,
 size_t SIMIX_pre_file_get_size(smx_simcall_t simcall, smx_file_t fd);
 
 smx_action_t SIMIX_file_read(smx_process_t process, void* ptr, size_t size,
-                             size_t nmemb, smx_file_t fd);
+                             smx_file_t fd);
 smx_action_t SIMIX_file_write(smx_process_t process, const void* ptr,
-                              size_t size, size_t nmemb, smx_file_t fd);
+                              size_t size, smx_file_t fd);
 smx_action_t SIMIX_file_open(smx_process_t process, const char* storage,
                              const char* path);
 smx_action_t SIMIX_file_close(smx_process_t process, smx_file_t fd);
index 29144e0..5fccaac 100644 (file)
@@ -339,8 +339,8 @@ ACTION(SIMCALL_SEM_WOULD_BLOCK, sem_would_block, WITH_ANSWER, TINT(result), TSPE
 ACTION(SIMCALL_SEM_ACQUIRE, sem_acquire, WITHOUT_ANSWER, TVOID(result), TSPEC(sem, smx_sem_t)) sep \
 ACTION(SIMCALL_SEM_ACQUIRE_TIMEOUT, sem_acquire_timeout, WITHOUT_ANSWER, TVOID(result), TSPEC(sem, smx_sem_t), TDOUBLE(timeout)) sep \
 ACTION(SIMCALL_SEM_GET_CAPACITY, sem_get_capacity, WITH_ANSWER, TINT(result), TSPEC(sem, smx_sem_t)) sep \
-ACTION(SIMCALL_FILE_READ, file_read, WITHOUT_ANSWER, TDOUBLE(result), TPTR(ptr), TSIZE(size), TSIZE(nmemb), TSPEC(fd, smx_file_t)) sep \
-ACTION(SIMCALL_FILE_WRITE, file_write, WITHOUT_ANSWER, TSIZE(result), TCPTR(ptr), TSIZE(size), TSIZE(nmemb), TSPEC(fd, smx_file_t)) sep \
+ACTION(SIMCALL_FILE_READ, file_read, WITHOUT_ANSWER, TSIZE(result), TPTR(ptr), TSIZE(size), TSPEC(fd, smx_file_t)) sep \
+ACTION(SIMCALL_FILE_WRITE, file_write, WITHOUT_ANSWER, TSIZE(result), TCPTR(ptr), TSIZE(size), TSPEC(fd, smx_file_t)) sep \
 ACTION(SIMCALL_FILE_OPEN, file_open, WITHOUT_ANSWER, TSPEC(result, smx_file_t), TSTRING(mount), TSTRING(path)) sep \
 ACTION(SIMCALL_FILE_CLOSE, file_close, WITHOUT_ANSWER, TINT(result), TSPEC(fd, smx_file_t)) sep \
 ACTION(SIMCALL_FILE_UNLINK, file_unlink, WITH_ANSWER, TINT(result), TSPEC(fd, smx_file_t)) sep \
index d7580c3..544f97b 100644 (file)
@@ -1091,19 +1091,19 @@ int simcall_sem_get_capacity(smx_sem_t sem)
  * \ingroup simix_file_management
  *
  */
-double simcall_file_read(void* ptr, size_t size, size_t nmemb, smx_file_t fd)
+size_t simcall_file_read(void* ptr, size_t size, smx_file_t fd)
 {
-  return simcall_BODY_file_read(ptr, size, nmemb, fd);
+  return simcall_BODY_file_read(ptr, size, fd);
 }
 
 /**
  * \ingroup simix_file_management
  *
  */
-size_t simcall_file_write(const void* ptr, size_t size, size_t nmemb,
+size_t simcall_file_write(const void* ptr, size_t size,
                           smx_file_t fd)
 {
-  return simcall_BODY_file_write(ptr, size, nmemb, fd);
+  return simcall_BODY_file_write(ptr, size, fd);
 }
 
 /**
index 98d74e7..b328e8b 100644 (file)
@@ -123,8 +123,8 @@ static surf_action_t storage_action_close(void *storage, surf_file_t fd)
   return action;
 }
 
-static surf_action_t storage_action_read(void *storage, void* ptr, double size,
-                                         size_t nmemb, surf_file_t fd)
+static surf_action_t storage_action_read(void *storage, void* ptr, 
+                                        size_t size, surf_file_t fd)
 {
   if(size > fd->size)
     size = fd->size;
@@ -133,8 +133,7 @@ static surf_action_t storage_action_read(void *storage, void* ptr, double size,
 }
 
 static surf_action_t storage_action_write(void *storage, const void* ptr,
-                                          size_t size, size_t nmemb,
-                                          surf_file_t fd)
+                                          size_t size, surf_file_t fd)
 {
   char *filename = fd->name;
   XBT_DEBUG("\tWrite file '%s' size '%zu/%zu'",filename,size,fd->size);
@@ -539,7 +538,7 @@ static xbt_dict_t parse_storage_content(char *filename, size_t *used_size)
 
   while ((read = xbt_getline(&line, &len, file)) != -1) {
     if (read){
-    if(sscanf(line,"%s %lu",path, (unsigned long*)&size)==2) {
+    if(sscanf(line,"%s %zu",path, &size)==2) {
         *used_size += size;
         xbt_dict_set(parse_content,path,(void*) size,NULL);
       } else {
index 8358de6..dd54c47 100644 (file)
@@ -103,7 +103,6 @@ int net_get_link_latency_limited(surf_action_t action);
  */
 int __surf_is_absolute_file_path(const char *file_path);
 
-typedef struct s_as *AS_t;
 typedef struct s_routing_edge {
   AS_t rc_component;
   e_surf_network_element_type_t rc_type;
index 563bcc0..1efbed4 100644 (file)
@@ -1227,3 +1227,36 @@ void routing_exit(void) {
   finalize_rec(routing_platf->root);
   xbt_free(routing_platf);
 }
+
+AS_t surf_AS_get_routing_root() {
+  return routing_platf->root;  
+}
+
+const char *surf_AS_get_name(AS_t as) {
+  return as->name;
+}
+
+xbt_dict_t surf_AS_get_routing_sons(AS_t as) {
+  return as->routing_sons;
+}
+
+const char *surf_AS_get_model(AS_t as) {
+  return as->model_desc->name;
+}
+
+xbt_dynar_t surf_AS_get_hosts(AS_t as) {
+  xbt_dynar_t elms = as->index_network_elm;
+  sg_routing_edge_t relm;
+  xbt_dictelm_t delm;
+  int index;
+  int count = xbt_dynar_length(elms);
+  xbt_dynar_t res =  xbt_dynar_new(sizeof(xbt_dictelm_t), NULL);
+  for (index = 0; index < count; index++) {
+     relm = xbt_dynar_get_as(elms, index, sg_routing_edge_t);
+     delm = xbt_lib_get_elm_or_null(host_lib, relm->name);
+     if (delm!=NULL) {
+       xbt_dynar_push(res, &delm);
+     }
+  }
+  return res;
+}
index b19db9d..3b3b9df 100644 (file)
@@ -344,21 +344,21 @@ static surf_action_t ws_action_close(void *workstation, surf_file_t fd)
 }
 
 static surf_action_t ws_action_read(void *workstation, void* ptr, size_t size,
-                                    size_t nmemb, surf_file_t fd)
+                                    surf_file_t fd)
 {
   storage_t st = find_storage_on_mount_list(workstation, fd->storage);
   XBT_DEBUG("READ on disk '%s'",st->generic_resource.name);
   surf_model_t model = st->generic_resource.model;
-  return model->extension.storage.read(st, ptr, (double)size, nmemb, fd);
+  return model->extension.storage.read(st, ptr, size, fd);
 }
 
 static surf_action_t ws_action_write(void *workstation, const void* ptr,
-                                     size_t size, size_t nmemb, surf_file_t fd)
+                                     size_t size, surf_file_t fd)
 {
   storage_t st = find_storage_on_mount_list(workstation, fd->storage);
   XBT_DEBUG("WRITE on disk '%s'",st->generic_resource.name);
   surf_model_t model = st->generic_resource.model;
-  return model->extension.storage.write(st,  ptr, size, nmemb, fd);
+  return model->extension.storage.write(st,  ptr, size, fd);
 }
 
 static int ws_file_unlink(void *workstation, surf_file_t fd)
index 61a58e5..4ded2ab 100644 (file)
@@ -8,6 +8,7 @@
 - Makefile
 - doc/html/.*
 
++ \.cproject
 + \.gitignore
 + README\.(coding|git)
 + mk_win-dist.sh