Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add prototype of function get_route in Surf
[simgrid.git] / src / include / surf / surf.h
index 7d46330..262c7f1 100644 (file)
@@ -41,6 +41,7 @@ typedef struct surf_action {
   s_xbt_swag_hookup_t state_hookup;
   xbt_swag_t state_set;
   double cost;                 /* cost        */
+  double priority;             /* priority (1.0 by default) */
   double max_duration;         /* max_duration (may fluctuate until
                                   the task is completed) */
   double remains;              /* How much of that cost remains to
@@ -63,7 +64,7 @@ typedef struct surf_resource_public {
   void *(*name_service) (const char *name);
   const char *(*get_resource_name) (void *resource_id);
 
-   e_surf_action_state_t(*action_get_state) (surf_action_t action);
+  e_surf_action_state_t(*action_get_state) (surf_action_t action);
   void (*action_use) (surf_action_t action);
   int  (*action_free) (surf_action_t action);
   void (*action_cancel) (surf_action_t action);
@@ -75,6 +76,7 @@ typedef struct surf_resource_public {
   void (*resume) (surf_action_t action);
   int (*is_suspended) (surf_action_t action);
   void (*set_max_duration) (surf_action_t action, double duration);
+  void (*set_priority) (surf_action_t action, double priority);
   const char *name;
 } s_surf_resource_public_t, *surf_resource_public_t;
 
@@ -87,8 +89,6 @@ typedef struct surf_resource {
 /* Implementations of resource object */
 /**************************************/
 /* Timer resource */
-typedef struct surf_timer_resource_extension_private
-*surf_timer_resource_extension_private_t;
 typedef struct surf_timer_resource_extension_public {
   void (*set) (double date, void *function, void *arg);
   int (*get)  (void **function, void **arg);
@@ -109,13 +109,12 @@ typedef enum {
   SURF_CPU_OFF = 0             /* Running      */
 } e_surf_cpu_state_t;
 
-typedef struct surf_cpu_resource_extension_private
-*surf_cpu_resource_extension_private_t;
 typedef struct surf_cpu_resource_extension_public {
   surf_action_t(*execute) (void *cpu, double size);
   surf_action_t(*sleep) (void *cpu, double duration);
   e_surf_cpu_state_t(*get_state) (void *cpu);
   double (*get_speed) (void *cpu, double load);
+  double (*get_available_speed) (void *cpu);
 } s_surf_cpu_resource_extension_public_t,
     *surf_cpu_resource_extension_public_t;
 
@@ -128,11 +127,10 @@ extern surf_cpu_resource_t surf_cpu_resource;
 void surf_cpu_resource_init_Cas01(const char *filename);
 
 /* Network resource */
-typedef struct surf_network_resource_extension_private
-*surf_network_resource_extension_private_t;
 typedef struct surf_network_resource_extension_public {
   surf_action_t(*communicate) (void *src, void *dst, double size,
                               double max_rate);
+  void** (*get_route) (void *src, void *dst);
 } s_surf_network_resource_extension_public_t,
     *surf_network_resource_extension_public_t;
 
@@ -144,15 +142,15 @@ typedef struct surf_network_resource {
 
 extern surf_network_resource_t surf_network_resource;
 void surf_network_resource_init_CM02(const char *filename);
+extern xbt_dict_t network_link_set;
 
 /* Workstation resource */
-typedef struct surf_workstation_resource_extension_private
-*surf_workstation_resource_extension_private_t;
 typedef struct surf_workstation_resource_extension_public {
   surf_action_t(*execute) (void *workstation, double size);
   surf_action_t(*sleep) (void *workstation, double duration);
   e_surf_cpu_state_t(*get_state) (void *workstation);
   double (*get_speed) (void *workstation, double load);
+  double (*get_available_speed) (void *workstation);
   surf_action_t(*communicate) (void *workstation_src,
                               void *workstation_dst, double size,
                               double max_rate);
@@ -162,6 +160,7 @@ typedef struct surf_workstation_resource_extension_public {
                                         double *communication_amount,
                                         double amount,
                                         double rate);
+  void** (*get_route) (void *src, void *dst);
 } s_surf_workstation_resource_extension_public_t,
     *surf_workstation_resource_extension_public_t;