From: Frederic Suter Date: Tue, 10 Oct 2017 06:11:14 +0000 (+0200) Subject: Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid X-Git-Tag: v3.18~509 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/98bd9e6807124982d6a9c1a189a89cf8f3664227?hp=4bff2cd38194b0f95d7a0d19867f7e4e19e8a328 Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid --- diff --git a/examples/java/app/pingpong/Main.java b/examples/java/app/pingpong/Main.java index 8e56aed06d..2030da984b 100644 --- a/examples/java/app/pingpong/Main.java +++ b/examples/java/app/pingpong/Main.java @@ -25,8 +25,8 @@ class Main { File f = new File(platfFile); if (!f.exists()) { - System.err.println("File "+platfFile+" does not exist in "+System.getProperty("user.dir")); - System.err.println("Usage : Main ../platforms/platform.xml"); + Msg.error("File " + platfFile + " does not exist in " + System.getProperty("user.dir")); + Msg.error("Usage : Main ../platforms/platform.xml"); } Msg.createEnvironment(platfFile); diff --git a/examples/java/cloud/masterworker/Main.java b/examples/java/cloud/masterworker/Main.java index a99dc21ab7..5623ffa5e2 100644 --- a/examples/java/cloud/masterworker/Main.java +++ b/examples/java/cloud/masterworker/Main.java @@ -29,8 +29,8 @@ class Main { File f = new File(platfFile); if (!f.exists()) { - System.err.println("File "+platfFile+" does not exist in "+System.getProperty("user.dir")); - System.err.println("Usage : Main ../platforms/platform.xml"); + Msg.error("File " + platfFile + " does not exist in " + System.getProperty("user.dir")); + Msg.error("Usage : Main ../platforms/platform.xml"); } Msg.createEnvironment(platfFile); diff --git a/examples/java/cloud/migration/Daemon.java b/examples/java/cloud/migration/Daemon.java index d3c2af2001..6e1bae981b 100644 --- a/examples/java/cloud/migration/Daemon.java +++ b/examples/java/cloud/migration/Daemon.java @@ -1,4 +1,4 @@ -/* Copyright (c) 2014. The SimGrid Team. +/* Copyright (c) 2014-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -24,7 +24,7 @@ public class Daemon extends Process { } catch (HostFailureException e) { e.printStackTrace(); } catch (TaskCancelledException e) { - System.out.println("task cancelled"); + Msg.info("task cancelled"); suspend(); // Suspend the process } currentTask = new Task(this.getHost().getName()+"-daemon-"+(i++), this.getHost().getSpeed()*100, 0); diff --git a/examples/java/cloud/migration/XVM.java b/examples/java/cloud/migration/XVM.java index 414c98096e..10407a6f36 100644 --- a/examples/java/cloud/migration/XVM.java +++ b/examples/java/cloud/migration/XVM.java @@ -47,7 +47,7 @@ public class XVM extends VM { } public int getLoad(){ - System.out.println("Remaining comp:" + this.daemon.getRemaining()); + Msg.info("Remaining comp:" + this.daemon.getRemaining()); return this.currentLoad; } diff --git a/examples/java/dht/kademlia/Node.java b/examples/java/dht/kademlia/Node.java index 841e9d1be8..a690a0177d 100644 --- a/examples/java/dht/kademlia/Node.java +++ b/examples/java/dht/kademlia/Node.java @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2014, 2016. The SimGrid Team. +/* Copyright (c) 2012-2014, 2016-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -77,6 +77,7 @@ public class Node extends Process { } } catch (Exception e) { + Msg.debug("Caught exception: " + e); } } Msg.info(findNodeSuccedded + "/" + (findNodeSuccedded + findNodeFailed) + " FIND_NODE have succedded."); @@ -256,6 +257,7 @@ public class Node extends Process { waitFor(1); } catch (Exception ex) { + Msg.debug("Caught exception: " + ex); } } while (Msg.getClock() < timeout && !destinationFound); } diff --git a/examples/java/process/kill/Main.java b/examples/java/process/kill/Main.java index 71d281baf3..96cf864d3f 100644 --- a/examples/java/process/kill/Main.java +++ b/examples/java/process/kill/Main.java @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2014. The SimGrid Team. +/* Copyright (c) 2006-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -24,7 +24,7 @@ public class Main { Killer killer = new Killer("Jacquelin","killer"); killer.start(); } catch (MsgException e){ - System.out.println("Create processes failed!"); + Msg.error("Create processes failed!"); } /* execute the simulation. */ diff --git a/examples/java/process/suspend/Main.java b/examples/java/process/suspend/Main.java index 04510e852d..3eb40645c7 100644 --- a/examples/java/process/suspend/Main.java +++ b/examples/java/process/suspend/Main.java @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2014, 2016. The SimGrid Team. +/* Copyright (c) 2006-2014, 2016-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -25,9 +25,9 @@ public class Main { try { DreamMaster process1 = new DreamMaster("Jacquelin","DreamMaster"); process1.start(); - } catch (MsgException e){ - System.out.println("Create processes failed!"); - } + } catch (MsgException e){ + Msg.error("Create processes failed!"); + } /* execute the simulation. */ Msg.run(); diff --git a/examples/java/trace/pingpong/Main.java b/examples/java/trace/pingpong/Main.java index 782f68f633..37f866fbec 100644 --- a/examples/java/trace/pingpong/Main.java +++ b/examples/java/trace/pingpong/Main.java @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2007, 2012-2014, 2016. The SimGrid Team. +/* Copyright (c) 2006-2007, 2012-2014, 2016-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -10,6 +10,8 @@ import org.simgrid.msg.MsgException; import org.simgrid.trace.Trace; public class Main { + public static final String PM_STATE = "PM_STATE"; + private Main() { throw new IllegalAccessError("Utility class"); } @@ -29,11 +31,11 @@ public class Main { new Receiver ("Tremblay", "Receiver", null).start(); /* Initialize some state for the hosts */ - Trace.hostStateDeclare ("PM_STATE"); - Trace.hostStateDeclareValue ("PM_STATE", "waitingPing", "0 0 1"); - Trace.hostStateDeclareValue ("PM_STATE", "sendingPong", "0 1 0"); - Trace.hostStateDeclareValue ("PM_STATE", "sendingPing", "0 1 1"); - Trace.hostStateDeclareValue ("PM_STATE", "waitingPong", "1 0 0"); + Trace.hostStateDeclare (PM_STATE); + Trace.hostStateDeclareValue (PM_STATE, "waitingPing", "0 0 1"); + Trace.hostStateDeclareValue (PM_STATE, "sendingPong", "0 1 0"); + Trace.hostStateDeclareValue (PM_STATE, "sendingPing", "0 1 1"); + Trace.hostStateDeclareValue (PM_STATE, "waitingPong", "1 0 0"); /* execute the simulation. */ Msg.run(); diff --git a/examples/java/trace/pingpong/Receiver.java b/examples/java/trace/pingpong/Receiver.java index 4a1f26e55e..58e82b9b8a 100644 --- a/examples/java/trace/pingpong/Receiver.java +++ b/examples/java/trace/pingpong/Receiver.java @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2007, 2012-2014, 2016. The SimGrid Team. +/* Copyright (c) 2006-2007, 2012-2014, 2016-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -15,6 +15,7 @@ import org.simgrid.trace.Trace; public class Receiver extends Process { private static final double COMM_SIZE_LAT = 1; private static final double COMM_SIZE_BW = 100000000; + private static final String PM_STATE = Main.PM_STATE; public Receiver(String hostname, String name, String[]args) throws HostNotFoundException { super(hostname,name,args); @@ -22,7 +23,7 @@ public class Receiver extends Process { public void main(String[] args) throws MsgException { Msg.info("hello!"); - Trace.hostPushState (getHost().getName(), "PM_STATE", "waitingPing"); + Trace.hostPushState (getHost().getName(), PM_STATE, "waitingPing"); /* Wait for the ping */ Msg.info("try to get a task"); @@ -41,15 +42,15 @@ public class Receiver extends Process { Msg.info(" --- bw "+ COMM_SIZE_BW/communicationTime + " ----"); /* Send the pong */ - Trace.hostPushState (getHost().getName(), "PM_STATE", "sendingPong"); + Trace.hostPushState (getHost().getName(), PM_STATE, "sendingPong"); double computeDuration = 0; PingPongTask pong = new PingPongTask("no name",computeDuration,COMM_SIZE_LAT); pong.setTime(time); pong.send(ping.getSource().getName()); /* Pop the two states */ - Trace.hostPopState (getHost().getName(), "PM_STATE"); - Trace.hostPopState (getHost().getName(), "PM_STATE"); + Trace.hostPopState (getHost().getName(), PM_STATE); + Trace.hostPopState (getHost().getName(), PM_STATE); Msg.info("goodbye!"); } diff --git a/examples/java/trace/pingpong/Sender.java b/examples/java/trace/pingpong/Sender.java index 6af47fac5a..c97be48029 100644 --- a/examples/java/trace/pingpong/Sender.java +++ b/examples/java/trace/pingpong/Sender.java @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2014, 2016. The SimGrid Team. +/* Copyright (c) 2006-2014, 2016-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -16,7 +16,7 @@ import org.simgrid.trace.Trace; public class Sender extends Process { private static final double COMM_SIZE_LAT = 1; private static final double COMM_SIZE_BW = 100000000; - private static final String PM_STATE = "PM_STATE"; + private static final String PM_STATE = Main.PM_STATE; public Sender(String hostname, String name, String[] args) throws HostNotFoundException { super(hostname,name,args); diff --git a/include/simgrid/chrono.hpp b/include/simgrid/chrono.hpp index d3759cad03..8f5b48088c 100644 --- a/include/simgrid/chrono.hpp +++ b/include/simgrid/chrono.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2016. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2016-2017. 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. */ @@ -37,7 +37,8 @@ namespace simgrid { * @endcode * */ -struct SimulationClock { +class SimulationClock { +public: using rep = double; using period = std::ratio<1>; using duration = std::chrono::duration; diff --git a/include/simgrid/kernel/future.hpp b/include/simgrid/kernel/future.hpp index 766d425338..a4db6ece20 100644 --- a/include/simgrid/kernel/future.hpp +++ b/include/simgrid/kernel/future.hpp @@ -207,7 +207,7 @@ public: template void bindPromise(Promise promise, Future future) { - struct PromiseBinder { + class PromiseBinder { public: PromiseBinder(Promise promise) : promise_(std::move(promise)) {} void operator()(Future future) diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index 4d551932c5..976487a897 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -11,7 +11,10 @@ #include "simgrid/host.h" #include "xbt/ex.h" #include "xbt/parmap.h" +#ifdef __cplusplus #include +#endif + /* ******************************** Host ************************************ */ /** @brief Host datatype @ingroup simix_host_management @@ -138,9 +141,11 @@ XBT_PUBLIC(void) SIMIX_process_set_function(const char* process_host, */ XBT_PUBLIC(void) SIMIX_maestro_create(void (*code)(void*), void* data); +#ifdef __cplusplus XBT_PUBLIC(smx_actor_t) SIMIX_process_attach(const char* name, void* data, const char* hostname, std::map* properties, smx_actor_t parent_process); +#endif XBT_PUBLIC(void) SIMIX_process_detach(); /*********************************** Host *************************************/ @@ -195,9 +200,11 @@ XBT_PUBLIC(e_smx_state_t) simcall_execution_wait(smx_activity_t execution); /**************************** Process simcalls ********************************/ SG_BEGIN_DECL() /* Constructor and Destructor */ +#ifdef __cplusplus XBT_PUBLIC(smx_actor_t) simcall_process_create(const char* name, xbt_main_func_t code, void* data, sg_host_t host, int argc, char** argv, std::map* properties); +#endif XBT_PUBLIC(void) simcall_process_killall(int reset_pid); XBT_PUBLIC(void) SIMIX_process_throw(smx_actor_t process, xbt_errcat_t cat, int value, const char *msg); @@ -219,6 +226,7 @@ SG_END_DECL() /************************** Comunication simcalls *****************************/ +#ifdef __cplusplus XBT_PUBLIC(void) simcall_comm_send(smx_actor_t sender, smx_mailbox_t mbox, double task_size, double rate, void* src_buff, size_t src_buff_size, int (*match_fun)(void*, void*, simgrid::kernel::activity::CommImpl*), @@ -243,6 +251,7 @@ simcall_comm_irecv(smx_actor_t receiver, smx_mailbox_t mbox, void* dst_buff, siz XBT_PUBLIC(smx_activity_t) simcall_comm_iprobe(smx_mailbox_t mbox, int type, int (*match_fun)(void*, void*, simgrid::kernel::activity::CommImpl*), void* data); +#endif XBT_PUBLIC(void) simcall_comm_cancel(smx_activity_t comm); /* FIXME: waitany is going to be a vararg function, and should take a timeout */ diff --git a/include/xbt/backtrace.h b/include/xbt/backtrace.h index 90df0a3515..dd4fb3d7ed 100644 --- a/include/xbt/backtrace.h +++ b/include/xbt/backtrace.h @@ -1,9 +1,11 @@ -/* Copyright (c) 2005-2016. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2005-2017. The SimGrid Team. All rights reserved. */ #ifndef XBT_BACKTRACE_H #define XBT_BACKTRACE_H +#ifdef __cplusplus #include +#endif #include diff --git a/src/mc/DwarfExpression.hpp b/src/mc/DwarfExpression.hpp index 1bf89d8943..09160c8d4c 100644 --- a/src/mc/DwarfExpression.hpp +++ b/src/mc/DwarfExpression.hpp @@ -41,7 +41,8 @@ typedef std::vector DwarfExpression; * the process memory, etc. All those informations are gathered in * the evaluation context. */ -struct ExpressionContext { +class ExpressionContext { +public: ExpressionContext() : cursor(nullptr), frame_base(nullptr), address_space(nullptr), object_info(nullptr), process_index(simgrid::mc::ProcessIndexMissing) {} diff --git a/src/mc/VisitedState.hpp b/src/mc/VisitedState.hpp index 7028f4d644..a9a1b821ed 100644 --- a/src/mc/VisitedState.hpp +++ b/src/mc/VisitedState.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2016. The SimGrid Team. +/* Copyright (c) 2007-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -17,7 +17,8 @@ namespace simgrid { namespace mc { -struct XBT_PRIVATE VisitedState { +class XBT_PRIVATE VisitedState { +public: std::shared_ptr system_state = nullptr; std::size_t heap_bytes_used = 0; int actors_count = 0; diff --git a/src/mc/checker/LivenessChecker.hpp b/src/mc/checker/LivenessChecker.hpp index 16bfff72a8..ed4994eaf0 100644 --- a/src/mc/checker/LivenessChecker.hpp +++ b/src/mc/checker/LivenessChecker.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2015. The SimGrid Team. +/* Copyright (c) 2007-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -27,7 +27,8 @@ SG_END_DECL() namespace simgrid { namespace mc { -struct XBT_PRIVATE Pair { +class XBT_PRIVATE Pair { +public: int num = 0; bool search_cycle = false; std::shared_ptr graph_state = nullptr; /* System state included */ @@ -44,7 +45,8 @@ struct XBT_PRIVATE Pair { Pair& operator=(Pair const&) = delete; }; -struct XBT_PRIVATE VisitedPair { +class XBT_PRIVATE VisitedPair { +public: int num; int other_num = 0; /* Dot output for */ std::shared_ptr graph_state = nullptr; /* System state included */ diff --git a/src/mc/mc_state.h b/src/mc/mc_state.h index d6ee81450e..7e6a78d31b 100644 --- a/src/mc/mc_state.h +++ b/src/mc/mc_state.h @@ -22,7 +22,8 @@ enum class PatternCommunicationType { receive = 2, }; -struct PatternCommunication { +class PatternCommunication { +public: int num = 0; simgrid::kernel::activity::CommImpl* comm_addr; PatternCommunicationType type = PatternCommunicationType::send; @@ -104,8 +105,8 @@ public: /* A node in the exploration graph (kind-of) */ -struct XBT_PRIVATE State { - +class XBT_PRIVATE State { +public: /** Sequential state number (used for debugging) */ int num = 0; diff --git a/src/surf/ns3/ns3_simulator.cc b/src/surf/ns3/ns3_simulator.cpp similarity index 96% rename from src/surf/ns3/ns3_simulator.cc rename to src/surf/ns3/ns3_simulator.cpp index 55df59e5b3..7ba6d97e80 100644 --- a/src/surf/ns3/ns3_simulator.cc +++ b/src/surf/ns3/ns3_simulator.cpp @@ -55,7 +55,7 @@ static void WriteUntilBufferFull(ns3::Ptr sock, uint32_t txSpace) uint32_t toWrite = std::min({flow->remaining_, sock->GetTxAvailable()}); if (toWrite == 0) // buffer full return; - int amountSent = sock->Send(0, toWrite, 0); + int amountSent = sock->Send(0, toWrite, 0); xbt_assert(amountSent > 0, "Since TxAvailable>0, amountSent should also >0"); flow->bufferedBytes_ += amountSent; @@ -113,19 +113,18 @@ void StartFlow(ns3::Ptr sock, const char* to, uint16_t port_number) sock->Connect(serverAddr); // tell the tcp implementation to call WriteUntilBufferFull again // if we blocked and new tx buffer space becomes available - sock->SetSendCallback (MakeCallback(&WriteUntilBufferFull)); + sock->SetSendCallback(MakeCallback(&WriteUntilBufferFull)); // Note when the send is over sock->SetRecvCallback(MakeCallback(&receive_callback)); // Keep track of what was used (for the TRACING module) sock->SetDataSentCallback(MakeCallback(&datasent_callback)); XBT_DEBUG("startFlow of F[%p, %p, %u] dest=%s port=%d", flow, flow->action_, flow->totalBytes_, to, port_number); - //WriteUntilBufferFull (sock, sock->GetTxAvailable ()); + // WriteUntilBufferFull (sock, sock->GetTxAvailable ()); /* sock->SetSendCallback(MakeCallback(&send_callback)); sock->SetConnectCallback(MakeCallback(&succeededConnect_callback), MakeCallback(&failedConnect_callback)); sock->SetCloseCallbacks(MakeCallback(&normalClose_callback), MakeCallback(&errorClose_callback)); send_callback(sock, sock->GetTxAvailable ()); */ - } diff --git a/src/xbt/config.cpp b/src/xbt/config.cpp index 3947248782..cb6c810de6 100644 --- a/src/xbt/config.cpp +++ b/src/xbt/config.cpp @@ -96,30 +96,34 @@ static long int parseLong(const char* value) // ***** ConfigType ***** /// A trait which define possible options types: -template struct ConfigType; +template class ConfigType; -template<> struct ConfigType { +template <> class ConfigType { +public: static constexpr const char* type_name = "int"; static inline double parse(const char* value) { return parseLong(value); } }; -template<> struct ConfigType { +template <> class ConfigType { +public: static constexpr const char* type_name = "double"; static inline double parse(const char* value) { return parseDouble(value); } }; -template<> struct ConfigType { +template <> class ConfigType { +public: static constexpr const char* type_name = "string"; static inline std::string parse(const char* value) { return std::string(value); } }; -template<> struct ConfigType { +template <> class ConfigType { +public: static constexpr const char* type_name = "boolean"; static inline bool parse(const char* value) { diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index 5f9b6d74b9..ba462e58bf 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -303,7 +303,7 @@ if(HAVE_MMALLOC) endif() set(NS3_SRC src/surf/network_ns3.cpp - src/surf/ns3/ns3_simulator.cc ) + src/surf/ns3/ns3_simulator.cpp ) set(SURF_SRC src/kernel/routing/ClusterZone.cpp