Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Make private structures SD_link and SD_workstation
authorthiery <thiery@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 23 Jun 2006 08:47:13 +0000 (08:47 +0000)
committerthiery <thiery@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 23 Jun 2006 08:47:13 +0000 (08:47 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2425 48e7efb5-ca39-0410-a469-dd3cf9ba447f

include/simdag/datatypes.h
src/simdag/private.h
src/simdag/sd_link.c
src/simdag/sd_task.c
src/simdag/sd_workstation.c

index 72eaa75..8490f8b 100644 (file)
@@ -2,20 +2,13 @@
 #define SIMDAG_DATATYPES_H
 
 /* Link */
 #define SIMDAG_DATATYPES_H
 
 /* Link */
-typedef struct SD_link_data *SD_link_data_t;
-
-typedef struct SD_link {
-  SD_link_data_t sd_data; /* SD internal data */
-  void *data; /* user data */
-} s_SD_link_t, *SD_link_t;
+typedef struct SD_link *SD_link_t;
 
 /* Workstation */
 
 /* Workstation */
-typedef struct SD_workstation_data *SD_workstation_data_t;
+typedef struct SD_workstation *SD_workstation_t;
 
 
-typedef struct SD_workstation {
-  SD_workstation_data_t sd_data; /* SD internal data */
-  void *data; /* user data */
-} s_SD_workstation_t, *SD_workstation_t;
+/* Task */
+typedef struct SD_task *SD_task_t;
 
 /* Task state */
 typedef enum {
 
 /* Task state */
 typedef enum {
@@ -26,7 +19,4 @@ typedef enum {
   SD_FAILED =        0x0008 
 } e_SD_task_state_t;
 
   SD_FAILED =        0x0008 
 } e_SD_task_state_t;
 
-/* Task */
-typedef struct SD_task *SD_task_t;
-
 #endif
 #endif
index 4ac0f2f..c244198 100644 (file)
@@ -27,24 +27,17 @@ typedef struct SD_global {
 
 extern SD_global_t sd_global;
 
 
 extern SD_global_t sd_global;
 
-/* Link private data */
-typedef struct SD_link_data {
+/* Link */
+typedef struct SD_link {
   void *surf_link; /* surf object */
   void *surf_link; /* surf object */
-} s_SD_link_data_t;
+  void *data; /* user data */
+} s_SD_link_t;
 
 
-/* Workstation private data */
-typedef struct SD_workstation_data {
+/* Workstation */
+typedef struct SD_workstation {
   void *surf_workstation; /* surf object */
   void *surf_workstation; /* surf object */
-} s_SD_workstation_data_t;
-
-/* Task dependencies */
-typedef struct SD_dependency {
-  char *name;
-  void *data;
-  SD_task_t src;
-  SD_task_t dst;
-  /* src must be finished before dst can start */
-} s_SD_dependency_t, *SD_dependency_t;
+  void *data; /* user data */
+} s_SD_workstation_t;
 
 /* Task */
 typedef struct SD_task {
 
 /* Task */
 typedef struct SD_task {
@@ -68,6 +61,15 @@ typedef struct SD_task {
   double rate;
 } s_SD_task_t;
 
   double rate;
 } s_SD_task_t;
 
+/* Task dependencies */
+typedef struct SD_dependency {
+  char *name;
+  void *data;
+  SD_task_t src;
+  SD_task_t dst;
+  /* src must be finished before dst can start */
+} s_SD_dependency_t, *SD_dependency_t;
+
 /* SimDag private functions */
 
 SD_link_t __SD_link_create(void *surf_link, void *data);
 /* SimDag private functions */
 
 SD_link_t __SD_link_create(void *surf_link, void *data);
index 8308c9c..637a6e2 100644 (file)
@@ -10,11 +10,9 @@ SD_link_t __SD_link_create(void *surf_link, void *data) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(surf_link != NULL, "surf_link is NULL !");
 
   SD_CHECK_INIT_DONE();
   xbt_assert0(surf_link != NULL, "surf_link is NULL !");
 
-  SD_link_data_t sd_data = xbt_new0(s_SD_link_data_t, 1); /* link private data */
-  sd_data->surf_link = surf_link;
 
   SD_link_t link = xbt_new0(s_SD_link_t, 1);
 
   SD_link_t link = xbt_new0(s_SD_link_t, 1);
-  link->sd_data = sd_data; /* private data */
+  link->surf_link = surf_link;
   link->data = data; /* user data */
 
   const char *name = SD_link_get_name(link);
   link->data = data; /* user data */
 
   const char *name = SD_link_get_name(link);
@@ -44,7 +42,7 @@ void SD_link_set_data(SD_link_t link, void *data) {
 const char* SD_link_get_name(SD_link_t link) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(link != NULL, "Invalid parameter");
 const char* SD_link_get_name(SD_link_t link) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(link != NULL, "Invalid parameter");
-  return surf_workstation_resource->extension_public->get_link_name(link->sd_data->surf_link);
+  return surf_workstation_resource->extension_public->get_link_name(link->surf_link);
 }
 
 /* Returns the capacity of a link.
 }
 
 /* Returns the capacity of a link.
@@ -60,7 +58,7 @@ double SD_link_get_capacity(SD_link_t link) {
 double SD_link_get_current_bandwidth(SD_link_t link) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(link != NULL, "Invalid parameter");
 double SD_link_get_current_bandwidth(SD_link_t link) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(link != NULL, "Invalid parameter");
-  return surf_workstation_resource->extension_public->get_link_bandwidth(link->sd_data->surf_link);
+  return surf_workstation_resource->extension_public->get_link_bandwidth(link->surf_link);
 }
 
 /* Return the current latency of a link.
 }
 
 /* Return the current latency of a link.
@@ -68,7 +66,7 @@ double SD_link_get_current_bandwidth(SD_link_t link) {
 double SD_link_get_current_latency(SD_link_t link) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(link != NULL, "Invalid parameter");
 double SD_link_get_current_latency(SD_link_t link) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(link != NULL, "Invalid parameter");
-  return surf_workstation_resource->extension_public->get_link_latency(link->sd_data->surf_link);
+  return surf_workstation_resource->extension_public->get_link_latency(link->surf_link);
 }
 
 /* Destroys a link. The user data (if any) should have been destroyed first.
 }
 
 /* Destroys a link. The user data (if any) should have been destroyed first.
@@ -76,12 +74,7 @@ double SD_link_get_current_latency(SD_link_t link) {
 void __SD_link_destroy(void *link) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(link != NULL, "Invalid parameter");
 void __SD_link_destroy(void *link) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(link != NULL, "Invalid parameter");
-
-  SD_link_data_t sd_data = ((SD_link_t) link)->data;
-  if (sd_data != NULL) {
-    xbt_free(sd_data);
-  }
-
+  /* link->surf_link is freed by surf_exit and link->data is freed by the user */
   xbt_free(link);
 }
 
   xbt_free(link);
 }
 
index e159888..66de461 100644 (file)
@@ -325,7 +325,7 @@ void SD_task_schedule(SD_task_t task, int workstation_nb,
   task->workstation_list = xbt_new0(void*, workstation_nb);
   int i;
   for (i = 0; i < workstation_nb; i++) {
   task->workstation_list = xbt_new0(void*, workstation_nb);
   int i;
   for (i = 0; i < workstation_nb; i++) {
-    task->workstation_list[i] = workstation_list[i]->sd_data->surf_workstation;
+    task->workstation_list[i] = workstation_list[i]->surf_workstation;
   }
 
   __SD_task_set_state(task, SD_SCHEDULED);
   }
 
   __SD_task_set_state(task, SD_SCHEDULED);
index 6f517d7..567cd0b 100644 (file)
@@ -10,12 +10,9 @@ SD_workstation_t __SD_workstation_create(void *surf_workstation, void *data) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(surf_workstation != NULL, "surf_workstation is NULL !");
 
   SD_CHECK_INIT_DONE();
   xbt_assert0(surf_workstation != NULL, "surf_workstation is NULL !");
 
-  SD_workstation_data_t sd_data = xbt_new0(s_SD_workstation_data_t, 1); /* workstation private data */
-  sd_data->surf_workstation = surf_workstation;
-  
   SD_workstation_t workstation = xbt_new0(s_SD_workstation_t, 1);
   SD_workstation_t workstation = xbt_new0(s_SD_workstation_t, 1);
+  workstation->surf_workstation = surf_workstation;
   workstation->data = data; /* user data */
   workstation->data = data; /* user data */
-  workstation->sd_data = sd_data; /* private data */
   
   const char *name = SD_workstation_get_name(workstation);
   xbt_dict_set(sd_global->workstations, name, workstation, __SD_workstation_destroy); /* add the workstation to the dictionary */
   
   const char *name = SD_workstation_get_name(workstation);
   xbt_dict_set(sd_global->workstations, name, workstation, __SD_workstation_destroy); /* add the workstation to the dictionary */
@@ -46,7 +43,7 @@ SD_workstation_t*  SD_workstation_get_list(void) {
   void *data;
   int i=0;
 
   void *data;
   int i=0;
 
-  xbt_dict_foreach(sd_global->workstations,cursor,key,data) {
+  xbt_dict_foreach(sd_global->workstations, cursor, key, data) {
     array[i++] = (SD_workstation_t) data;
   }
   array[i] = NULL;
     array[i++] = (SD_workstation_t) data;
   }
   array[i] = NULL;
@@ -82,7 +79,7 @@ void* SD_workstation_get_data(SD_workstation_t workstation) {
 const char* SD_workstation_get_name(SD_workstation_t workstation) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(workstation != NULL, "Invalid parameter");
 const char* SD_workstation_get_name(SD_workstation_t workstation) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(workstation != NULL, "Invalid parameter");
-  return surf_workstation_resource->common_public->get_resource_name(workstation->sd_data->surf_workstation);
+  return surf_workstation_resource->common_public->get_resource_name(workstation->surf_workstation);
 }
 
 /* Returns an new array of links representating the route between two workstations.
 }
 
 /* Returns an new array of links representating the route between two workstations.
@@ -90,8 +87,8 @@ const char* SD_workstation_get_name(SD_workstation_t workstation) {
 SD_link_t* SD_workstation_route_get_list(SD_workstation_t src, SD_workstation_t dst) {
   SD_CHECK_INIT_DONE();
 
 SD_link_t* SD_workstation_route_get_list(SD_workstation_t src, SD_workstation_t dst) {
   SD_CHECK_INIT_DONE();
 
-  void *surf_src = src->sd_data->surf_workstation;
-  void *surf_dst = dst->sd_data->surf_workstation;
+  void *surf_src = src->surf_workstation;
+  void *surf_dst = dst->surf_workstation;
 
   const void **surf_route = surf_workstation_resource->extension_public->get_route(surf_src, surf_dst);
   int route_size = surf_workstation_resource->extension_public->get_route_size(surf_src, surf_dst);
 
   const void **surf_route = surf_workstation_resource->extension_public->get_route(surf_src, surf_dst);
   int route_size = surf_workstation_resource->extension_public->get_route_size(surf_src, surf_dst);
@@ -112,7 +109,7 @@ SD_link_t* SD_workstation_route_get_list(SD_workstation_t src, SD_workstation_t
 int SD_workstation_route_get_size(SD_workstation_t src, SD_workstation_t dst) {
   SD_CHECK_INIT_DONE();
   return surf_workstation_resource->extension_public->
 int SD_workstation_route_get_size(SD_workstation_t src, SD_workstation_t dst) {
   SD_CHECK_INIT_DONE();
   return surf_workstation_resource->extension_public->
-    get_route_size(src->sd_data->surf_workstation, dst->sd_data->surf_workstation);
+    get_route_size(src->surf_workstation, dst->surf_workstation);
 }
 
 /* Returns the total power of a workstation.
 }
 
 /* Returns the total power of a workstation.
@@ -120,7 +117,7 @@ int SD_workstation_route_get_size(SD_workstation_t src, SD_workstation_t dst) {
 double SD_workstation_get_power(SD_workstation_t workstation) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(workstation != NULL, "Invalid parameter");
 double SD_workstation_get_power(SD_workstation_t workstation) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(workstation != NULL, "Invalid parameter");
-  return surf_workstation_resource->extension_public->get_speed(workstation->sd_data->surf_workstation, 1.0);
+  return surf_workstation_resource->extension_public->get_speed(workstation->surf_workstation, 1.0);
 }
 
 /* Returns the proportion of available power in a workstation (normally a number between 0 and 1).
 }
 
 /* Returns the proportion of available power in a workstation (normally a number between 0 and 1).
@@ -128,7 +125,7 @@ double SD_workstation_get_power(SD_workstation_t workstation) {
 double SD_workstation_get_available_power(SD_workstation_t workstation) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(workstation != NULL, "Invalid parameter");
 double SD_workstation_get_available_power(SD_workstation_t workstation) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(workstation != NULL, "Invalid parameter");
-  return surf_workstation_resource->extension_public->get_available_speed(workstation->sd_data->surf_workstation);
+  return surf_workstation_resource->extension_public->get_available_speed(workstation->surf_workstation);
 }
 
 /* Destroys a workstation. The user data (if any) should have been destroyed first.
 }
 
 /* Destroys a workstation. The user data (if any) should have been destroyed first.
@@ -136,10 +133,6 @@ double SD_workstation_get_available_power(SD_workstation_t workstation) {
 void __SD_workstation_destroy(void *workstation) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(workstation != NULL, "Invalid parameter");
 void __SD_workstation_destroy(void *workstation) {
   SD_CHECK_INIT_DONE();
   xbt_assert0(workstation != NULL, "Invalid parameter");
-
-  if (((SD_workstation_t) workstation)->sd_data != NULL) {
-    xbt_free(((SD_workstation_t) workstation)->sd_data);
-  }
-  
+  /* workstation->surf_workstation is freed by surf_exit and workstation->data is freed by the user */
   xbt_free(workstation);
 }
   xbt_free(workstation);
 }