X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/07486ac62467a9646579f524ade93202535421d0..4436adf7710dc39c6555fcd87701db50c654bf71:/include/simgrid/platf_generator.h diff --git a/include/simgrid/platf_generator.h b/include/simgrid/platf_generator.h index 4c40f51fe7..fbe912c3fa 100644 --- a/include/simgrid/platf_generator.h +++ b/include/simgrid/platf_generator.h @@ -1,7 +1,8 @@ /* platf_generator.h - Public interface to the SimGrid platforms generator */ -/* Copyright (c) 2004-2012. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2004-2014. The SimGrid Team. + * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -9,19 +10,74 @@ #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 { + unsigned long id; + double x, y; + int degree; + e_platf_node_kind kind; + int connect_checked; + union { + s_sg_platf_host_cbarg_t host_parameters; + s_sg_platf_cluster_cbarg_t cluster_parameters; + char* router_id; + }; +} s_context_node_t, *context_node_t; + +typedef struct s_context_edge_t { + unsigned long id; + double length; + int labeled; + s_sg_platf_link_cbarg_t link_parameters; +} 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_waxman(double alpha, double beta); +XBT_PUBLIC(void) platf_graph_interconnect_barabasi(void); + +XBT_PUBLIC(int) platf_graph_is_connected(void); + +XBT_PUBLIC(void) platf_graph_clear_links(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); + +XBT_PUBLIC(void) platf_generate(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