Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
First SimDag draft. See http://simgrid.gforge.inria.fr/doc/faq.html#faq_SG_future
[simgrid.git] / include / simdag / simdag.h
1 #ifndef SIMDAG_H
2 #define SIMDAG_H
3
4 #include "simdag/datatypes.h"
5 #include "xbt/misc.h"
6
7 SG_BEGIN_DECL()
8
9 /************************** Link handling ***********************************/
10
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);
20
21 /************************** Workstation handling ****************************/
22
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);
36
37 /************************** Task handling ************************************/
38
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);
43
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 */
53
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 */
57
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);
61
62 /************************** Global *******************************************/
63
64 SG_task_t        *SG_simulate(double how_long); /* returns a NULL-terminated array of SG_task_t whose state has changed */
65
66 SG_END_DECL()
67
68 #endif