From b8996c34869f8fbd6edf7556d7bef921e55962ba Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Sat, 16 Sep 2017 22:53:21 +0200 Subject: [PATCH 1/1] Delete ProcessArg.properties. --- src/simix/ActorImpl.cpp | 2 +- src/simix/ActorImpl.hpp | 2 +- src/simix/smx_host.cpp | 6 +++--- src/surf/sg_platf.cpp | 10 +++++----- src/surf/xml/platf_private.hpp | 5 +---- src/surf/xml/surfxml_sax_cb.cpp | 6 +++--- 6 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index 999099f5d4..29453b18e6 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -185,7 +185,7 @@ simgrid::s4u::Actor* ActorImpl::restart() // start the new process ActorImpl* actor = simix_global->create_process_function(arg.name.c_str(), std::move(arg.code), arg.data, arg.host, - arg.properties, nullptr); + arg.properties.get(), nullptr); if (arg.kill_time >= 0) simcall_process_set_kill_time(actor, arg.kill_time); if (arg.auto_restart) diff --git a/src/simix/ActorImpl.hpp b/src/simix/ActorImpl.hpp index 3d7285f148..dcdea7a9d1 100644 --- a/src/simix/ActorImpl.hpp +++ b/src/simix/ActorImpl.hpp @@ -29,7 +29,7 @@ public: void *data = nullptr; sg_host_t host = nullptr; double kill_time = 0.0; - std::map* properties = nullptr; + std::shared_ptr> properties; bool auto_restart = false; }; diff --git a/src/simix/smx_host.cpp b/src/simix/smx_host.cpp index d89dd0da79..017c339041 100644 --- a/src/simix/smx_host.cpp +++ b/src/simix/smx_host.cpp @@ -56,7 +56,7 @@ namespace simgrid { for (auto const& arg : boot_processes) { XBT_DEBUG("Booting Process %s(%s) right now", arg->name.c_str(), arg->host->getCname()); smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), arg->code, nullptr, arg->host, - arg->properties, nullptr); + arg->properties.get(), nullptr); if (arg->kill_time >= 0) simcall_process_set_kill_time(actor, arg->kill_time); if (arg->auto_restart) @@ -122,7 +122,7 @@ void SIMIX_host_add_auto_restart_process(sg_host_t host, const char* name, std:: arg->data = data; arg->host = host; arg->kill_time = kill_time; - arg->properties = properties; + arg->properties.reset(properties, [](decltype(properties)) {}); arg->auto_restart = auto_restart; if (host->isOff() && watched_hosts.find(host->getCname()) == watched_hosts.end()) { @@ -140,7 +140,7 @@ void SIMIX_host_autorestart(sg_host_t host) for (auto const& arg : process_list) { XBT_DEBUG("Restarting Process %s@%s right now", arg->name.c_str(), arg->host->getCname()); smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), arg->code, nullptr, arg->host, - arg->properties, nullptr); + arg->properties.get(), nullptr); if (arg->kill_time >= 0) simcall_process_set_kill_time(actor, arg->kill_time); if (arg->auto_restart) diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index 6966739b7b..234920087c 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -446,6 +446,7 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) std::vector args(process->argv, process->argv + process->argc); std::function code = factory(std::move(args)); + std::shared_ptr> properties(process->properties); smx_process_arg_t arg = nullptr; @@ -455,7 +456,7 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) arg->data = nullptr; arg->host = host; arg->kill_time = kill_time; - arg->properties = process->properties; + arg->properties = properties; host->extension()->boot_processes.push_back(arg); @@ -467,12 +468,12 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) arg->data = nullptr; arg->host = host; arg->kill_time = kill_time; - arg->properties = process->properties; + arg->properties = properties; XBT_DEBUG("Process %s@%s will be started at time %f", arg->name.c_str(), arg->host->getCname(), start_time); SIMIX_timer_set(start_time, [arg, auto_restart]() { smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), std::move(arg->code), arg->data, - arg->host, arg->properties, nullptr); + arg->host, arg->properties.get(), nullptr); if (arg->kill_time >= 0) simcall_process_set_kill_time(actor, arg->kill_time); if (auto_restart) @@ -483,7 +484,7 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) XBT_DEBUG("Starting Process %s(%s) right now", arg->name.c_str(), host->getCname()); smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), std::move(code), nullptr, host, - arg->properties, nullptr); + arg->properties.get(), nullptr); /* The actor creation will fail if the host is currently dead, but that's fine */ if (actor != nullptr) { @@ -493,7 +494,6 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) SIMIX_process_auto_restart_set(actor, auto_restart); } } - current_property_set = nullptr; } void sg_platf_new_peer(PeerCreationArgs* peer) diff --git a/src/surf/xml/platf_private.hpp b/src/surf/xml/platf_private.hpp index 565fbe422a..93958801c9 100644 --- a/src/surf/xml/platf_private.hpp +++ b/src/surf/xml/platf_private.hpp @@ -1,6 +1,6 @@ /* platf_private.h - Interface to the SimGrid platforms which visibility should be limited to this directory */ -/* Copyright (c) 2004-2015. The SimGrid Team. +/* Copyright (c) 2004-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -191,9 +191,6 @@ public: int routing; }; -/* The default current property receiver. Setup in the corresponding opening callbacks. */ -extern std::map* current_property_set; - /********** Routing **********/ void routing_cluster_add_backbone(simgrid::surf::LinkImpl* bb); /*** END of the parsing cruft ***/ diff --git a/src/surf/xml/surfxml_sax_cb.cpp b/src/surf/xml/surfxml_sax_cb.cpp index e1dd4f6875..a123599abd 100644 --- a/src/surf/xml/surfxml_sax_cb.cpp +++ b/src/surf/xml/surfxml_sax_cb.cpp @@ -1026,9 +1026,11 @@ void ETag_surfxml_actor() s_sg_platf_process_cbarg_t actor; memset(&actor,0,sizeof(actor)); + actor.properties = current_property_set; + current_property_set = nullptr; + actor.argc = argc; actor.argv = (const char **)argv; - actor.properties = current_property_set; actor.host = A_surfxml_actor_host; actor.function = A_surfxml_actor_function; actor.start_time = surf_parse_get_double(A_surfxml_actor_start___time); @@ -1053,8 +1055,6 @@ void ETag_surfxml_actor() xbt_free(argv[i]); xbt_free(argv); argv = nullptr; - - current_property_set = nullptr; } void STag_surfxml_argument(){ -- 2.20.1