X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0eb7621025a933db4ac7fbbec8e4646dd8bc279e..504b4d20dd2db9ea1eaa9c4b390b2a412d7c9779:/src/include/surf/surf.h diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index eace0c2711..d05507dd0a 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -140,9 +140,14 @@ typedef struct surf_model_public { int (*is_suspended) (surf_action_t action); /**< Return whether an action is suspended */ void (*set_max_duration) (surf_action_t action, double duration); /**< Set the max duration of an action*/ void (*set_priority) (surf_action_t action, double priority); /**< Set the priority of an action */ - void (*set_callback) (void *resource, void value, void *function, void *arg); - int (*get_callback) (void **resource, void *value, void **function, void **arg); const char *name; /**< Name of this model */ + + /*for the properties of the link*/ + xbt_dict_t (*get_link_properties) (void* link); + + /*for the properties of the cpu*/ + xbt_dict_t (*get_cpu_properties) (void* cpu); + } s_surf_model_public_t, *surf_model_public_t; /** \brief Private data available on all models @@ -243,11 +248,11 @@ XBT_PUBLIC_DATA(surf_cpu_model_t) surf_cpu_model; */ XBT_PUBLIC(void) surf_cpu_model_init_Cas01(const char *filename); -extern XBT_PUBLIC_DATA(int) surf_cpu_model_description_size; +XBT_PUBLIC_DATA(int) surf_cpu_model_description_size; /** \brief The list of all available cpu model models * \ingroup SURF_models */ -extern XBT_PUBLIC_DATA(s_surf_model_description_t) surf_cpu_model_description[]; +XBT_PUBLIC_DATA(s_surf_model_description_t) surf_cpu_model_description[]; /* Network model */ @@ -362,11 +367,11 @@ XBT_PUBLIC(void) surf_network_model_init_SDP(const char *filename); -extern XBT_PUBLIC_DATA(int) surf_network_model_description_size; +XBT_PUBLIC_DATA(int) surf_network_model_description_size; /** \brief The list of all available network model models * \ingroup SURF_models */ -extern XBT_PUBLIC_DATA(s_surf_model_description_t) surf_network_model_description[]; +XBT_PUBLIC_DATA(s_surf_model_description_t) surf_network_model_description[]; /** \brief Workstation model extension public * \ingroup SURF_models @@ -383,6 +388,7 @@ typedef struct surf_workstation_model_extension_public { surf_action_t(*communicate) (void *workstation_src, /**< Execute a communication amount between two workstations */ void *workstation_dst, double size, double max_rate); + surf_action_t(*execute_parallel_task) (int workstation_nb, /**< Execute a parallel task on several workstations */ void **workstation_list, double *computation_amount, @@ -465,11 +471,11 @@ XBT_PUBLIC(void) surf_workstation_model_init_KCCFLN05(const char *filename); */ XBT_PUBLIC(void) surf_workstation_model_init_ptask_L07(const char *filename); -extern XBT_PUBLIC_DATA(int) surf_workstation_model_description_size; +XBT_PUBLIC_DATA(int) surf_workstation_model_description_size; /** \brief The list of all available workstation model models * \ingroup SURF_models */ -extern XBT_PUBLIC_DATA(s_surf_model_description_t) surf_workstation_model_description[]; +XBT_PUBLIC_DATA(s_surf_model_description_t) surf_workstation_model_description[]; /** \brief The network links * \ingroup SURF_models @@ -542,6 +548,31 @@ XBT_PUBLIC(double)surf_get_clock(void); */ XBT_PUBLIC(void) surf_exit(void); +/* Prototypes of the functions that handle the properties */ +void parse_properties(void); +void free_string(void*); + +/*Add callback lists*/ +xbt_dynar_t STag_surfxml_platform_description_cb_list; +xbt_dynar_t ETag_surfxml_platform_description_cb_list; +xbt_dynar_t STag_surfxml_host_cb_list; +xbt_dynar_t ETag_surfxml_host_cb_list; +xbt_dynar_t STag_surfxml_router_cb_list; +xbt_dynar_t ETag_surfxml_router_cb_list; +xbt_dynar_t STag_surfxml_link_cb_list; +xbt_dynar_t ETag_surfxml_link_cb_list; +xbt_dynar_t STag_surfxml_route_cb_list; +xbt_dynar_t ETag_surfxml_route_cb_list; +xbt_dynar_t STag_surfxml_link_c_ctn_cb_list; +xbt_dynar_t ETag_surfxml_link_c_ctn_cb_list; +xbt_dynar_t STag_surfxml_process_cb_list; +xbt_dynar_t ETag_surfxml_process_cb_list; +xbt_dynar_t STag_surfxml_argument_cb_list; +xbt_dynar_t ETag_surfxml_argument_cb_list; +xbt_dynar_t STag_surfxml_prop_cb_list; +xbt_dynar_t ETag_surfxml_prop_cb_list; + +XBT_PUBLIC(void) surfxml_add_callback(xbt_dynar_t cb_list, void_f_void_t function); SG_END_DECL()