SG_BEGIN_DECL()
/* Actions and models are highly connected structures... */
+typedef enum {
+ UM_FULL,
+ UM_LAZY,
+ UM_UNDEFINED
+} e_UM_t;
+
typedef enum {
SURF_NETWORK_ELEMENT_NULL = 0, /* NULL */
SURF_NETWORK_ELEMENT_HOST, /* host type */
s_xbt_swag_hookup_t action_list_hookup;
int index_heap;
double last_update;
+ double last_value;
enum heap_action_type hat;
} s_surf_action_lmm_t, *surf_action_lmm_t;
/***************************/
/* Generic model object */
/***************************/
-typedef struct s_routing_global s_routing_global_t, *routing_global_t;
-XBT_PUBLIC_DATA(routing_global_t) global_routing;
+typedef struct s_routing_platf s_routing_platf_t, *routing_platf_t;
+XBT_PUBLIC_DATA(routing_platf_t) routing_platf;
/** \ingroup SURF_models
void (*add_traces) (void);
} s_surf_model_extension_cpu_t;
-typedef struct s_network_element_info *network_element_t;
-
/* Network model */
/** \ingroup SURF_models
* Public functions specific to the network model
*/
typedef struct surf_network_model_extension_public {
- surf_action_t (*communicate) (network_element_t src,
- network_element_t dst,
+ surf_action_t (*communicate) (sg_routing_edge_t src,
+ sg_routing_edge_t dst,
double size, double rate);
xbt_dynar_t(*get_route) (void *src, void *dst); //FIXME: kill field? That is done by the routing nowadays
double (*get_link_bandwidth) (const void *link);
surf_model_private_t model_private;
+ // for action
+ lmm_system_t maxmin_system;
+ e_UM_t update_mechanism;
+ xbt_swag_t modified_set;
+ xbt_heap_t action_heap;
+ int selective_update;
+
union extension {
s_surf_model_extension_cpu_t cpu;
s_surf_model_extension_network_t network;
static inline void *surf_workstation_resource_by_name(const char *name){
return xbt_lib_get_or_null(host_lib, name, SURF_WKS_LEVEL);
}
-static inline void *surf_network_resource_by_name(const char *name){
- network_element_t net_elm = xbt_lib_get_or_null(host_lib, name, ROUTING_HOST_LEVEL);
- if(!net_elm) net_elm = xbt_lib_get_or_null(as_router_lib, name, ROUTING_ASR_LEVEL);
- return net_elm;
-}
static inline void *surf_storage_resource_by_name(const char *name){
return xbt_lib_get_or_null(storage_lib, name, SURF_STORAGE_LEVEL);
}