X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5a97de8c98502af9f74cfceb924fa02e0fd80925..afb806d0615c22ac119575596b71691f4e2bc9d1:/src/surf/plugins/energy.hpp diff --git a/src/surf/plugins/energy.hpp b/src/surf/plugins/energy.hpp index 682ae46d83..389abd9112 100644 --- a/src/surf/plugins/energy.hpp +++ b/src/surf/plugins/energy.hpp @@ -1,34 +1,54 @@ -/* Copyright (c) 2014. The SimGrid Team. +/* energy.hpp: internal interface to the energy plugin */ + +/* Copyright (c) 2014-2016. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include "../cpu_interface.hpp" +#include + +#include "src/surf/host_interface.hpp" #include -#ifndef CALLBACK_HPP_ -#define CALLBACK_HPP_ +#ifndef ENERGY_CALLBACK_HPP_ +#define ENERGY_CALLBACK_HPP_ -class CpuEnergy; -typedef CpuEnergy *CpuEnergyPtr; +namespace simgrid { +namespace energy { -extern std::map *surf_energy; +class XBT_PRIVATE HostEnergy; -class CpuEnergy { +extern XBT_PRIVATE std::map *surf_energy; + +class HostEnergy { public: - CpuEnergy(CpuPtr ptr); - ~CpuEnergy(); + HostEnergy(simgrid::surf::Host *ptr); + ~HostEnergy(); double getCurrentWattsValue(double cpu_load); double getConsumedEnergy(); + double getWattMinAt(int pstate); + double getWattMaxAt(int pstate); xbt_dynar_t getWattsRangeList(); xbt_dynar_t power_range_watts_list; /*< List of (min_power,max_power) pairs corresponding to each cpu pstate */ double watts_off; /*< Consumption when the machine is turned off (shutdown) */ double total_energy; /*< Total energy consumed by the host */ double last_updated; /*< Timestamp of the last energy update event*/ - CpuPtr cpu; + simgrid::surf::Host *host; + + void unref() {if (--refcount == 0) delete this;} + void ref() {refcount++;} + int refcount = 1; }; -#endif /* CALLBACK_HPP_ */ +XBT_PUBLIC(double) surf_host_get_wattmin_at(sg_host_t resource, int pstate); +XBT_PUBLIC(double) surf_host_get_wattmax_at(sg_host_t resource, int pstate); +XBT_PUBLIC(double) surf_host_get_consumed_energy(sg_host_t host); +} +} + + + +#endif /* ENERGY_CALLBACK_HPP_ */