Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
72ff74ed72b994cbb45aca4b862fdbbb89e772ac
[simgrid.git] / include / simgrid / platf_generator.h
1
2 /* platf_generator.h - Public interface to the SimGrid platforms generator  */
3
4 /* Copyright (c) 2004-2012. The SimGrid Team. All rights reserved.          */
5
6 /* This program is free software; you can redistribute it and/or modify it
7  * under the terms of the license (GNU LGPL) which comes with this package. */
8
9 #ifndef SG_PLATF_GEN_H
10 #define SG_PLATF_GEN_H
11
12 #include "xbt.h"
13 #include "xbt/graph.h" //Only for platf_graph_get()
14 #include "platf.h"
15
16 typedef enum {
17   ROUTER,
18   HOST,
19   CLUSTER
20 } e_platf_node_kind;
21
22 typedef struct s_context_node_t *context_node_t;
23 typedef struct s_context_edge_t *context_edge_t;
24
25 typedef void (*platf_promoter_cb_t) (context_node_t);
26 typedef void (*platf_labeler_cb_t) (context_edge_t);
27
28 XBT_PUBLIC(void) platf_random_seed(unsigned long seed[6]);
29
30 XBT_PUBLIC(void) platf_graph_uniform(unsigned long node_count);
31 XBT_PUBLIC(void) platf_graph_heavytailed(unsigned long node_count);
32
33 XBT_PUBLIC(void) platf_graph_interconnect_star(void);
34 XBT_PUBLIC(void) platf_graph_interconnect_line(void);
35 XBT_PUBLIC(void) platf_graph_interconnect_ring(void);
36 XBT_PUBLIC(void) platf_graph_interconnect_clique(void);
37 XBT_PUBLIC(void) platf_graph_interconnect_uniform(double alpha);
38 XBT_PUBLIC(void) platf_graph_interconnect_exponential(double alpha);
39 XBT_PUBLIC(void) platf_graph_interconnect_barabasi(void);
40
41 XBT_PUBLIC(void) platf_graph_promote_to_host(context_node_t node, sg_platf_host_cbarg_t parameters);
42 XBT_PUBLIC(void) platf_graph_promote_to_cluster(context_node_t node, sg_platf_cluster_cbarg_t parameters);
43
44 XBT_PUBLIC(void) platf_graph_link_label(context_edge_t edge, sg_platf_link_cbarg_t parameters);
45
46 XBT_PUBLIC(void) platf_graph_promoter(platf_promoter_cb_t promoter_callback);
47 XBT_PUBLIC(void) platf_graph_labeler(platf_labeler_cb_t labeler_callback);
48
49 XBT_PUBLIC(void) platf_do_promote(void);
50 XBT_PUBLIC(void) platf_do_label(void);
51
52 // WARNING : Only for debbugging ; should be removed when platform
53 // generation works correctly
54 XBT_PUBLIC(xbt_graph_t) platf_graph_get(void);
55
56 #endif              /* SG_PLATF_GEN_H */
57