Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Energy, onHostDestruction: ensured ptr existence
[simgrid.git] / include / simgrid / platf.h
1 /* platf.h - Public interface to the SimGrid platforms                      */
2
3 /* Copyright (c) 2004-2015. The SimGrid Team.
4  * 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_H
10 #define SG_PLATF_H
11
12 #include <xbt.h>
13 #include <simgrid/host.h>
14 #include "forward.h"
15
16 SG_BEGIN_DECL()
17
18 static inline char* sg_storage_name(sg_storage_t storage) {
19   return storage->key;
20 }
21
22 XBT_PUBLIC(sg_netcard_t) sg_netcard_by_name_or_null(const char *name);
23
24 XBT_PUBLIC(tmgr_trace_t) tmgr_trace_new_from_file(const char *filename);
25 XBT_PUBLIC(tmgr_trace_t) tmgr_trace_new_from_string(const char *id,
26                                                     const char *input,
27                                                     double periodicity);
28
29 XBT_PUBLIC(tmgr_trace_t) tmgr_trace_generator_value(const char *id,
30                                               probabilist_event_generator_t date_generator,
31                                               probabilist_event_generator_t value_generator);
32 XBT_PUBLIC(tmgr_trace_t) tmgr_trace_generator_state(const char *id,
33                                               probabilist_event_generator_t date_generator,
34                                               int first_event_hostIsOn);
35 XBT_PUBLIC(tmgr_trace_t) tmgr_trace_generator_avail_unavail(const char *id,
36                                               probabilist_event_generator_t avail_duration_generator,
37                                               probabilist_event_generator_t unavail_duration_generator,
38                                               int first_event_hostIsOn);
39
40 XBT_PUBLIC(probabilist_event_generator_t) tmgr_event_generator_new_uniform(const char* id,
41                                                                            double min,
42                                                                            double max);
43 XBT_PUBLIC(probabilist_event_generator_t) tmgr_event_generator_new_exponential(const char* id,
44                                                                            double rate);
45 XBT_PUBLIC(probabilist_event_generator_t) tmgr_event_generator_new_weibull(const char* id,
46                                                                            double scale,
47                                                                            double shape);
48
49 /* ***************************************** */
50
51 XBT_PUBLIC(void) sg_platf_begin(void);  // Start a new platform
52 XBT_PUBLIC(void) sg_platf_end(void); // Finish the creation of the platform
53
54 XBT_PUBLIC(void) sg_platf_new_AS_begin(sg_platf_AS_cbarg_t AS); // Begin description of new AS
55 XBT_PUBLIC(void) sg_platf_new_AS_end(void);                            // That AS is fully described
56
57 XBT_PUBLIC(void) sg_platf_new_host   (sg_platf_host_cbarg_t   host);   // Add an host   to the currently described AS
58 XBT_PUBLIC(void) sg_platf_new_netcard(sg_platf_host_link_cbarg_t h); // Add an host_link to the currently described AS
59 XBT_PUBLIC(void) sg_platf_new_router (sg_platf_router_cbarg_t router); // Add a router  to the currently described AS
60 XBT_PUBLIC(void) sg_platf_new_link   (sg_platf_link_cbarg_t link);     // Add a link    to the currently described AS
61 XBT_PUBLIC(void) sg_platf_new_peer   (sg_platf_peer_cbarg_t peer);     // Add a peer    to the currently described AS
62 XBT_PUBLIC(void) sg_platf_new_cluster(sg_platf_cluster_cbarg_t clust); // Add a cluster to the currently described AS
63 XBT_PUBLIC(void) sg_platf_new_cabinet(sg_platf_cabinet_cbarg_t cabinet); // Add a cabinet to the currently described AS
64
65 XBT_PUBLIC(void) sg_platf_new_route (sg_platf_route_cbarg_t route); // Add a route
66 XBT_PUBLIC(void) sg_platf_new_ASroute (sg_platf_route_cbarg_t ASroute); // Add an ASroute
67 XBT_PUBLIC(void) sg_platf_new_bypassRoute (sg_platf_route_cbarg_t bypassroute); // Add a bypassRoute
68 XBT_PUBLIC(void) sg_platf_new_bypassASroute (sg_platf_route_cbarg_t bypassASroute); // Add an bypassASroute
69
70 XBT_PUBLIC(void) sg_platf_new_trace(sg_platf_trace_cbarg_t trace);
71
72 XBT_PUBLIC(void) sg_platf_new_storage(sg_platf_storage_cbarg_t storage); // Add a storage to the currently described AS
73 XBT_PUBLIC(void) sg_platf_new_mstorage(sg_platf_mstorage_cbarg_t mstorage);
74 XBT_PUBLIC(void) sg_platf_new_storage_type(sg_platf_storage_type_cbarg_t storage_type);
75 XBT_PUBLIC(void) sg_platf_new_mount(sg_platf_mount_cbarg_t mount);
76
77 XBT_PUBLIC(void) sg_platf_new_process(sg_platf_process_cbarg_t process);
78
79 // Add route and Asroute without xml file with those functions
80 XBT_PUBLIC(void) sg_platf_route_begin (sg_platf_route_cbarg_t route); // Initialize route
81 XBT_PUBLIC(void) sg_platf_route_end (sg_platf_route_cbarg_t route); // Finalize and add a route
82
83 XBT_PUBLIC(void) sg_platf_ASroute_begin (sg_platf_route_cbarg_t ASroute); // Initialize ASroute
84 XBT_PUBLIC(void) sg_platf_ASroute_end (sg_platf_route_cbarg_t ASroute); // Finalize and add a ASroute
85
86 XBT_PUBLIC(void) sg_platf_route_add_link (const char* link_id, sg_platf_route_cbarg_t route); // Add a link to link list
87 XBT_PUBLIC(void) sg_platf_ASroute_add_link (const char* link_id, sg_platf_route_cbarg_t ASroute); // Add a link to link list
88
89 SG_END_DECL()
90
91 #endif                          /* SG_PLATF_H */