#some tests may take forever on non futexes systems, using busy_wait with n cores < n workers
# default to posix for these tests if futexes are not supported
-if(NOT HAVE_FUTEX_H)
+if(NOT HAVE_FUTEX_H)
SET(CONTEXTS_SYNCHRO --cfg contexts/synchro:posix)
endif()
-
+
INCLUDE(CTest)
ENABLE_TESTING()
ADD_TEST(msg-masterslave-vivaldi-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
ADD_TEST(msg-cloud-two-tasks-vm-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/cloud/ --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/ --cd ${CMAKE_BINARY_DIR}/examples/msg/cloud/ ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/two_tasks_vm.tesh)
-
+
ADD_TEST(msg-cloud-simple-vm-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/cloud/ --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/ --cd ${CMAKE_BINARY_DIR}/examples/msg/cloud/ ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/simple_vm.tesh)
if(CONTEXT_UCONTEXT)
ADD_TEST(java-mutualExclusion ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/mutualExclusion/mutualexclusion.tesh)
ADD_TEST(java-pingPong ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/pingPong/pingpong.tesh)
ADD_TEST(java-priority ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/priority/priority.tesh)
+ ADD_TEST(java-reservation-surf-plugin ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/reservationSurfPlugin/reservation_surf_plugin.tesh)
ADD_TEST(java-startKillTime ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/startKillTime/startKillTime.tesh)
ADD_TEST(java-surf-plugin ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/surfPlugin/surf_plugin.tesh)
ADD_TEST(java-suspend ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/suspend/suspend.tesh)
src/smpi/colls/allgather-smp-simple.c
src/smpi/colls/allgather-spreading-simple.c
src/smpi/colls/allgather-ompi-neighborexchange.c
- src/smpi/colls/allgatherv-GB.c
+ src/smpi/colls/allgatherv-GB.c
src/smpi/colls/allgatherv-pair.c
src/smpi/colls/allgatherv-ring.c
src/smpi/colls/allgatherv-ompi-neighborexchange.c
src/smpi/colls/alltoall-ring-light-barrier.c
src/smpi/colls/alltoall-ring-mpi-barrier.c
src/smpi/colls/alltoall-ring-one-barrier.c
- src/smpi/colls/alltoallv-pair.c
+ src/smpi/colls/alltoallv-pair.c
src/smpi/colls/alltoallv-pair-light-barrier.c
src/smpi/colls/alltoallv-pair-mpi-barrier.c
- src/smpi/colls/alltoallv-pair-one-barrier.c
+ src/smpi/colls/alltoallv-pair-one-barrier.c
src/smpi/colls/alltoallv-ring.c
src/smpi/colls/alltoallv-ring-light-barrier.c
src/smpi/colls/alltoallv-ring-mpi-barrier.c
src/surf/maxmin.cpp
src/surf/network_interface.cpp
src/surf/network_cm02.cpp
- src/surf/network_smpi.cpp
+ src/surf/network_smpi.cpp
src/surf/network_constant.cpp
src/surf/platf_generator.c
src/surf/random_mgr.c
src/surf/storage_n11.cpp
src/surf/surf_interface.cpp
src/surf/surf_c_bindings.cpp
- src/surf/surf_routing.cpp
+ src/surf/surf_routing.cpp
src/surf/surf_routing_cluster.cpp
src/surf/surf_routing_cluster_torus.cpp
src/surf/surf_routing_dijkstra.cpp
set(JMSG_JAVA_SRC
src/bindings/java/org/simgrid/NativeLib.java
- #src/bindings/java/org/simgrid/NativeException.java
- src/bindings/java/org/simgrid/msg/As.java
+ 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
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/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
${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/Plugin.java
${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/Model.java
${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/Resource.java
- ${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/Action.java
+ ${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/Action.java
${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/Cpu.java
- ${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/CpuAction.java
- ${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/NetworkLink.java
- ${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/NetworkAction.java
+ ${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/CpuAction.java
+ ${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/NetworkLink.java
+ ${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/NetworkAction.java
- ${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/LmmConstraint.java
+ ${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/LmmConstraint.java
${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/XbtDict.java
-)
+)
set(JTRACE_C_SRC
src/bindings/java/jtrace.c
doc/msg-tuto-src/platforms/griffon.xml
doc/msg-tuto-src/platforms/peers.xml
doc/msg-tuto-src/platforms/platform.xml
-
+
CITATION.bib
)
examples/java/cloud/CMakeLists.txt
examples/java/cloud/migration/CMakeLists.txt
examples/java/commTime/CMakeLists.txt
- examples/java/surfPlugin/CMakeLists.txt
examples/java/io/CMakeLists.txt
examples/java/kademlia/CMakeLists.txt
examples/java/master_slave_bypass/CMakeLists.txt
examples/java/mutualExclusion/CMakeLists.txt
examples/java/pingPong/CMakeLists.txt
examples/java/priority/CMakeLists.txt
+ examples/java/reservationSurfPlugin/CMakeLists.txt
examples/java/startKillTime/CMakeLists.txt
+ examples/java/surfPlugin/CMakeLists.txt
examples/java/suspend/CMakeLists.txt
examples/java/tracing/CMakeLists.txt
examples/lua/CMakeLists.txt
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/mutualExclusion)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/pingPong)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/priority)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/reservationSurfPlugin)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/startKillTime)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/surfPlugin)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/suspend)
--- /dev/null
+cmake_minimum_required(VERSION 2.6)
+
+set(example java_reservation_surf_plugin)
+set(sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/TestPlugin.java
+ ${CMAKE_CURRENT_SOURCE_DIR}/ReservationPlugin.java
+ ${CMAKE_CURRENT_SOURCE_DIR}/Sender.java
+ ${CMAKE_CURRENT_SOURCE_DIR}/Receiver.java
+ )
+
+if(enable_java)
+ add_custom_command(
+ COMMENT "Building ${example}..."
+ OUTPUT ${example}_compiled
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
+ -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
+ COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
+ COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
+ )
+ add_custom_target(${example} ALL DEPENDS ${example}_compiled)
+endif()
+
+set(tesh_files
+ ${tesh_files}
+ ${CMAKE_CURRENT_SOURCE_DIR}/reservation_surf_plugin.tesh
+ PARENT_SCOPE
+ )
+set(xml_files
+ ${xml_files}
+ ${CMAKE_CURRENT_SOURCE_DIR}/reservationSurfPluginPlatform.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/reservationSurfPluginDeployment.xml
+ PARENT_SCOPE
+ )
+set(examples_src
+ ${examples_src}
+ ${sources}
+ PARENT_SCOPE
+ )
+set(bin_files
+ ${bin_files}
+ PARENT_SCOPE
+ )
+set(txt_files
+ ${txt_files}
+ PARENT_SCOPE
+ )
--- /dev/null
+/* Copyright (c) 2006-2014. 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. */
+
+package reservationSurfPlugin;
+import org.simgrid.msg.Host;
+import org.simgrid.msg.Msg;
+import org.simgrid.msg.MsgException;
+import org.simgrid.msg.Task;
+import org.simgrid.msg.Process;
+
+public class Receiver extends Process {
+ public Receiver(Host host, String name, String[]args) {
+ super(host,name,args);
+ }
+ final double commSizeLat = 1;
+ final double commSizeBw = 100000000;
+
+ public void main(String[] args) throws MsgException {
+
+ Msg.info("helloo!");
+ double communicationTime=0;
+
+ Msg.info("try to get a task");
+
+ Task task = Task.receive(getHost().getName());
+ double timeGot = Msg.getClock();
+
+ Msg.info("Got at time "+ timeGot);
+ task.execute();
+
+ Msg.info("goodbye!");
+ }
+}
--- /dev/null
+package reservationSurfPlugin;
+
+import org.simgrid.surf.*;
+import org.simgrid.msg.Msg;
+import java.util.HashMap;
+
+public class ReservationPlugin extends Plugin {
+
+ public ReservationPlugin() {
+ activateCpuCreatedCallback();
+ activateCpuDestructedCallback();
+ activateCpuStateChangedCallback();
+ activateCpuActionStateChangedCallback();
+
+ activateNetworkLinkCreatedCallback();
+ activateNetworkLinkDestructedCallback();
+ activateNetworkLinkStateChangedCallback();
+ activateNetworkActionStateChangedCallback();
+
+ }
+
+ public void init() {
+ NetworkLink[] route = Surf.getRoute("Jacquelin", "Boivin");
+ Msg.info("RouteLength:"+route.length);
+ Msg.info("RouteName0:"+route[0].getName());
+ Msg.info("RouteName1:"+route[1].getName());
+ }
+
+ public void cpuCreatedCallback(Cpu cpu) {
+ Msg.info("Trace: Cpu created "+cpu.getName());
+ }
+
+ public void cpuDestructedCallback(Cpu cpu) {
+ Msg.info("Trace: Cpu destructed "+cpu.getName());
+ }
+
+ public void cpuStateChangedCallback(Cpu cpu){
+ Msg.info("Trace: Cpu state changed "+cpu.getName());
+ }
+
+ public void cpuActionStateChangedCallback(CpuAction action){
+ Msg.info("Trace: CpuAction state changed "+action.getModel().getName());
+ }
+
+ public void networkLinkCreatedCallback(NetworkLink link) {
+ Msg.info("Trace: NetworkLink created "+link.getName());
+ }
+
+ public void networkLinkDestructedCallback(NetworkLink link) {
+ Msg.info("Trace: NetworkLink destructed "+link.getName());
+ }
+
+ public void networkLinkStateChangedCallback(NetworkLink link){
+ Msg.info("Trace: NetworkLink state changed "+link.getName());
+ }
+
+ public void networkActionStateChangedCallback(NetworkAction action){
+ Msg.info("Trace: NetworkAction state changed "+action.getModel().getName());
+ }
+
+}
--- /dev/null
+/* Copyright (c) 2006-2014. 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. */
+
+package reservationSurfPlugin;
+import org.simgrid.msg.Host;
+import org.simgrid.msg.HostNotFoundException;
+import org.simgrid.msg.Msg;
+import org.simgrid.msg.MsgException;
+import org.simgrid.msg.Process;
+import org.simgrid.msg.Task;
+
+public class Sender extends Process {
+ public Sender(Host host, String name, String[] args) {
+ super(host,name,args);
+ }
+ private final double commSizeLat = 1;
+ final double commSizeBw = 100000000;
+
+ public void main(String[] args) throws MsgException {
+
+ Msg.info("helloo!");
+
+ int hostCount = args.length;
+
+ Msg.info("host count: " + hostCount);
+ String mailboxes[] = new String[hostCount];
+ double time;
+ double computeDuration = 10000;
+ Task task;
+
+ for(int pos = 0; pos < args.length ; pos++) {
+ try {
+ mailboxes[pos] = Host.getByName(args[pos]).getName();
+ } catch (HostNotFoundException e) {
+ Msg.info("Invalid deployment file: " + e.toString());
+ System.exit(1);
+ }
+ }
+
+ for (int pos = 0; pos < hostCount; pos++) {
+ time = Msg.getClock();
+
+ Msg.info("sender time: " + time);
+
+ task = new Task("no name",computeDuration,commSizeLat);
+
+ task.send(mailboxes[pos]);
+ }
+
+ Msg.info("goodbye!");
+ }
+}
--- /dev/null
+/* Copyright (c) 2006-2014. 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. */
+
+package reservationSurfPlugin;
+import org.simgrid.msg.Msg;
+import org.simgrid.msg.NativeException;
+import org.simgrid.surf.Surf;
+import org.simgrid.surf.Cpu;
+
+public class TestPlugin {
+
+ /* This only contains the launcher. If you do nothing more than than you can run
+ * java simgrid.msg.Msg
+ * which also contains such a launcher
+ */
+ static ReservationPlugin tp = new ReservationPlugin();
+
+ public static void main(String[] args) throws NativeException {
+ /* initialize the MSG simulation. Must be done before anything else (even logging). */
+ Msg.init(args);
+ if(args.length < 2) {
+ Msg.info("Usage : TestPlugin platform_file deployment_file");
+ Msg.info("example : TestPlugin ping_pong_platform.xml ping_pong_deployment.xml");
+ System.exit(1);
+ }
+ /* construct the platform and deploy the application */
+ Msg.createEnvironment(args[0]);
+ Msg.deployApplication(args[1]);
+ tp.init();
+
+ // getName());
+ /* execute the simulation. */
+ Msg.run();
+ }
+}
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+<platform version="3">
+ <process host="Jacquelin" function="surfPlugin.Sender">
+ <argument value="Boivin"/>
+ </process>
+<process host="Boivin" function="surfPlugin.Receiver"/>
+</platform>
--- /dev/null
+<?xml version='1.0'?>
+ <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+ <platform version="3">
+ <AS id="AS0" routing="Full">
+ <host id="Jacquelin" power="137.333Mf"/>
+ <host id="Boivin" power="98.095Mf"/>
+ <host id="TeX" power="68.667Mf"/>
+ <link id="link0" bandwidth="1MBps" latency="100ms"/>
+ <link id="link1" bandwidth="1MBps" latency="100ms"/>
+ <link id="link2" bandwidth="1MBps" latency="100ms"/>
+ <route src="Jacquelin" dst="Boivin">
+ <link_ctn id="link0"/>
+ <link_ctn id="link1"/>
+ </route>
+ <route src="Jacquelin" dst="TeX">
+ <link_ctn id="link0"/>
+ <link_ctn id="link2"/>
+ </route>
+
+ </AS>
+ </platform>
--- /dev/null
+#! tesh
+
+$ java -classpath ${classpath:=.} reservationSurfPlugin/TestPlugin ${srcdir:=.}/reservationSurfPlugin/reservationSurfPluginPlatform.xml ${srcdir:=.}/reservationSurfPlugin/reservationSurfPluginDeployment.xml
+> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
+> [0.000000] [jmsg/INFO] Trace: NetworkLink created __loopback__
+> [0.000000] [jmsg/INFO] Trace: NetworkLink state changed __loopback__
+> [0.000000] [jmsg/INFO] Trace: Cpu created Jacquelin
+> [0.000000] [jmsg/INFO] Trace: Cpu state changed Jacquelin
+> [0.000000] [jmsg/INFO] Trace: Cpu created Boivin
+> [0.000000] [jmsg/INFO] Trace: Cpu state changed Boivin
+> [0.000000] [jmsg/INFO] Trace: NetworkLink created link
+> [0.000000] [jmsg/INFO] Trace: NetworkLink state changed link
+> [Jacquelin:surfPlugin.Sender:(1) 0.000000] [jmsg/INFO] helloo!
+> [Jacquelin:surfPlugin.Sender:(1) 0.000000] [jmsg/INFO] host count: 1
+> [Jacquelin:surfPlugin.Sender:(1) 0.000000] [jmsg/INFO] sender time: 0.0
+> [Boivin:surfPlugin.Receiver:(2) 0.000000] [jmsg/INFO] helloo!
+> [Boivin:surfPlugin.Receiver:(2) 0.000000] [jmsg/INFO] try to get a task
+> [1.301001] [jmsg/INFO] Trace: NetworkAction state changed network
+> [Boivin:surfPlugin.Receiver:(2) 1.301001] [jmsg/INFO] Got at time 1.3010010824742269
+> [Jacquelin:surfPlugin.Sender:(1) 1.301001] [jmsg/INFO] goodbye!
+> [1.301103] [jmsg/INFO] Trace: CpuAction state changed cpu
+> [Boivin:surfPlugin.Receiver:(2) 1.301103] [jmsg/INFO] goodbye!
+> [1.301103] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
+> [1.301103] [jmsg/INFO] Trace: Cpu destructed Jacquelin
+> [1.301103] [jmsg/INFO] Trace: Cpu destructed Boivin
+> [1.301103] [jmsg/INFO] Trace: NetworkLink destructed link
+> [1.301103] [jmsg/INFO] Trace: NetworkLink destructed __loopback__
/* File : example.i */
%module(directors="1") Surf
+%include "arrays_java.i"
+
%pragma(java) jniclassimports=%{
import org.simgrid.NativeLib;
-
%}
%pragma(java) jniclasscode=%{
static {
typedef struct lmm_constraint *lmm_constraint_t;
%}
+/* Handle xbt_dynar_t of NetworkLink */
+JAVA_ARRAYSOFCLASSES(NetworkLink);
+%apply NetworkLink[] {NetworkLinkDynar};
+%typemap(jstype) NetworkLinkDynar "NetworkLink[]"
+%typemap(javain) NetworkLinkDynar "NetworkLink.cArrayUnwrap($javainput)"
+
+%typemap(javaout) NetworkLinkDynar {
+ return NetworkLink.cArrayWrap($jnicall, $owner);
+}
+%typemap(out) NetworkLinkDynar {
+ long l = xbt_dynar_length($1);
+ $result = jenv->NewLongArray(l);
+ NetworkLink **lout = (NetworkLink **)xbt_dynar_to_array($1);
+ jenv->SetLongArrayRegion($result, 0, l, (const jlong*)lout);
+ free(lout);
+}
+
+/* Allow to subclass Plugin and send java object to C++ code */
%feature("director") Plugin;
%include "src/bindings/java/surf_swig.hpp"
}
};
-
%rename lmm_constraint LmmConstraint;
struct lmm_constraint {
%extend {
char *getValue(char *key) {return (char*)xbt_dict_get_or_null($self, key);}
}
};
-
SIMIX_clean();
}
+/*NetworkModel *getNetworkModel()
+{
+ return surf_network_model;
+}*/
+
+NetworkLinkDynar getRoute(char *srcName, char *dstName) {
+ RoutingEdge *src = (RoutingEdge*)xbt_lib_get_or_null(host_lib, srcName, ROUTING_HOST_LEVEL);
+ RoutingEdge *dst = (RoutingEdge*)xbt_lib_get_or_null(host_lib, dstName, ROUTING_HOST_LEVEL);
+ if (src==NULL)
+ xbt_die("TOTO");
+ if (dst==NULL)
+ xbt_die("TOTO");
+ printf("src: %s\ndst: %s\n", src->getName(), dst->getName());
+ xbt_dynar_t route = xbt_dynar_new(sizeof(RoutingEdgePtr), NULL);
+ routing_platf->getRouteAndLatency(src, dst, &route, NULL);
+ return route;
+}
+
void Plugin::activateCpuCreatedCallback(){
surf_callback_connect(cpuCreatedCallbacks, boost::bind(&Plugin::cpuCreatedCallback, this, _1));
}
#include "src/surf/network_interface.hpp"
#include "src/surf/maxmin_private.hpp"
+typedef xbt_dynar_t NetworkLinkDynar;
+
double getClock();
-#ifdef __cplusplus
-extern "C" {
-#endif
void clean();
-#ifdef __cplusplus
-}
-#endif
+
+NetworkLinkDynar getRoute(char *srcName, char *dstName);
class Plugin {
public: