X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9dbeb2372ad9a123d0558132ebb6e003e10aa641..646748e03f0997e891f569963d0113e16bb63890:/src/surf/host_interface.hpp diff --git a/src/surf/host_interface.hpp b/src/surf/host_interface.hpp index a4a3bda834..39e87803c5 100644 --- a/src/surf/host_interface.hpp +++ b/src/surf/host_interface.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2004-2014. The SimGrid Team. +/* Copyright (c) 2004-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -9,6 +9,8 @@ #include "cpu_interface.hpp" #include "network_interface.hpp" +#include + #ifndef SURF_HOST_INTERFACE_HPP_ #define SURF_HOST_INTERFACE_HPP_ @@ -16,47 +18,38 @@ * Classes * ***********/ -class HostModel; -typedef HostModel *HostModelPtr; - -class Host; -typedef Host *HostPtr; - -class HostAction; -typedef HostAction *HostActionPtr; +class XBT_PRIVATE HostModel; +class XBT_PRIVATE Host; +class XBT_PRIVATE HostAction; /************* * Callbacks * *************/ /** @ingroup SURF_callbacks - * @brief Callbacks handler which emit the callbacks after Host creation * - * @details Callback functions have the following signature: `void(HostPtr)` + * @brief Callbacks fired after Host creation. Signature: `void(Host*)` */ -XBT_PUBLIC_DATA(surf_callback(void, HostPtr)) hostCreatedCallbacks; +XBT_PUBLIC_DATA(surf_callback(void, Host*)) hostCreatedCallbacks; /** @ingroup SURF_callbacks - * @brief Callbacks handler which emit the callbacks after Host destruction * - * @details Callback functions have the following signature: `void(HostPtr)` + * @brief Callbacks fired Host destruction. Signature: `void(Host*)` */ -XBT_PUBLIC_DATA(surf_callback(void, HostPtr)) hostDestructedCallbacks; +XBT_PUBLIC_DATA(surf_callback(void, Host*)) hostDestructedCallbacks; /** @ingroup SURF_callbacks - * @brief Callbacks handler which emit the callbacks after Host State changed * - * @details Callback functions have the following signature: `void(HostActionPtr action, e_surf_resource_state_t old, e_surf_resource_state_t current)` + * @brief Callbacks fired after Host State changed. Signature: `void(Host *, e_surf_resource_state_t old, e_surf_resource_state_t current)` */ -XBT_PUBLIC_DATA(surf_callback(void, HostPtr, e_surf_resource_state_t, e_surf_resource_state_t)) hostStateChangedCallbacks; +XBT_PUBLIC_DATA(surf_callback(void, Host*, e_surf_resource_state_t, e_surf_resource_state_t)) hostStateChangedCallbacks; /** @ingroup SURF_callbacks - * @brief Callbacks handler which emit the callbacks after HostAction State changed * - * @details Callback functions have the following signature: `void(HostActionPtr action, e_surf_resource_state_t old, e_surf_resource_state_t current)` + * @brief Callbacks fired HostAction State changed. Signature: `void(HostAction *, e_surf_action_state_t old, e_surf_action_state_t current)` */ -XBT_PUBLIC_DATA(surf_callback(void, HostActionPtr, e_surf_action_state_t, e_surf_action_state_t)) hostActionStateChangedCallbacks; +XBT_PUBLIC_DATA(surf_callback(void, HostAction*, e_surf_action_state_t, e_surf_action_state_t)) hostActionStateChangedCallbacks; /********* * Tools * *********/ -XBT_PUBLIC_DATA(HostModelPtr) surf_host_model; +XBT_PUBLIC_DATA(HostModel*) surf_host_model; XBT_PUBLIC(void) host_parse_init(sg_platf_host_cbarg_t host); XBT_PUBLIC(void) host_add_traces(); @@ -69,58 +62,20 @@ XBT_PUBLIC(void) host_add_traces(); */ class HostModel : public Model { public: - /** - * @brief HostModel constructor - * - * @param name the name of the model - */ - HostModel(const char *name); - - /** @brief HostModel constructor */ - HostModel(); + HostModel() : Model() {} + ~HostModel() {} - /** @brief HostModel destructor */ - ~HostModel(); - - virtual HostPtr createHost(const char *name)=0; + virtual Host *createHost(const char *name)=0; void addTraces(){DIE_IMPOSSIBLE;} - /** - * @brief [brief description] - * @details [long description] - */ virtual void adjustWeightOfDummyCpuActions(); + virtual Action *executeParallelTask(int host_nb, + sg_host_t *host_list, + double *flops_amount, + double *bytes_amount, + double rate)=0; - /** - * @brief [brief description] - * @details [long description] - * - * @param host_nb [description] - * @param host_list [description] - * @param flops_amount [description] - * @param bytes_amount [description] - * @param rate [description] - * @return [description] - */ - virtual ActionPtr executeParallelTask(int host_nb, - void **host_list, - double *flops_amount, - double *bytes_amount, - double rate)=0; - - /** - * @brief [brief description] - * @details [long description] - * - * @param src [description] - * @param dst [description] - * @param size [description] - * @param rate [description] - * @return [description] - */ - virtual ActionPtr communicate(HostPtr src, HostPtr dst, double size, double rate)=0; - - CpuModelPtr p_cpuModel; + bool shareResourcesIsIdempotent() {return true;} }; /************ @@ -128,15 +83,10 @@ public: ************/ /** @ingroup SURF_host_interface * @brief SURF Host interface class - * @details An host represents a machine with a aggregation of a Cpu, a NetworkLink and a Storage + * @details An host represents a machine with a aggregation of a Cpu, a Link and a Storage */ class Host : public Resource { public: - /** - * @brief Host constructor - */ - Host(); - /** * @brief Host constructor * @@ -147,8 +97,8 @@ public: * @param netElm The RoutingEdge associated to this Host * @param cpu The Cpu associated to this Host */ - Host(ModelPtr model, const char *name, xbt_dict_t props, - xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu); + Host(Model *model, const char *name, xbt_dict_t props, + xbt_dynar_t storage, RoutingEdge *netElm, Cpu *cpu); /** * @brief Host constructor @@ -161,9 +111,9 @@ public: * @param netElm The RoutingEdge associated to this Host * @param cpu The Cpu associated to this Host */ - Host(ModelPtr model, const char *name, xbt_dict_t props, - lmm_constraint_t constraint, xbt_dynar_t storage, RoutingEdgePtr netElm, - CpuPtr cpu); + Host(Model *model, const char *name, xbt_dict_t props, + lmm_constraint_t constraint, xbt_dynar_t storage, RoutingEdge *netElm, + Cpu *cpu); /** @brief Host destructor */ ~ Host(); @@ -184,7 +134,7 @@ public: * @return The CpuAction corresponding to the processing * @see Cpu */ - virtual ActionPtr execute(double flops_amount)=0; + virtual Action *execute(double flops_amount)=0; /** * @brief Make a process sleep for duration seconds @@ -193,67 +143,15 @@ public: * @return The CpuAction corresponding to the sleeping * @see Cpu */ - virtual ActionPtr sleep(double duration)=0; + virtual Action *sleep(double duration)=0; - /** - * @brief Get the number of cores of the associated Cpu - * - * @return The number of cores of the associated Cpu - * @see Cpu - */ - virtual int getCore(); + /** @brief Return the storage of corresponding mount point */ + virtual Storage *findStorageOnMountList(const char* storage); - /** - * @brief Get the speed of the associated Cpu - * - * @param load [TODO] - * @return The speed of the associated Cpu - * @see Cpu - */ - virtual double getSpeed(double load); - - /** - * @brief Get the available speed of the associated Cpu - * @details [TODO] - * - * @return The available speed of the associated Cpu - * @see Cpu - */ - virtual double getAvailableSpeed(); - - /** - * @brief Get the associated Cpu power peak - * - * @return The associated Cpu power peak - * @see Cpu - */ - virtual double getCurrentPowerPeak(); - - virtual double getPowerPeakAt(int pstate_index); - virtual int getNbPstates(); - virtual void setPstate(int pstate_index); - virtual int getPstate(); - - /** - * @brief Return the storage of corresponding mount point - * - * @param storage The mount point - * @return The corresponding Storage - */ - virtual StoragePtr findStorageOnMountList(const char* storage); - - /** - * @brief Get the xbt_dict_t of mount_point: Storage - * - * @return The xbt_dict_t of mount_point: Storage - */ + /** @brief Get the xbt_dict_t of mount_point: Storage */ virtual xbt_dict_t getMountedStorageList(); - /** - * @brief Get the xbt_dynar_t of storages attached to the Host - * - * @return The xbt_dynar_t of Storage names - */ + /** @brief Get the xbt_dynar_t of storages attached to the Host */ virtual xbt_dynar_t getAttachedStorageList(); /** @@ -263,7 +161,7 @@ public: * * @return The StorageAction corresponding to the opening */ - virtual ActionPtr open(const char* fullpath); + virtual Action *open(const char* fullpath); /** * @brief Close a file @@ -271,7 +169,7 @@ public: * @param fd The file descriptor to close * @return The StorageAction corresponding to the closing */ - virtual ActionPtr close(surf_file_t fd); + virtual Action *close(surf_file_t fd); /** * @brief Unlink a file @@ -297,7 +195,7 @@ public: * @param size The size in bytes to read * @return The StorageAction corresponding to the reading */ - virtual ActionPtr read(surf_file_t fd, sg_size_t size); + virtual Action *read(surf_file_t fd, sg_size_t size); /** * @brief Write a file @@ -306,7 +204,7 @@ public: * @param size The size in bytes to write * @return The StorageAction corresponding to the writing */ - virtual ActionPtr write(surf_file_t fd, sg_size_t size); + virtual Action *write(surf_file_t fd, sg_size_t size); /** * @brief Get the informations of a file descriptor @@ -356,34 +254,20 @@ public: virtual int fileMove(surf_file_t fd, const char* fullpath); xbt_dynar_t p_storage; - RoutingEdgePtr p_netElm; - CpuPtr p_cpu; - NetworkLinkPtr p_network; + RoutingEdge *p_netElm; + Cpu *p_cpu; - /** - * @brief Get the list of virtual machines on the current Host - * - * @return The list of VMs - */ + /** @brief Get the list of virtual machines on the current Host */ xbt_dynar_t getVms(); /* common with vm */ - /** - * @brief [brief description] - * @details [long description] - * - * @param params [description] - */ - void getParams(ws_params_t params); - - /** - * @brief [brief description] - * @details [long description] - * - * @param params [description] - */ - void setParams(ws_params_t params); - s_ws_params_t p_params; + /** @brief Retrieve a copy of the parameters of that VM/PM + * @details The ramsize and overcommit fields are used on the PM too */ + void getParams(vm_params_t params); + /** @brief Sets the params of that VM/PM */ + void setParams(vm_params_t params); +private: + s_vm_params_t p_params; }; /********** @@ -402,7 +286,7 @@ public: * @param cost The cost of this HostAction in [TODO] * @param failed [description] */ - HostAction(ModelPtr model, double cost, bool failed) + HostAction(Model *model, double cost, bool failed) : Action(model, cost, failed) {} /** @@ -413,7 +297,7 @@ public: * @param failed [description] * @param var The lmm variable associated to this StorageAction if it is part of a LMM component */ - HostAction(ModelPtr model, double cost, bool failed, lmm_variable_t var) + HostAction(Model *model, double cost, bool failed, lmm_variable_t var) : Action(model, cost, failed, var) {} void setState(e_surf_action_state_t state);