4 #include "simdag/datatypes.h"
9 /************************** Link handling ***********************************/
11 SG_link_t SG_link_create(void *data, const char *name,
12 double capacity, double bandwidth, double latency);
13 void* SG_link_get_data(SG_link_t link);
14 void SG_link_set_data(SG_link_t link, void *data);
15 const char* SG_link_get_name(SG_link_t link);
16 double SG_link_get_capacity(SG_link_t link);
17 double SG_link_get_current_bandwidth(SG_link_t link);
18 double SG_link_get_current_latency(SG_link_t link);
19 void SG_link_destroy(SG_link_t link);
21 /************************** Workstation handling ****************************/
23 SG_workstation_t SG_workstation_create(void *data, const char *name, double power,
24 double available_power);
25 SG_workstation_t SG_workstation_get_by_name(const char *name);
26 SG_workstation_t* SG_workstation_get_list(void);
27 int SG_workstation_get_number(void);
28 void SG_workstation_set_data(SG_workstation_t workstation, void *data);
29 void* SG_workstation_get_data(SG_workstation_t workstation);
30 const char* SG_workstation_get_name(SG_workstation_t workstation);
31 SG_link_t* SG_workstation_route_get_list(SG_workstation_t src, SG_workstation_t dst);
32 int SG_workstation_route_get_size(SG_workstation_t src, SG_workstation_t dst);
33 double SG_workstation_get_power(SG_workstation_t workstation);
34 double SG_workstation_get_available_power(SG_workstation_t workstation);
35 void SG_workstation_destroy(SG_workstation_t workstation);
37 /************************** Task handling ************************************/
39 SG_task_t SG_task_create(const char *name, void *data, double amount);
40 int SG_task_schedule(SG_task_t task, int workstation_nb,
41 SG_workstation_t **workstation_list, double *computation_amount,
42 double *communication_amount, double rate);
44 void* SG_task_get_data(SG_task_t task);
45 void SG_task_set_data(SG_task_t task, void *data);
46 const char* SG_task_get_name(SG_task_t task);
47 double SG_task_get_amount(SG_task_t task);
48 double SG_task_get_remaining_amount(SG_task_t task);
49 void SG_task_dependency_add(const char *name, void *data, SG_task_t src, SG_task_t dst);
50 void SG_task_dependency_remove(SG_task_t src, SG_task_t dst);
51 SG_task_state_t SG_task_get_state(SG_task_t task);
52 /* SG_task_state_t can be either SG_SCHEDULED, SG_RUNNING, SG_DONE, or SG_FAILED */
54 void SG_task_watch(SG_task_t task, SG_task_state_t state);
55 /* SG_simulate will stop as soon as the state of this task is the one given in argument.
56 Watch-point is then automatically removed */
58 void SG_task_unwatch(SG_task_t task, SG_task_state_t state);
59 void SG_task_unschedule(SG_task_t task); /* change state and rerun */
60 void SG_task_destroy(SG_task_t task);
62 /************************** Global *******************************************/
64 SG_task_t *SG_simulate(double how_long); /* returns a NULL-terminated array of SG_task_t whose state has changed */