Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
move e_surf_link_sharing_policy_t structure to surf.h and fix the way to create link...
authorcoldpeace <coldpeace@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 19 Aug 2010 16:02:25 +0000 (16:02 +0000)
committercoldpeace <coldpeace@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 19 Aug 2010 16:02:25 +0000 (16:02 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8160 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/bindings/lua/simgrid_lua.c
src/include/surf/surf.h
src/surf/network.c
src/surf/surf_private.h
src/surf/surfxml_parse.c

index 915c5ad..79f09ec 100644 (file)
@@ -324,9 +324,16 @@ typedef struct t_host_attr
 
 typedef struct t_link_attr
 {
+       //mandatory attributes
        const char* id;
        double bandwidth;
        double latency;
+       // Optional attributes
+       const char* bandwidth_trace;
+       const char* latency_trace;
+       const char*     state_trace;
+       int state_initial;
+       int policy;
 }link_attr,*p_link_attr;
 
 typedef struct t_route_attr
@@ -376,6 +383,44 @@ static void create_host(const char* id,double power_peak,double power_sc,
 
 }
 
+/**
+ * create link resource via network model
+ */
+static void create_link(const char *name,
+        double bw_initial,const char *trace,double lat_initial,
+        const char* latency_trace,int state_init, const char* state_trace,int policy)
+{
+       tmgr_trace_t bw_trace;
+       tmgr_trace_t lat_trace;
+       e_surf_resource_state_t state_initial_link = SURF_RESOURCE_ON;
+       e_surf_link_sharing_policy_t policy_initial_link = SURF_LINK_SHARED;
+       tmgr_trace_t st_trace;
+       if(trace)
+               bw_trace = tmgr_trace_new(trace);
+       else
+               bw_trace = tmgr_trace_new("");
+
+       if(latency_trace)
+               lat_trace = tmgr_trace_new(latency_trace);
+       else
+               lat_trace = tmgr_trace_new("");
+
+       if(state_trace)
+               st_trace = tmgr_trace_new(state_trace);
+       else
+               st_trace = tmgr_trace_new("");
+
+       if(state_init == -1)
+               state_initial_link = SURF_RESOURCE_OFF;
+       if(policy == -1)
+               policy_initial_link = SURF_LINK_FATPIPE;
+
+       surf_link_create_resource(xbt_strdup(name), bw_initial, bw_trace,
+                  lat_initial, lat_trace, state_initial_link, st_trace,
+                  policy_initial_link, xbt_dict_new());
+}
+
+
 /*
  *create host resource via workstation_ptask_L07 model [for SimDag]
  */
@@ -488,6 +533,11 @@ static int Link_new(lua_State *L) // (id,bandwidth,latency)
 
        const char* id;
        double bandwidth,latency;
+       const char* bandwidth_trace;
+       const char* latency_trace;
+       const char* state_trace;
+       int state_initial,policy;
+
        //get values from the table passed as argument
        if (lua_istable(L,-1)) {
                    // get Id Value
@@ -508,6 +558,39 @@ static int Link_new(lua_State *L) // (id,bandwidth,latency)
                    latency = lua_tonumber(L,-1);
                    lua_pop(L,1);
 
+                   /*Optional Arguments  */
+
+                   //get bandwidth_trace value
+                   lua_pushstring(L,"bandwidth_trace");
+                   lua_gettable(L, -2 );
+                   bandwidth_trace = lua_tostring(L,-1);
+                   lua_pop(L,1);
+
+                   //get latency_trace value
+                   lua_pushstring(L,"latency_trace");
+                   lua_gettable(L, -2 );
+                   latency_trace = lua_tostring(L,-1);
+                   lua_pop(L,1);
+
+                   //get state_trace value
+                   lua_pushstring(L,"state_trace");
+                   lua_gettable(L, -2 );
+                   state_trace = lua_tostring(L,-1);
+                   lua_pop(L,1);
+
+                               //get state_initial value
+                   lua_pushstring(L,"state_initial");
+                   lua_gettable(L, -2 );
+                   state_initial = lua_tonumber(L,-1);
+                   lua_pop(L,1);
+
+
+                               //get policy value
+                   lua_pushstring(L,"policy");
+                   lua_gettable(L, -2 );
+                   policy = lua_tonumber(L,-1);
+                   lua_pop(L,1);
+
            } else {
                    ERROR0("Bad Arguments to create link, Should be a table with named arguments");
                    return -1;
@@ -517,6 +600,11 @@ static int Link_new(lua_State *L) // (id,bandwidth,latency)
        link->id = id;
        link->bandwidth = bandwidth;
        link->latency = latency;
+       link->bandwidth_trace = bandwidth_trace;
+       link->latency_trace = latency_trace;
+       link->state_trace = state_trace;
+       link->state_initial= state_initial;
+       link->policy = policy;
        xbt_dynar_push(link_list_d,&link);
        return 0;
 }
@@ -609,7 +697,11 @@ static int surf_parse_bypass_platform()
        //add Links
        xbt_dynar_foreach(link_list_d,i,p_link)
        {
-               surf_link_create_resource((char*)p_link->id,p_link->bandwidth,p_link->latency);
+               /*(const char *name,
+        double bw_initial,const char *trace,double lat_initial,
+        const char* latency_trace,int state_init, const char* state_trace,int policy)*/
+               create_link(p_link->id,p_link->bandwidth,p_link->bandwidth_trace,p_link->latency,
+                               p_link->latency_trace,p_link->state_initial,p_link->state_trace,p_link->policy);
        }
        // add route
        xbt_dynar_foreach(route_list_d,i,p_route)
index d32041f..24d45a2 100644 (file)
@@ -22,6 +22,11 @@ SG_BEGIN_DECL()
        SURF_RESOURCE_OFF = 0              /**< Down & broken     */
      } e_surf_resource_state_t;
 
+     typedef enum {
+       SURF_LINK_SHARED = 1,
+       SURF_LINK_FATPIPE = 0
+     } e_surf_link_sharing_policy_t;
+
 /** @Brief Specify that we use that action */
 XBT_PUBLIC(void) surf_action_ref(surf_action_t action);
 /** @brief Creates a new action.
@@ -37,8 +42,6 @@ XBT_PUBLIC(void *) surf_action_new(size_t size, double cost,
 /**
  * FIXME : still improvaleb [this should be done in the binding code]
  */
-XBT_PUBLIC(void) network_create_resource(char *name,
-        double initial_bandwidth,double initial_latency);
 
 XBT_PUBLIC(void) workstation_link_create_resource(char *name,
         double initial_bandwidth,double initial_latency);
@@ -187,8 +190,17 @@ XBT_PUBLIC_DATA(routing_t) used_routing;
        double (*get_link_bandwidth) (const void *link);
        double (*get_link_latency) (const void *link);
        int (*link_shared) (const void *link);
-       void (*create_resource) (char *name,double bw_initial,double lat_initial);
        void (*add_traces)(void);
+       void (*create_resource)(char *name,
+               double bw_initial,
+               tmgr_trace_t bw_trace,
+               double lat_initial,
+               tmgr_trace_t lat_trace,
+               e_surf_resource_state_t
+               state_initial,
+               tmgr_trace_t state_trace,
+               e_surf_link_sharing_policy_t policy,
+               xbt_dict_t properties);
      } s_surf_model_extension_network_t;
 
      /** \brief Workstation model extension public
@@ -219,14 +231,18 @@ XBT_PUBLIC_DATA(routing_t) used_routing;
        xbt_dict_t(*get_properties) (const void *resource);
        void (*link_create_resource) (char *name,double bw_initial,double lat_initial);
        void (*cpu_create_resource)(char *name, double power_peak,
-                      double power_scale,
-                      tmgr_trace_t power_trace,
-                      e_surf_resource_state_t state_initial,
-                      tmgr_trace_t state_trace,
-                      xbt_dict_t cpu_properties);
+                                      double power_scale,
+                                      tmgr_trace_t power_trace,
+                                      e_surf_resource_state_t state_initial,
+                                      tmgr_trace_t state_trace,
+                                      xbt_dict_t cpu_properties);
        void (*add_traces) (void);
+
      } s_surf_model_extension_workstation_t;
 
+
+
+
 /** \brief Model datatype
  *  \ingroup SURF_models
  *
@@ -686,10 +702,17 @@ XBT_PUBLIC(void) surf_wsL07_host_create_resource(char *name, double power_peak,
 /**
  * create link resource
  * see surfxml_parse.c
- * FIXME : shoudl have the same prototype as net_link_new
  */
 XBT_PUBLIC(void) surf_link_create_resource(char *name,
-        double bw_initial,double lat_initial);
+        double bw_initial,
+        tmgr_trace_t bw_trace,
+        double lat_initial,
+        tmgr_trace_t lat_trace,
+        e_surf_resource_state_t
+        state_initial,
+        tmgr_trace_t state_trace,
+        e_surf_link_sharing_policy_t policy,
+        xbt_dict_t properties);
 
 
 XBT_PUBLIC(void) surf_wsL07_link_create_resource(char *name,
index dcdd477..4a3d052 100644 (file)
@@ -166,6 +166,21 @@ static void net_parse_link_init(void)
 
 }
 
+static void net_create_resource(char *name,
+        double bw_initial,
+        tmgr_trace_t bw_trace,
+        double lat_initial,
+        tmgr_trace_t lat_trace,
+        e_surf_resource_state_t
+        state_initial,
+        tmgr_trace_t state_trace,
+        e_surf_link_sharing_policy_t policy,
+        xbt_dict_t properties)
+{
+       net_link_new(name, bw_initial, bw_trace,
+                  lat_initial, lat_trace, state_initial, state_trace,
+                  policy, xbt_dict_new());
+}
 static void net_add_traces(void)
 {
   xbt_dict_cursor_t cursor = NULL;
@@ -620,38 +635,6 @@ static void net_action_set_max_duration(surf_action_t action, double duration)
   action->max_duration = duration;
 }
 
-
-/**
- * FIXME : this should be done in the binding code !!
- */
-void network_create_resource(char *name,
-        double initial_bandwidth,double initial_latency)
-{
-
-       char* name_link;
-       double bw_initial;
-       tmgr_trace_t bw_trace;
-       double lat_initial;
-       tmgr_trace_t lat_trace;
-       e_surf_resource_state_t state_initial_link = SURF_RESOURCE_ON;
-       e_surf_link_sharing_policy_t policy_initial_link = SURF_LINK_SHARED;
-       tmgr_trace_t state_trace;
-
-       name_link = xbt_strdup(name);
-       bw_initial = initial_bandwidth;
-       bw_trace = tmgr_trace_new("");
-       lat_initial = initial_latency;
-       lat_trace = tmgr_trace_new("");
-       // FIXME Hard Coded Values
-       //state_initial_link = SURF_RESOURCE_ON;
-       //policy_initial_link = SURF_LINK_SHARED;
-       state_trace = tmgr_trace_new("");
-
-       net_link_new(name_link, bw_initial, bw_trace,
-                  lat_initial, lat_trace, state_initial_link, state_trace,
-                  policy_initial_link, xbt_dict_new());
-}
-
 static void net_finalize(void)
 {
   surf_model_exit(surf_network_model);
@@ -690,8 +673,8 @@ static void surf_network_model_init_internal(void)
   surf_network_model->extension.network.get_link_bandwidth =
     net_get_link_bandwidth;
   surf_network_model->extension.network.link_shared = net_link_shared;
-  surf_network_model->extension.network.create_resource = network_create_resource;
   surf_network_model->extension.network.add_traces = net_add_traces;
+  surf_network_model->extension.network.create_resource = net_create_resource;
 
   if (!network_maxmin_system)
     network_maxmin_system = lmm_system_new();
index 61a374b..cfa4f8a 100644 (file)
@@ -31,11 +31,6 @@ extern int sg_network_fullduplex;
 
 extern const char *surf_action_state_names[6];
 
-typedef enum {
-  SURF_LINK_SHARED = 1,
-  SURF_LINK_FATPIPE = 0
-} e_surf_link_sharing_policy_t;
-
 typedef struct surf_model_private {
   int (*resource_used) (void *resource_id);
   /* Share the resources to the actions and return in how much time
index 933996d..ea7f315 100644 (file)
@@ -1199,10 +1199,18 @@ void surf_wsL07_host_create_resource(char *name, double power_peak,
  */
 void surf_link_create_resource(char *name,
         double bw_initial,
-        double lat_initial)
+        tmgr_trace_t bw_trace,
+        double lat_initial,
+        tmgr_trace_t lat_trace,
+        e_surf_resource_state_t
+        state_initial,
+        tmgr_trace_t state_trace,
+        e_surf_link_sharing_policy_t policy,
+        xbt_dict_t properties)
 {
        return surf_network_model->extension.network.
-            create_resource(name,bw_initial,lat_initial);
+            create_resource(name,bw_initial,bw_trace,lat_initial,lat_trace,
+                        state_initial,state_trace,policy,properties);
 
 }