Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Platform generation : add the Zegura algorithm topology
[simgrid.git] / include / simgrid / platf_generator.h
index 4c40f51..4ee6cce 100644 (file)
@@ -9,19 +9,50 @@
 #ifndef SG_PLATF_GEN_H
 #define SG_PLATF_GEN_H
 
+#include "xbt.h"
+#include "xbt/graph.h" //Only for platf_graph_get()
+#include "platf.h"
+
 typedef enum {
   ROUTER,
   HOST,
   CLUSTER
 } e_platf_node_kind;
 
-typedef enum {
-  UNIFORM,
-  HEAVY_TAILED
-} e_platf_placement;
+typedef struct s_context_node_t *context_node_t;
+typedef struct s_context_edge_t *context_edge_t;
+
+typedef void (*platf_promoter_cb_t) (context_node_t);
+typedef void (*platf_labeler_cb_t) (context_edge_t);
+
+XBT_PUBLIC(void) platf_random_seed(unsigned long seed[6]);
+
+XBT_PUBLIC(void) platf_graph_uniform(unsigned long node_count);
+XBT_PUBLIC(void) platf_graph_heavytailed(unsigned long node_count);
+
+XBT_PUBLIC(void) platf_graph_interconnect_star(void);
+XBT_PUBLIC(void) platf_graph_interconnect_line(void);
+XBT_PUBLIC(void) platf_graph_interconnect_ring(void);
+XBT_PUBLIC(void) platf_graph_interconnect_clique(void);
+XBT_PUBLIC(void) platf_graph_interconnect_uniform(double alpha);
+XBT_PUBLIC(void) platf_graph_interconnect_exponential(double alpha);
+XBT_PUBLIC(void) platf_graph_interconnect_zegura(double alpha, double beta, double r);
+XBT_PUBLIC(void) platf_graph_interconnect_barabasi(void);
+
+XBT_PUBLIC(void) platf_graph_promote_to_host(context_node_t node, sg_platf_host_cbarg_t parameters);
+XBT_PUBLIC(void) platf_graph_promote_to_cluster(context_node_t node, sg_platf_cluster_cbarg_t parameters);
+
+XBT_PUBLIC(void) platf_graph_link_label(context_edge_t edge, sg_platf_link_cbarg_t parameters);
+
+XBT_PUBLIC(void) platf_graph_promoter(platf_promoter_cb_t promoter_callback);
+XBT_PUBLIC(void) platf_graph_labeler(platf_labeler_cb_t labeler_callback);
+
+XBT_PUBLIC(void) platf_do_promote(void);
+XBT_PUBLIC(void) platf_do_label(void);
 
-void platf_random_seed(unsigned long seed[6]);
+// WARNING : Only for debbugging ; should be removed when platform
+// generation works correctly
+XBT_PUBLIC(xbt_graph_t) platf_graph_get(void);
 
-void platf_graph_init(int node_count, e_platf_placement placement);
+#endif              /* SG_PLATF_GEN_H */
 
-#endif