Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
convert Jedule bindings to C++
[simgrid.git] / include / simgrid / jedule / jedule_platform.h
1 /* Copyright (c) 2010-2012, 2014-2015. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5  * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 #ifndef JED_SIMGRID_PLATFORM_H_
8 #define JED_SIMGRID_PLATFORM_H_
9
10 #include "simgrid_config.h"
11
12 #include "xbt/dynar.h"
13 #include "xbt/hash.h"
14
15 #ifdef HAVE_JEDULE
16
17 SG_BEGIN_DECL()
18
19 typedef struct jed_simgrid_container s_jed_simgrid_container_t,
20     *jed_simgrid_container_t;
21
22
23 struct jed_simgrid_container {
24   char *name;
25   xbt_dynar_t container_children;
26   jed_simgrid_container_t parent;
27   xbt_dynar_t resource_list;
28   xbt_dict_t name2id;
29   int last_id;
30   int is_lowest;
31 };
32
33
34 /**
35  * selection of a subset of resources from the original set
36  *
37  */
38 struct jed_res_subset {
39   jed_simgrid_container_t parent;
40   int start_idx; // start idx in resource_list of container
41   int nres;      // number of resources spanning starting at start_idx
42 };
43
44 typedef struct jed_res_subset s_jed_res_subset_t, *jed_res_subset_t;
45
46 struct jedule_struct {
47   jed_simgrid_container_t root_container;
48   xbt_dict_t jedule_meta_info;
49 };
50
51 typedef struct jedule_struct s_jedule_t, *jedule_t;
52
53
54 /*********************************************************/
55
56 void jed_create_jedule(jedule_t *jedule);
57
58 void jed_free_jedule(jedule_t jedule);
59
60 void jedule_add_meta_info(jedule_t jedule, char *key, char *value);
61
62 void jed_simgrid_create_container(jed_simgrid_container_t *container,
63                                   const char *name);
64
65 void jed_simgrid_add_container(jed_simgrid_container_t parent,
66     jed_simgrid_container_t child);
67
68 void jed_simgrid_add_resources(jed_simgrid_container_t parent,
69     xbt_dynar_t host_names);
70
71 /**
72  *
73  * it is assumed that the host_names in the entire system are unique
74  * that means that we don't need parent references
75  *
76  * subset_list must be allocated
77  * host_names is the list of host_names associated with an event
78  */
79 void jed_simgrid_get_resource_selection_by_hosts(xbt_dynar_t subset_list,
80     xbt_dynar_t host_names);
81
82 /*
83   global:
84       hash host_id -> container
85
86   container:
87       hash host_id -> jed_host_id
88
89       list <- [ jed_host_ids ]
90       list <- sort( list )
91       list_chunks <- chunk( list )   -> [ 1, 3-5, 7-9 ]
92
93 */
94
95 SG_END_DECL()
96
97 #endif
98
99
100 #endif /* JED_SIMGRID_PLATFORM_H_ */