X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5faf49cdf3f8ad8751317b857a6d3134fe07eda3..759f36baf2bd57ad74ce86a99e368dbc475760be:/src/simdag/sd_workstation.c diff --git a/src/simdag/sd_workstation.c b/src/simdag/sd_workstation.c index d73d59e93f..108e64013c 100644 --- a/src/simdag/sd_workstation.c +++ b/src/simdag/sd_workstation.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2011. The SimGrid Team. +/* Copyright (c) 2006-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -35,6 +35,32 @@ SD_workstation_t __SD_workstation_create(void *surf_workstation, return xbt_lib_get_elm_or_null(host_lib,name); } +/* Creates a storage and registers it in SD. + */ +SD_storage_t __SD_storage_create(void *surf_storage, void *data) +{ + + SD_storage_priv_t storage; + const char *name; + + storage = xbt_new(s_SD_storage_priv_t, 1); + storage->data = data; /* user data */ + name = surf_resource_name(surf_storage); + storage->host = surf_storage_get_host(surf_storage_resource_by_name(name)); + xbt_lib_set(storage_lib,name, SD_STORAGE_LEVEL, storage); + return xbt_lib_get_elm_or_null(storage_lib, name); +} + +/* Destroys a storage. + */ +void __SD_storage_destroy(void *storage) +{ + SD_storage_priv_t s; + + s = (SD_storage_priv_t) storage; + xbt_free(s); +} + /** * \brief Returns a workstation given its name * @@ -273,7 +299,7 @@ double SD_workstation_get_available_power(SD_workstation_t workstation) * * \param workstation a workstation * \param computation_amount the computation amount you want to evaluate (in flops) - * \return an approximative astimated computation time for the given computation amount on this workstation (in seconds) + * \return an approximative estimated computation time for the given computation amount on this workstation (in seconds) */ double SD_workstation_get_computation_time(SD_workstation_t workstation, double computation_amount) @@ -333,8 +359,7 @@ double SD_route_get_current_bandwidth(SD_workstation_t src, links = SD_route_get_list(src, dst); nb_links = SD_route_get_size(src, dst); - bandwidth = min_bandwidth = -1.0; - + min_bandwidth = -1.0; for (i = 0; i < nb_links; i++) { bandwidth = SD_link_get_current_bandwidth(links[i]); @@ -352,7 +377,7 @@ double SD_route_get_current_bandwidth(SD_workstation_t src, * \param src the first workstation * \param dst the second workstation * \param communication_amount the communication amount you want to evaluate (in bytes) - * \return an approximative astimated computation time for the given communication amount + * \return an approximative estimated computation time for the given communication amount * between the workstations (in seconds) */ double SD_route_get_communication_time(SD_workstation_t src, @@ -445,6 +470,37 @@ void SD_workstation_set_access_mode(SD_workstation_t workstation, } } +/** + * \brief Return the list of mounted storages on a workstation. + * + * \param workstation a workstation + * \return a dynar containing all mounted storages on the workstation + */ +xbt_dict_t SD_workstation_get_mounted_storage_list(SD_workstation_t workstation){ + return surf_workstation_get_mounted_storage_list(workstation); +} + +/** + * \brief Return the list of mounted storages on a workstation. + * + * \param workstation a workstation + * \return a dynar containing all mounted storages on the workstation + */ +xbt_dynar_t SD_workstation_get_attached_storage_list(SD_workstation_t workstation){ + return surf_workstation_get_attached_storage_list(workstation); +} + +/** + * \brief Returns the host name the storage is attached to + * + * This functions checks whether a storage is a valid pointer or not and return its name. + */ +const char *SD_storage_get_host(msg_storage_t storage) { + xbt_assert((storage != NULL), "Invalid parameters"); + SD_storage_priv_t priv = SD_storage_priv(storage); + return priv->host; +} + /* Returns whether a task can start now on a workstation*/ /* int __SD_workstation_can_start(SD_workstation_t workstation, SD_task_t task) {