X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4676d5e57abd98702608661750274226eb48e20e..98c0dbd4424a6a8177167b573791d25dd01b447d:/src/include/surf/surf.h diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 5f5ee04ceb..aff8a88f87 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -193,6 +193,28 @@ typedef struct surf_network_model_extension_public { xbt_dict_t properties); } s_surf_model_extension_network_t; +typedef struct s_surf_file { + char *name; /**< @brief host name if any */ + void *data; /**< @brief user data */ +} s_surf_file_t; +typedef struct s_surf_file *surf_file_t; + +/* Storage model */ + +/** \brief Storage model extension public + * \ingroup SURF_models + * + * Public functions specific to the Storage model. + */ +typedef struct surf_storage_model_extension_public { + surf_action_t(*open) (void *workstation, 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, int fd, void* buf); +void* (*create_resource) (const char *name); +} s_surf_model_extension_storage_t; + /** \brief Workstation model extension public * \ingroup SURF_models * @@ -218,6 +240,11 @@ typedef struct surf_workstation_model_extension_public { double 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* 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, int fd, void* buf); int (*link_shared) (const void *link); xbt_dict_t(*get_properties) (const void *resource); void* (*link_create_resource) (const char *name, @@ -283,6 +310,7 @@ typedef struct surf_model { union extension { s_surf_model_extension_cpu_t cpu; s_surf_model_extension_network_t network; + s_surf_model_extension_storage_t storage; s_surf_model_extension_workstation_t workstation; } extension; } s_surf_model_t; @@ -650,7 +678,7 @@ XBT_PUBLIC(double) surf_solve(double max_date); * * Return the current time in millisecond. */ -XBT_INLINE XBT_PUBLIC(double) surf_get_clock(void); +XBT_PUBLIC(double) surf_get_clock(void); /** \brief Exit SURF * \ingroup SURF_simulation @@ -682,5 +710,8 @@ XBT_PUBLIC_DATA(xbt_dict_t) trace_connect_list_latency; XBT_PUBLIC(double) get_cpu_power(const char *power); +int surf_get_nthreads(void); +void surf_set_nthreads(int nthreads); + SG_END_DECL() #endif /* _SURF_SURF_H */