#ifndef SG_PLATF_GEN_H
#define SG_PLATF_GEN_H
-#include <xbt.h>
-#include <xbt/graph.h> //Only for platf_graph_get()
+#include "xbt.h"
+#include "xbt/graph.h" //Only for platf_graph_get()
+#include "platf.h"
typedef enum {
ROUTER,
XBT_PUBLIC(void) platf_graph_interconnect_uniform(double alpha);
XBT_PUBLIC(void) platf_graph_interconnect_exponential(double alpha);
+XBT_PUBLIC(void) platf_graph_promote_to_host(xbt_node_t node, sg_platf_host_cbarg_t parameters);
+XBT_PUBLIC(void) platf_graph_promote_to_cluster(xbt_node_t node, sg_platf_cluster_cbarg_t parameters);
+
// WARNING : Only for debbugging ; should be removed when platform
// generation works correctly
XBT_PUBLIC(xbt_graph_t) platf_graph_get(void);
}
}
+void platf_graph_promote_to_host(xbt_node_t node, sg_platf_host_cbarg_t parameters) {
+ context_node_t node_data = (context_node_t) xbt_graph_node_get_data(node);
+ node_data->kind = HOST;
+ memcpy(&(node_data->host_parameters), parameters, sizeof(s_sg_platf_host_cbarg_t));
+}
+
+void platf_graph_promote_to_cluster(xbt_node_t node, sg_platf_cluster_cbarg_t parameters) {
+ context_node_t node_data = (context_node_t) xbt_graph_node_get_data(node);
+ node_data->kind = CLUSTER;
+ memcpy(&(node_data->cluster_parameters), parameters, sizeof(s_sg_platf_cluster_cbarg_t));
+}
+
+
/* Functions used to generate interesting random values */
double random_pareto(double min, double max, double K, double P, double ALPHA) {
#ifndef SG_PLATF_GEN_PRIVATE_H
#define SG_PLATF_GEN_PRIVATE_H
-#include <xbt/graph.h>
+#include "xbt/graph.h"
+#include "simgrid/platf.h"
-typedef struct {
+typedef struct s_context_node_t {
unsigned long id;
double x, y;
int degree;
e_platf_node_kind kind;
+ union {
+ s_sg_platf_host_cbarg_t host_parameters;
+ s_sg_platf_cluster_cbarg_t cluster_parameters;
+ };
} s_context_node_t, *context_node_t;
void platf_graph_init(unsigned long node_count);