-/* Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team.
+/* Copyright (c) 2004-2013. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
surf_action_t(*execute) (void *cpu, double size);
surf_action_t(*sleep) (void *cpu, double duration);
e_surf_resource_state_t(*get_state) (void *cpu);
+ int (*get_core) (void *cpu);
double (*get_speed) (void *cpu, double load);
double (*get_available_speed) (void *cpu);
+ double (*get_current_power_peak) (void *cpu);
+ double (*get_power_peak_at) (void *cpu, int pstate_index);
+ int (*get_nb_pstates) (void *cpu);
+ void (*set_power_peak_at) (void *cpu, int pstate_index);
+ double (*get_consumed_energy) (void *cpu);
void (*add_traces) (void);
} s_surf_model_extension_cpu_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(*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 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(*read) (void *storage, surf_file_t fd, sg_storage_size_t size);
+ surf_action_t(*write) (void *storage, surf_file_t fd, sg_storage_size_t size);
+ surf_action_t(*stat) (void *storage, surf_file_t fd);
surf_action_t(*ls) (void *storage, const char *path);
- surf_action_t(*get_size) (void *storage, surf_file_t fd);
+ xbt_dict_t(*get_properties) (const void *storage);
+ void (*rename) (const void *storage, const char *src, const char *dest);
+ xbt_dict_t(*get_content) (void *storage);
+ sg_storage_size_t(*get_size) (void *storage);
} s_surf_model_extension_storage_t;
/** \ingroup SURF_models
and create the corresponding action */
surf_action_t(*sleep) (void *workstation, double duration); /**< Make a workstation sleep during a given duration */
e_surf_resource_state_t(*get_state) (void *workstation); /**< Return the CPU state of a workstation */
+
+ int (*get_core) (void *workstation);
double (*get_speed) (void *workstation, double load); /**< Return the speed of a workstation */
double (*get_available_speed) (void *workstation); /**< Return tha available speed of a workstation */
+
+ double (*get_current_power_peak) (void *workstation); /**< Return the current CPU speed of a workstation */
+ double (*get_power_peak_at) (void *workstation, int pstate_index); /**< Return the speed of a workstation for a specific pstate,
+ (where higher pstate values represent lower processor speeds) */
+ int (*get_nb_pstates) (void *workstation); /**< Return the number of pstates defined for a workstation (default is 1) */
+ void (*set_power_peak_at) (void *workstation, int pstate_index); /**< Set the processor speed of a workstation to the speed associated with the pstate_index pstate */
+ double (*get_consumed_energy) (void *workstation); /**< Return the total energy consumed by a workstation */
+
surf_action_t(*communicate) (void *workstation_src, /**< Execute a communication amount between two workstations */
void *workstation_dst, double size,
double max_rate);
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(*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 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(*read) (void *workstation, surf_file_t fd, sg_storage_size_t size);
+ surf_action_t(*write) (void *workstation, surf_file_t fd, sg_storage_size_t size);
+ 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);
- surf_action_t(*get_size) (void *workstation, surf_file_t fd);
-
+ sg_storage_size_t (*get_size) (void *workstation, surf_file_t fd);
+ xbt_dynar_t (*get_info) (void *workstation, surf_file_t fd);
int (*link_shared) (const void *link);
- xbt_dict_t(*get_properties) (const void *resource);
+ xbt_dict_t(*get_properties) (const void *resource);
void (*add_traces) (void);
+ sg_storage_size_t (*get_free_size) (void *workstation,const char* name);
+ sg_storage_size_t (*get_used_size) (void *workstation,const char* name);
+ xbt_dict_t (*get_storage_list) (void *workstation);
+
} s_surf_model_extension_workstation_t;
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_storage_resource_priv(const void *storage){
+ return xbt_lib_get_level((void *)storage, SURF_STORAGE_LEVEL);
}
static inline void *surf_cpu_resource_by_name(const char *name) {
surf_model_t model;
char *name;
xbt_dict_t properties;
+ void_f_pvoid_t free_f;
} s_surf_resource_t, *surf_resource_t;
/**
*/
XBT_PUBLIC_DATA(s_surf_model_description_t) surf_storage_model_description[];
+XBT_PUBLIC_DATA(surf_model_t) surf_storage_model;
+
/** \ingroup SURF_models
* \brief The workstation model
*
*/
XBT_PUBLIC_DATA(xbt_dynar_t) model_list;
+/** \ingroup SURF_simulation
+ * \brief List of hosts that have juste restarted and whose autorestart process should be restarted.
+ */
+XBT_PUBLIC_DATA(xbt_dynar_t) host_that_restart;
+
+/** \ingroup SURF_simulation
+ * \brief List of hosts for which one want to be notified if they ever restart.
+ */
+XBT_PUBLIC(xbt_dict_t) watched_hosts_lib;
+
+/*******************************************/
+/*** 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 **************************/
/*******************************************/
int surf_get_nthreads(void);
void surf_set_nthreads(int nthreads);
-void surf_watched_hosts(void);
-
/*
* Returns the initial path. On Windows the initial path is
* the current directory for the current process in the other