-/** \ingroup SURF_actions
- * \brief Action state sets
- *
- * This structure contains some sets of actions.
- * It provides a fast access to the actions in each state.
- *
- * \see surf_action_t, e_surf_action_state_t
- */
-typedef struct surf_action_state {
- xbt_swag_t ready_action_set;
- /**< Actions in state SURF_ACTION_READY */
- xbt_swag_t running_action_set;
- /**< Actions in state SURF_ACTION_RUNNING */
- xbt_swag_t failed_action_set;
- /**< Actions in state SURF_ACTION_FAILED */
- xbt_swag_t done_action_set;
- /**< Actions in state SURF_ACTION_DONE */
-} s_surf_action_state_t, *surf_action_state_t;
-
-/***************************/
-/* Generic model object */
-/***************************/
-typedef struct s_routing_platf s_routing_platf_t, *routing_platf_t;
-XBT_PUBLIC_DATA(routing_platf_t) routing_platf;
-
-/*******************************************
- * TUTORIAL: New model
- * New model extension public
- * Public functions specific to a New model.
- */
-typedef struct surf_new_model_extension_public {
- surf_action_t(*fct) ();
- void* (*create_resource) ();
-} s_surf_model_extension_new_model_t;
-/*******************************************/
-
-/** \ingroup SURF_models
- * \brief Private data available on all models
- */
-typedef struct surf_model_private *surf_model_private_t;
-
- /* Cpu model */
-
- /** \ingroup SURF_models
- * \brief CPU model extension public
- *
- * Public functions specific to the CPU model.
- */
-typedef struct surf_cpu_model_extension_public {
- 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);
- double (*get_speed) (void *cpu, double load);
- double (*get_available_speed) (void *cpu);
- void (*add_traces) (void);
-} s_surf_model_extension_cpu_t;
-
- /* Network model */
-
- /** \ingroup SURF_models
- * \brief Network model extension public
- *
- * Public functions specific to the network model
- */
-typedef struct surf_network_model_extension_public {
- 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);
- double (*get_link_latency) (const void *link);
- int (*link_shared) (const void *link);
- void (*add_traces) (void);
-} s_surf_model_extension_network_t;
-
-/* Storage model */
-
-/** \ingroup SURF_models
- * \brief Storage model extension public
- *
- * Public functions specific to the Storage model.
- */
-
-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 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(*ls) (void *storage, const char *path);
- surf_action_t(*get_size) (void *storage, surf_file_t fd);
-} s_surf_model_extension_storage_t;
-
- /** \ingroup SURF_models
- * \brief Workstation model extension public
- *
- * Public functions specific to the workstation model.
- */
-typedef struct surf_workstation_model_extension_public {
- surf_action_t(*execute) (void *workstation, double size); /**< Execute a computation amount on a workstation
- 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 */
- 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 */
- surf_action_t(*communicate) (void *workstation_src, /**< Execute a communication amount between two workstations */
- void *workstation_dst, double size,
- double max_rate);
- // FIXME: kill next field, which duplicates the routing
- xbt_dynar_t(*get_route) (void *workstation_src, void *workstation_dst); /**< Get the list of links between two ws */
-
- surf_action_t(*execute_parallel_task) (int workstation_nb, /**< Execute a parallel task on several workstations */
- void **workstation_list,
- double *computation_amount,
- double *communication_amount,
- 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 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(*ls) (void *workstation, const char* mount, const char *path);
- surf_action_t(*get_size) (void *workstation, surf_file_t fd);
-
- int (*link_shared) (const void *link);
- xbt_dict_t(*get_properties) (const void *resource);
- void (*add_traces) (void);
-
-} s_surf_model_extension_workstation_t;