#include "xbt/dict.h"
#include "xbt/graph.h"
#include "xbt/misc.h"
-#include "xbt/file_stat.h"
#include "portable.h"
#include "xbt/config.h"
#include "surf/datatypes.h"
extern double sg_latency_factor;
extern double sg_bandwidth_factor;
extern double sg_weight_S_parameter;
-extern int sg_maxmin_selective_update;
extern int sg_network_crosstraffic;
#ifdef HAVE_GTNETS
extern double sg_gtnets_jitter;
char *category; /**< tracing category for categorized resource utilization monitoring */
#endif
surf_file_t file; /**< surf_file_t for storage model */
- s_file_stat_t stat; /**< surf_file_t for storage model */
xbt_dict_t ls_dict;
} s_surf_action_t;
*/
typedef struct surf_storage_model_extension_public {
- surf_action_t(*open) (void *storage, const char* mount, const char* path, const char* mode);
- surf_action_t(*close) (void *storage, surf_file_t fp);
- surf_action_t(*read) (void *storage, void* ptr, double size, size_t nmemb, surf_file_t stream);
- surf_action_t(*write) (void *storage, const void* ptr, size_t size, size_t nmemb, surf_file_t stream);
- surf_action_t(*stat) (void *storage, surf_file_t stream);
- surf_action_t(*unlink) (void *storage, surf_file_t stream);
+ surf_action_t(*open) (void *storage, const char* mount, const char* path);
+ surf_action_t(*close) (void *storage, surf_file_t fd);
+ surf_action_t(*read) (void *storage, void* ptr, double size, size_t nmemb,
+ surf_file_t fd);
+ surf_action_t(*write) (void *storage, const void* ptr, size_t size,
+ size_t nmemb, surf_file_t fd);
+ surf_action_t(*stat) (void *storage, surf_file_t fd);
surf_action_t(*ls) (void *storage, const char *path);
} s_surf_model_extension_storage_t;
double rate);
double (*get_link_bandwidth) (const void *link); /**< Return the current bandwidth of a network link */
double (*get_link_latency) (const void *link); /**< Return the current latency of a network link */
- surf_action_t(*open) (void *workstation, const char* storage, const char* path, const char* mode);
- surf_action_t(*close) (void *workstation, surf_file_t fp);
- surf_action_t(*read) (void *workstation, void* ptr, size_t size, size_t nmemb, surf_file_t stream);
- surf_action_t(*write) (void *workstation, const void* ptr, size_t size, size_t nmemb, surf_file_t stream);
- surf_action_t(*stat) (void *workstation, surf_file_t stream);
- surf_action_t(*unlink) (void *workstation, surf_file_t stream);
+ surf_action_t(*open) (void *workstation, const char* storage,
+ const char* path);
+ surf_action_t(*close) (void *workstation, surf_file_t fd);
+ surf_action_t(*read) (void *workstation, void* ptr, size_t size, size_t nmemb,
+ surf_file_t fd);
+ surf_action_t(*write) (void *workstation, const void* ptr, size_t size,
+ size_t nmemb, surf_file_t fd);
+ surf_action_t(*stat) (void *workstation, surf_file_t fd);
+ int(*unlink) (void *workstation, surf_file_t fd);
surf_action_t(*ls) (void *workstation, const char* mount, const char *path);
+ size_t (*get_size) (void *workstation, surf_file_t fd);
int (*link_shared) (const void *link);
xbt_dict_t(*get_properties) (const void *resource);
surf_model_t surf_model_init(void);
void surf_model_exit(surf_model_t model);
+static inline void *surf_cpu_resource_priv(const void *host) {
+ return xbt_lib_get_level((void *)host, SURF_CPU_LEVEL);
+}
+static inline void *surf_workstation_resource_priv(const void *host){
+ return xbt_lib_get_level((void *)host, SURF_WKS_LEVEL);
+}
+static inline void *surf_storage_resource_priv(const void *host){
+ return xbt_lib_get_level((void *)host, SURF_STORAGE_LEVEL);
+}
+
static inline void *surf_cpu_resource_by_name(const char *name) {
- return xbt_lib_get_or_null(host_lib, name, SURF_CPU_LEVEL);
+ return xbt_lib_get_elm_or_null(host_lib, name);
}
static inline void *surf_workstation_resource_by_name(const char *name){
- return xbt_lib_get_or_null(host_lib, name, SURF_WKS_LEVEL);
+ return xbt_lib_get_elm_or_null(host_lib, name);
}
static inline void *surf_storage_resource_by_name(const char *name){
- return xbt_lib_get_or_null(storage_lib, name, SURF_STORAGE_LEVEL);
+ return xbt_lib_get_elm_or_null(storage_lib, name);
}
typedef struct surf_resource {
* You can change this behavior by setting the cpu/optim configuration
* variable to a different value.
*
- * This function is called by surf_workstation_model_init_CLM03
- * so you shouldn't have to call it by yourself.
- *
- * \see surf_workstation_model_init_CLM03()
+ * You shouldn't have to call it by yourself.
*/
XBT_PUBLIC(void) surf_cpu_model_init_Cas01(void);
* \brief Initializes the CPU model with trace integration [Deprecated]
*
* You shouldn't have to call it by yourself.
- * \see surf_workstation_model_init_CLM03()
*/
XBT_PUBLIC(void) surf_cpu_model_init_ti(void);
-/** \brief This function call the share resources function needed
- *
- */
-XBT_PUBLIC(double) generic_share_resources(double now);
-
-/** \brief This function call the update action state function needed
- *
- */
-XBT_PUBLIC(void) generic_update_actions_state(double now, double delta);
-
/** \ingroup SURF_models
* \brief The list of all available optimization modes (both for cpu and networks).
* These optimization modes can be set using --cfg=cpu/optim:... and --cfg=network/optim:...
*/
XBT_PUBLIC_DATA(s_surf_model_description_t) surf_cpu_model_description[];
-XBT_PUBLIC(void) create_workstations(void);
-
/**\brief create new host bypass the parser
*
*/
/** \ingroup SURF_models
* \brief Initializes the platform with the network model CM02
*
- * This function is called by surf_workstation_model_init_CLM03
- * or by yourself only if you plan using surf_workstation_model_init_compound
+ * You sould call this function by yourself only if you plan using
+ * surf_workstation_model_init_compound.
* See comments in the code for more information.
- *
- * \see surf_workstation_model_init_CLM03()
*/
XBT_PUBLIC(void) surf_network_model_init_CM02(void);
-/**
- * brief initialize the the network model bypassing the XML parser
- */
-XBT_PUBLIC(void) surf_network_model_init_bypass(const char *id,
- double initial_bw,
- double initial_lat);
-
#ifdef HAVE_GTNETS
/** \ingroup SURF_models
* \brief Initializes the platform with the network model GTNETS
*/
XBT_PUBLIC(void) surf_workstation_model_init_current_default(void);
-/** \ingroup SURF_models
- * \brief Initializes the platform with the workstation model CLM03
- *
- * This platform model seperates the workstation model and the network model.
- * The workstation model will be initialized with the model CLM03, the network
- * model with the model CM02 and the CPU model with the model Cas01.
- * In future releases, some other network models will be implemented and will be
- * combined with the workstation model CLM03.
- *
- */
-XBT_PUBLIC(void) surf_workstation_model_init_CLM03(void);
-
/** \ingroup SURF_models
* \brief Initializes the platform with the model KCCFLN05
*
*/
XBT_PUBLIC_DATA(xbt_dynar_t) model_list;
+/*******************************************/
+/*** SURF Platform *************************/
+/*******************************************/
+typedef struct s_as *AS_t;
+
+XBT_PUBLIC_DATA(AS_t) surf_AS_get_routing_root(void);
+XBT_PUBLIC_DATA(const char *) surf_AS_get_name(AS_t as);
+XBT_PUBLIC_DATA(xbt_dict_t) surf_AS_get_routing_sons(AS_t as);
+XBT_PUBLIC_DATA(const char *) surf_AS_get_model(AS_t as);
+XBT_PUBLIC_DATA(xbt_dynar_t) surf_AS_get_hosts(AS_t as);
+
/*******************************************/
/*** SURF Globals **************************/
/*******************************************/
* This function has to be called to initialize the common
* structures. Then you will have to create the environment by
* calling
- * e.g. surf_workstation_model_init_CLM03()
+ * e.g. surf_workstation_model_init_CM02()
*
- * \see surf_workstation_model_init_CLM03(), surf_workstation_model_init_compound(), surf_exit()
+ * \see surf_workstation_model_init_CM02(), surf_workstation_model_init_compound(), surf_exit()
*/
XBT_PUBLIC(void) surf_init(int *argc, char **argv); /* initialize common structures */
/* Prototypes of the functions that handle the properties */
XBT_PUBLIC_DATA(xbt_dict_t) current_property_set; /* the prop set for the currently parsed element (also used in SIMIX) */
-XBT_PUBLIC(void) parse_properties(void);
/* surf parse file related (public because called from a test suite) */
XBT_PUBLIC(void) parse_platform_file(const char *file);
-/* Stores the sets */
-XBT_PUBLIC_DATA(xbt_dict_t) set_list;
-
/* For the trace and trace:connect tag (store their content till the end of the parsing) */
XBT_PUBLIC_DATA(xbt_dict_t) traces_set_list;
XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_host_avail;