X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e5f87484cdf760f6bec69d72e8f474c1e7697b70..3bb80150f0e018a1ca0ce65e93fedee79c0ea111:/src/surf/surf_interface.cpp diff --git a/src/surf/surf_interface.cpp b/src/surf/surf_interface.cpp index 8fdc1db634..8a671c14fa 100644 --- a/src/surf/surf_interface.cpp +++ b/src/surf/surf_interface.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2004-2014. The SimGrid Team. +/* Copyright (c) 2004-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -9,11 +9,11 @@ #include "network_interface.hpp" #include "cpu_interface.hpp" #include "host_interface.hpp" -#include "simix/smx_host_private.h" +#include "src/simix/smx_host_private.h" #include "surf_routing.hpp" #include "simgrid/sg_config.h" #include "mc/mc.h" -#include "vm_interface.hpp" +#include "virtual_machine.hpp" XBT_LOG_NEW_CATEGORY(surf, "All SURF categories"); XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_kernel, surf, @@ -23,67 +23,6 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_kernel, surf, * Utils * *********/ -/* This function is a pimple that we ought to fix. But it won't be easy. - * - * The surf_solve() function does properly return the set of actions that - * changed. Instead, each model change a global data, and then the caller of - * surf_solve must pick into these sets of action_failed and action_done. - * - * This was not clean but ok as long as we didn't had to restart the processes - * when the resource comes back up. - * We worked by putting sentinel actions on every resources we are interested - * in, so that surf informs us if/when the corresponding resource fails. - * - * But this does not work to get Simix informed of when a resource comes back - * up, and this is where this pimple comes. We have a set of resources that are - * currently down and for which simix needs to know when it comes back up. - * And the current function is called *at every simulation step* to sweep over - * that set, searching for a resource that was turned back up in the meanwhile. - * This is UGLY and slow. - * - * The proper solution would be to not rely on globals for the action_failed and - * action_done swags. They must be passed as parameter by the caller (the - * handling of these actions in simix may let you think that these two sets can - * be merged, but their handling in SimDag induce the contrary unless this - * simdag code can check by itself whether the action is done of failed -- seems - * very doable, but yet more cleanup to do). - * - * Once surf_solve() is passed the set of actions that changed, you want to add - * a new set of resources back up as parameter to this function. You also want - * to add a boolean field "restart_watched" to each resource, and make sure that - * whenever a resource with this field enabled comes back up, it's added to that - * set so that Simix sees it and react accordingly. This would kill that need - * for surf to call simix. - * - */ - -/*static void remove_watched_host(void *key) -{ - xbt_dict_remove(watched_hosts_lib, *(char**)key); -}*/ - -/*void surf_watched_hosts(void) -{ - char *key; - void *host; - xbt_dict_cursor_t cursor; - xbt_dynar_t hosts = xbt_dynar_new(sizeof(char*), NULL); - - XBT_DEBUG("Check for host SURF_RESOURCE_ON on watched_hosts_lib"); - xbt_dict_foreach(watched_hosts_lib, cursor, key, host) - { - if(SIMIX_host_get_state((smx_host_t)host) == SURF_RESOURCE_ON){ - XBT_INFO("Restart processes on host: %s", SIMIX_host_get_name((smx_host_t)host)); - SIMIX_host_autorestart((smx_host_t)host); - xbt_dynar_push_as(hosts, char*, key); - } - else - XBT_DEBUG("See SURF_RESOURCE_OFF on host: %s",key); - } - xbt_dynar_map(hosts, remove_watched_host); - xbt_dynar_free(&hosts); -}*/ - /* model_list_invoke contains only surf_host and surf_vm. * The callback functions of cpu_model and network_model will be called from * those of these host models. */ @@ -121,11 +60,6 @@ s_surf_model_description_t surf_network_model_description[] = { {"CM02", "Legacy network analytic model (Very similar to LV08, but without corrective factors. The timings of small messages are thus poorly modeled).", surf_network_model_init_CM02}, -#ifdef HAVE_GTNETS - {"GTNets", - "Network pseudo-model using the GTNets simulator instead of an analytic model", - surf_network_model_init_GTNETS}, -#endif #ifdef HAVE_NS3 {"NS3", "Network pseudo-model using the NS3 tcp model instead of an analytic model", @@ -876,7 +810,7 @@ void Action::setPriority(double priority) void Action::cancel(){ setState(SURF_ACTION_FAILED); if (getModel()->getUpdateMechanism() == UM_LAZY) { - if (actionLmmHook::is_linked()) + if (action_lmm_hook.is_linked()) getModel()->getModifiedSet()->erase(getModel()->getModifiedSet()->iterator_to(*this)); heapRemove(getModel()->getActionHeap()); } @@ -885,14 +819,14 @@ void Action::cancel(){ int Action::unref(){ m_refcount--; if (!m_refcount) { - if (actionHook::is_linked()) + if (action_hook.is_linked()) p_stateSet->erase(p_stateSet->iterator_to(*this)); if (getVariable()) lmm_variable_free(getModel()->getMaxminSystem(), getVariable()); if (getModel()->getUpdateMechanism() == UM_LAZY) { /* remove from heap */ heapRemove(getModel()->getActionHeap()); - if (actionLmmHook::is_linked()) + if (action_lmm_hook.is_linked()) getModel()->getModifiedSet()->erase(getModel()->getModifiedSet()->iterator_to(*this)); } delete this;