SURF_ACTION_RUNNING, /* Running */
SURF_ACTION_FAILED, /* Task Failure */
SURF_ACTION_DONE, /* Completed */
+ SURF_ACTION_TO_FREE, /* Action to free in next cleanup */
SURF_ACTION_NOT_IN_THE_SYSTEM /* Not in the system anymore. Why did you ask ? */
} e_surf_action_state_t;
double finish; /* finish time : this is modified during the run
* and fluctuates until the task is completed */
void *data; /* for your convenience */
+ int using;
surf_resource_t resource_type;
} s_surf_action_t;
const char *(*get_resource_name) (void *resource_id);
e_surf_action_state_t(*action_get_state) (surf_action_t action);
- void (*action_free) (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);
void (*action_recycle) (surf_action_t action);
void (*action_change_state) (surf_action_t action,
e_surf_action_state_t state);
- void (*action_set_data) (surf_action_t action,
- void *data);
+ void (*action_set_data) (surf_action_t action, void *data);
+ void (*suspend) (surf_action_t action);
+ void (*resume) (surf_action_t action);
+ int (*is_suspended) (surf_action_t action);
+ void (*set_max_duration) (surf_action_t action, double duration);
const char *name;
} s_surf_resource_public_t, *surf_resource_public_t;
surf_resource_public_t common_public;
} s_surf_resource_t;
-typedef struct surf_resource_object {
- surf_resource_t resource;
-} s_surf_resource_object_t, *surf_resource_object_t;
-
/**************************************/
/* 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);
+} s_surf_timer_resource_extension_public_t,
+ *surf_timer_resource_extension_public_t;
+
+typedef struct surf_timer_resource {
+ surf_resource_private_t common_private;
+ surf_resource_public_t common_public;
+ surf_timer_resource_extension_public_t extension_public;
+} s_surf_timer_resource_t, *surf_timer_resource_t;
+extern surf_timer_resource_t surf_timer_resource;
+void surf_timer_resource_init(const char *filename);
+
/* Cpu resource */
typedef enum {
SURF_CPU_ON = 1, /* Ready */
typedef struct surf_cpu_resource_extension_public {
surf_action_t(*execute) (void *cpu, double size);
surf_action_t(*sleep) (void *cpu, double duration);
- void (*suspend) (surf_action_t action);
- void (*resume) (surf_action_t action);
- int (*is_suspended) (surf_action_t action);
- e_surf_cpu_state_t(*get_state) (void *cpu);
+ e_surf_cpu_state_t(*get_state) (void *cpu);
} s_surf_cpu_resource_extension_public_t,
*surf_cpu_resource_extension_public_t;
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);
+ surf_action_t(*communicate) (void *src, void *dst, double size,
+ double max_rate);
} s_surf_network_resource_extension_public_t,
*surf_network_resource_extension_public_t;
typedef struct surf_workstation_resource_extension_public {
surf_action_t(*execute) (void *workstation, double size);
surf_action_t(*sleep) (void *workstation, double duration);
- void (*suspend) (surf_action_t action);
- void (*resume) (surf_action_t action);
- int (*is_suspended) (surf_action_t action);
- e_surf_cpu_state_t(*get_state) (void *workstation);
- surf_action_t(*communicate) (void *workstation_src,
- void *workstation_dst, double size);
+ e_surf_cpu_state_t(*get_state) (void *workstation);
+ surf_action_t(*communicate) (void *workstation_src,
+ void *workstation_dst, double size,
+ double max_rate);
+ surf_action_t(*execute_parallel_task) (int workstation_nb,
+ void **workstation_list,
+ double *computation_amount,
+ double *communication_amount,
+ double amount,
+ double rate);
} s_surf_workstation_resource_extension_public_t,
*surf_workstation_resource_extension_public_t;
extern surf_workstation_resource_t surf_workstation_resource;
void surf_workstation_resource_init_CLM03(const char *filename);
-void surf_workstation_resource_init_resource_init_KCCFLN05(const char *filename);
+void surf_workstation_resource_init_KCCFLN05(const char *filename);
extern xbt_dict_t workstation_set;
/*******************************************/