From: degomme Date: Thu, 13 Jun 2013 00:03:47 +0000 (+0200) Subject: Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid X-Git-Tag: v3_9_90~274^2~14 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/908f43d575e3b19014f39ba209da997ab6e3fa2c?hp=b085fe247ae2cf2a6e36863a54f794deb4f342f5 Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid --- diff --git a/buildtools/Cmake/DefinePackages.cmake b/buildtools/Cmake/DefinePackages.cmake index 93d21144e3..4612ad1cc0 100644 --- a/buildtools/Cmake/DefinePackages.cmake +++ b/buildtools/Cmake/DefinePackages.cmake @@ -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 diff --git a/buildtools/Cmake/MakeExe.cmake b/buildtools/Cmake/MakeExe.cmake index 33e9e2e36a..defe59639c 100644 --- a/buildtools/Cmake/MakeExe.cmake +++ b/buildtools/Cmake/MakeExe.cmake @@ -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) diff --git a/buildtools/Cmake/MakeJava.cmake b/buildtools/Cmake/MakeJava.cmake index a861c109fc..86d7dd372d 100644 --- a/buildtools/Cmake/MakeJava.cmake +++ b/buildtools/Cmake/MakeJava.cmake @@ -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 diff --git a/examples/java/io/Node.java b/examples/java/io/Node.java index 6885c7d8f9..353db84945 100644 --- a/examples/java/io/Node.java +++ b/examples/java/io/Node.java @@ -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); } } diff --git a/examples/msg/io/file.c b/examples/msg/io/file.c index bcd2d94223..84bded3c8b 100644 --- a/examples/msg/io/file.c +++ b/examples/msg/io/file.c @@ -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)); diff --git a/examples/msg/io/file_unlink.c b/examples/msg/io/file_unlink.c index 60dcadc25f..30c7c17469 100644 --- a/examples/msg/io/file_unlink.c +++ b/examples/msg/io/file_unlink.c @@ -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 index 0000000000..d8b48ddf74 --- /dev/null +++ b/examples/msg/semaphores/CMakeLists.txt @@ -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 + ) diff --git a/examples/msg/semaphores/synchro.c b/examples/msg/semaphores/synchro.c index b63a759415..b66b1d3ad3 100644 --- a/examples/msg/semaphores/synchro.c +++ b/examples/msg/semaphores/synchro.c @@ -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); } diff --git a/examples/smpi/CMakeLists.txt b/examples/smpi/CMakeLists.txt index 58d9040926..669d3e3e60 100644 --- a/examples/smpi/CMakeLists.txt +++ b/examples/smpi/CMakeLists.txt @@ -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 diff --git a/include/msg/datatypes.h b/include/msg/datatypes.h index 1e456ee34a..2661276ffb 100644 --- a/include/msg/datatypes.h +++ b/include/msg/datatypes.h @@ -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 ************************************ */ diff --git a/include/msg/msg.h b/include/msg/msg.h index df345d20d9..920a80c0b8 100644 --- a/include/msg/msg.h +++ b/include/msg/msg.h @@ -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); diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index d6252f069f..b3305caee3 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -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); diff --git a/src/bindings/java/jmsg.c b/src/bindings/java/jmsg.c index 29428b3d1c..64b5ef5f68 100644 --- a/src/bindings/java/jmsg.c +++ b/src/bindings/java/jmsg.c @@ -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) { diff --git a/src/bindings/java/jmsg.h b/src/bindings/java/jmsg.h index 73e9ad9460..4d9a5d4d91 100644 --- a/src/bindings/java/jmsg.h +++ b/src/bindings/java/jmsg.h @@ -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 index 0000000000..30f8b0ed67 --- /dev/null +++ b/src/bindings/java/jmsg_as.c @@ -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, "", "()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 index 0000000000..00b21fc986 --- /dev/null +++ b/src/bindings/java/jmsg_as.h @@ -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 +#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 */ diff --git a/src/bindings/java/jmsg_file.c b/src/bindings/java/jmsg_file.c index 63f4992d6c..d1e57c2e84 100644 --- a/src/bindings/java/jmsg_file.c +++ b/src/bindings/java/jmsg_file.c @@ -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 diff --git a/src/bindings/java/jmsg_file.h b/src/bindings/java/jmsg_file.h index dfa3690b0c..182bef1218 100644 --- a/src/bindings/java/jmsg_file.h +++ b/src/bindings/java/jmsg_file.h @@ -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 diff --git a/src/bindings/java/jmsg_vm.h b/src/bindings/java/jmsg_vm.h index b0146dea7c..49d54b2b0e 100644 --- a/src/bindings/java/jmsg_vm.h +++ b/src/bindings/java/jmsg_vm.h @@ -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 index 0000000000..f895e1acb9 --- /dev/null +++ b/src/bindings/java/org/simgrid/msg/As.java @@ -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(); + } +} diff --git a/src/bindings/java/org/simgrid/msg/Host.java b/src/bindings/java/org/simgrid/msg/Host.java index 11605f93a7..82a4753615 100644 --- a/src/bindings/java/org/simgrid/msg/Host.java +++ b/src/bindings/java/org/simgrid/msg/Host.java @@ -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); diff --git a/src/bindings/java/org/simgrid/msg/Msg.java b/src/bindings/java/org/simgrid/msg/Msg.java index c06adb312a..5a08809b2a 100644 --- a/src/bindings/java/org/simgrid/msg/Msg.java +++ b/src/bindings/java/org/simgrid/msg/Msg.java @@ -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. * diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index f6c7bc16be..ae2e61dd1a 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -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 **************************/ /*******************************************/ diff --git a/src/msg/msg_environment.c b/src/msg/msg_environment.c index 497b254c37..77c876146d 100644 --- a/src/msg/msg_environment.c +++ b/src/msg/msg_environment.c @@ -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); +} diff --git a/src/msg/msg_io.c b/src/msg/msg_io.c index b15cdb58d9..798e7e2174 100644 --- a/src/msg/msg_io.c +++ b/src/msg/msg_io.c @@ -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 diff --git a/src/simix/smx_io.c b/src/simix/smx_io.c index 1b00eedf10..9f4f6dc876 100644 --- a/src/simix/smx_io.c +++ b/src/simix/smx_io.c @@ -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); diff --git a/src/simix/smx_io_private.h b/src/simix/smx_io_private.h index 0fd7e61669..c4f1d6528e 100644 --- a/src/simix/smx_io_private.h +++ b/src/simix/smx_io_private.h @@ -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); diff --git a/src/simix/smx_smurf_private.h b/src/simix/smx_smurf_private.h index 29144e0d1a..5fccaace60 100644 --- a/src/simix/smx_smurf_private.h +++ b/src/simix/smx_smurf_private.h @@ -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 \ diff --git a/src/simix/smx_user.c b/src/simix/smx_user.c index d7580c39da..544f97b8c0 100644 --- a/src/simix/smx_user.c +++ b/src/simix/smx_user.c @@ -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); } /** diff --git a/src/surf/storage.c b/src/surf/storage.c index 98d74e7663..b328e8be27 100644 --- a/src/surf/storage.c +++ b/src/surf/storage.c @@ -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 { diff --git a/src/surf/surf_private.h b/src/surf/surf_private.h index 8358de6a12..dd54c47b5e 100644 --- a/src/surf/surf_private.h +++ b/src/surf/surf_private.h @@ -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; diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 563bcc07df..1efbed43fe 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -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; +} diff --git a/src/surf/workstation.c b/src/surf/workstation.c index b19db9d383..3b3b9df090 100644 --- a/src/surf/workstation.c +++ b/src/surf/workstation.c @@ -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) diff --git a/tools/check_dist_archive.exclude b/tools/check_dist_archive.exclude index 61a58e55da..4ded2ab979 100644 --- a/tools/check_dist_archive.exclude +++ b/tools/check_dist_archive.exclude @@ -8,6 +8,7 @@ - Makefile - doc/html/.* ++ \.cproject + \.gitignore + README\.(coding|git) + mk_win-dist.sh