Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge tag 'v3_9_90' into hypervisor
[simgrid.git] / src / surf / network_constant.c
index d0f25db..7eaa9d8 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008, 2009, 2010. The SimGrid Team.
+/* Copyright (c) 2008-2013. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -18,7 +18,6 @@ typedef struct surf_action_network_Constant {
 } s_surf_action_network_Constant_t, *surf_action_network_Constant_t;
 
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_network);
-static random_data_t random_latency = NULL;
 static int host_number_int = 0;
 
 static void netcste_count_hosts(sg_platf_host_cbarg_t h) {
@@ -50,11 +49,11 @@ static void netcste_action_cancel(surf_action_t action)
   return;
 }
 
-static double netcste_share_resources(double now)
+static double netcste_share_resources(surf_model_t network_model, double now)
 {
   surf_action_network_Constant_t action = NULL;
   xbt_swag_t running_actions =
-      surf_network_model->states.running_action_set;
+      network_model->states.running_action_set;
   double min = -1.0;
 
   xbt_swag_foreach(action, running_actions) {
@@ -69,12 +68,12 @@ static double netcste_share_resources(double now)
   return min;
 }
 
-static void netcste_update_actions_state(double now, double delta)
+static void netcste_update_actions_state(surf_model_t network_model, double now, double delta)
 {
   surf_action_network_Constant_t action = NULL;
   surf_action_network_Constant_t next_action = NULL;
   xbt_swag_t running_actions =
-      surf_network_model->states.running_action_set;
+      network_model->states.running_action_set;
 
   xbt_swag_foreach_safe(action, next_action, running_actions) {
     if (action->latency > 0) {
@@ -91,12 +90,12 @@ static void netcste_update_actions_state(double now, double delta)
 
     if (action->generic_action.remains <= 0) {
       action->generic_action.finish = surf_get_clock();
-      surf_network_model->action_state_set((surf_action_t) action,
+      network_model->action_state_set((surf_action_t) action,
                                            SURF_ACTION_DONE);
     } else if ((action->generic_action.max_duration != NO_MAX_DURATION)
                && (action->generic_action.max_duration <= 0)) {
       action->generic_action.finish = surf_get_clock();
-      surf_network_model->action_state_set((surf_action_t) action,
+      network_model->action_state_set((surf_action_t) action,
                                            SURF_ACTION_DONE);
     }
   }
@@ -109,12 +108,15 @@ static void netcste_update_resource_state(void *id,
   DIE_IMPOSSIBLE;
 }
 
-static surf_action_t netcste_communicate(const char *src_name,
-                                         const char *dst_name, double size,
-                                         double rate)
+static surf_action_t netcste_communicate(sg_routing_edge_t src,
+                                         sg_routing_edge_t dst,
+                                         double size, double rate)
 {
   surf_action_network_Constant_t action = NULL;
 
+  char *src_name = src->name;
+  char *dst_name = dst->name;
+
   XBT_IN("(%s,%s,%g,%g)", src_name, dst_name, size, rate);
 
   action =
@@ -123,7 +125,7 @@ static surf_action_t netcste_communicate(const char *src_name,
 
   action->suspended = 0;
 
-  action->latency = sg_latency_factor;          //random_generate(random_latency);
+  action->latency = sg_latency_factor;
   action->lat_init = action->latency;
 
   if (action->latency <= 0.0) {
@@ -147,19 +149,19 @@ static void netcste_action_set_category(surf_action_t action, const char *catego
 static double netcste_get_link_bandwidth(const void *link)
 {
   DIE_IMPOSSIBLE;
-  return -1.0;
+  return -1.0; /* useless since DIE actually abort(), but eclipse prefer to have a useless and harmless return */
 }
 
 static double netcste_get_link_latency(const void *link)
 {
   DIE_IMPOSSIBLE;
-  return -1.0;
+  return -1.0; /* useless since DIE actually abort(), but eclipse prefer to have a useless and harmless return */
 }
 
 static int link_shared(const void *link)
 {
   DIE_IMPOSSIBLE;
-  return -1;
+  return -1; /* useless since DIE actually abort(), but eclipse prefer to have a useless and harmless return */
 }
 
 static void netcste_action_suspend(surf_action_t action)
@@ -178,10 +180,10 @@ static int netcste_action_is_suspended(surf_action_t action)
   return ((surf_action_network_Constant_t) action)->suspended;
 }
 
-static void netcste_finalize(void)
+static void netcste_finalize(surf_model_t network_model)
 {
-  surf_model_exit(surf_network_model);
-  surf_network_model = NULL;
+  surf_model_exit(network_model);
+  network_model = NULL;
 }
 
 
@@ -197,7 +199,7 @@ void surf_network_model_init_Constant()
   surf_network_model->action_unref = netcste_action_unref;
   surf_network_model->action_cancel = netcste_action_cancel;
   surf_network_model->action_recycle = net_action_recycle;
-  surf_network_model->get_remains = net_action_get_remains;
+  surf_network_model->get_remains = surf_action_get_remains;
 #ifdef HAVE_LATENCY_BOUND_TRACKING
   surf_network_model->get_latency_limited = net_get_link_latency_limited;
 #endif
@@ -214,7 +216,11 @@ void surf_network_model_init_Constant()
   surf_network_model->suspend = netcste_action_suspend;
   surf_network_model->resume = netcste_action_resume;
   surf_network_model->is_suspended = netcste_action_is_suspended;
-  surf_cpu_model->set_max_duration = net_action_set_max_duration;
+
+  xbt_assert(surf_cpu_model_pm);
+  xbt_assert(surf_cpu_model_vm);
+  surf_cpu_model_pm->set_max_duration = surf_action_set_max_duration;
+  surf_cpu_model_vm->set_max_duration = surf_action_set_max_duration;
 
   surf_network_model->extension.network.communicate = netcste_communicate;
   surf_network_model->extension.network.get_link_bandwidth =
@@ -226,10 +232,8 @@ void surf_network_model_init_Constant()
   surf_network_model->set_category = netcste_action_set_category;
 #endif
 
-  if (!random_latency)
-    random_latency = random_new(RAND, 100, 0.0, 1.0, .125, .034);
   netcste_define_callbacks();
   xbt_dynar_push(model_list, &surf_network_model);
 
-  routing_model_create(sizeof(double), NULL);
+  routing_model_create(NULL);
 }