From c07a2d68f34ab4cef8b3ed4d079316d2b4306244 Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Mon, 27 Feb 2017 13:17:51 +0000 Subject: [PATCH] power: Avoid forward declarations that confuse wrappers MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The Python wrappers get confused by the forward declarations in the power framework. This changeset restructures the code slightly to avoid the troublesome forward declarations. Change-Id: Id8c93224f1988edb5fdf9d3abc6237f2f688c02d Signed-off-by: Andreas Sandberg Reviewed-by: Andreas Hansson Reviewed-by: Curtis Dunham Reviewed-by: Sascha Bischoff Reviewed-on: https://gem5-review.googlesource.com/2227 Reviewed-by: Pierre-Yves Péneau Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- src/sim/power/SConscript | 1 + src/sim/power/ThermalModel.py | 2 +- src/sim/power/thermal_domain.hh | 4 +-- src/sim/power/thermal_entity.hh | 2 ++ src/sim/power/thermal_model.cc | 15 -------- src/sim/power/thermal_model.hh | 20 ++--------- src/sim/power/thermal_node.cc | 57 ++++++++++++++++++++++++++++++ src/sim/power/thermal_node.hh | 62 +++++++++++++++++++++++++++++++++ 8 files changed, 127 insertions(+), 36 deletions(-) create mode 100644 src/sim/power/thermal_node.cc create mode 100644 src/sim/power/thermal_node.hh diff --git a/src/sim/power/SConscript b/src/sim/power/SConscript index 2f0eb4fc1..b90d93045 100644 --- a/src/sim/power/SConscript +++ b/src/sim/power/SConscript @@ -40,5 +40,6 @@ Source('power_model.cc') Source('mathexpr_powermodel.cc') Source('thermal_domain.cc') Source('thermal_model.cc') +Source('thermal_node.cc') DebugFlag('ThermalDomain') diff --git a/src/sim/power/ThermalModel.py b/src/sim/power/ThermalModel.py index 4a2f5d931..4c397119d 100644 --- a/src/sim/power/ThermalModel.py +++ b/src/sim/power/ThermalModel.py @@ -45,7 +45,7 @@ from m5.objects import ThermalDomain # Represents a thermal node class ThermalNode(SimObject): type = 'ThermalNode' - cxx_header = "sim/power/thermal_model.hh" + cxx_header = "sim/power/thermal_node.hh" # Represents a thermal resistor class ThermalResistor(SimObject): diff --git a/src/sim/power/thermal_domain.hh b/src/sim/power/thermal_domain.hh index f385994f8..af59af5cc 100644 --- a/src/sim/power/thermal_domain.hh +++ b/src/sim/power/thermal_domain.hh @@ -45,10 +45,10 @@ #include "base/statistics.hh" #include "params/ThermalDomain.hh" #include "sim/power/thermal_entity.hh" +#include "sim/power/thermal_node.hh" #include "sim/sim_object.hh" +#include "sim/sub_system.hh" -class SubSystem; -class ThermalNode; template class ProbePointArg; /** diff --git a/src/sim/power/thermal_entity.hh b/src/sim/power/thermal_entity.hh index fb703961f..5c0ab3045 100644 --- a/src/sim/power/thermal_entity.hh +++ b/src/sim/power/thermal_entity.hh @@ -40,6 +40,8 @@ #ifndef __SIM_THERMAL_ENTITY_HH__ #define __SIM_THERMAL_ENTITY_HH__ +#include "sim/sim_object.hh" + class LinearEquation; class ThermalNode; diff --git a/src/sim/power/thermal_model.cc b/src/sim/power/thermal_model.cc index 13242f666..05ce42bc9 100644 --- a/src/sim/power/thermal_model.cc +++ b/src/sim/power/thermal_model.cc @@ -41,7 +41,6 @@ #include "base/statistics.hh" #include "params/ThermalCapacitor.hh" -#include "params/ThermalNode.hh" #include "params/ThermalReference.hh" #include "params/ThermalResistor.hh" #include "sim/clocked_object.hh" @@ -49,20 +48,6 @@ #include "sim/power/thermal_domain.hh" #include "sim/sim_object.hh" -/** - * ThermalNode - */ -ThermalNode::ThermalNode(const Params *p) - : SimObject(p), id(-1), isref(false), temp(0.0f) -{ -} - -ThermalNode * -ThermalNodeParams::create() -{ - return new ThermalNode(this); -} - /** * ThermalReference */ diff --git a/src/sim/power/thermal_model.hh b/src/sim/power/thermal_model.hh index 32f34f109..7ee4ffdc3 100644 --- a/src/sim/power/thermal_model.hh +++ b/src/sim/power/thermal_model.hh @@ -47,27 +47,11 @@ #include "params/ThermalReference.hh" #include "params/ThermalResistor.hh" #include "sim/clocked_object.hh" +#include "sim/power/thermal_domain.hh" #include "sim/power/thermal_entity.hh" +#include "sim/power/thermal_node.hh" #include "sim/sim_object.hh" -class ThermalDomain; - - -/** - * A ThermalNode is used to connect thermal entities, such as - * resistors, capacitors, references and domains. It is the circuital - * equivalent to a voltage node. - */ -class ThermalNode : public SimObject -{ - public: - typedef SimObjectParams Params; - ThermalNode(const Params *p); - - int id; - bool isref; - double temp; -}; /** * A ThermalResistor is used to model a thermal resistance between two diff --git a/src/sim/power/thermal_node.cc b/src/sim/power/thermal_node.cc new file mode 100644 index 000000000..9209b0b57 --- /dev/null +++ b/src/sim/power/thermal_node.cc @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2015 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: David Guillen Fandos + */ + + +#include "sim/power/thermal_node.hh" + +#include "params/ThermalNode.hh" + +/** + * ThermalNode + */ +ThermalNode::ThermalNode(const ThermalNodeParams *p) + : SimObject(p), id(-1), isref(false), temp(0.0f) +{ +} + +ThermalNode * +ThermalNodeParams::create() +{ + return new ThermalNode(this); +} diff --git a/src/sim/power/thermal_node.hh b/src/sim/power/thermal_node.hh new file mode 100644 index 000000000..46a3537e0 --- /dev/null +++ b/src/sim/power/thermal_node.hh @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2015 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Authors: David Guillen Fandos + */ + +#ifndef __SIM_THERMAL_NODE_HH__ +#define __SIM_THERMAL_NODE_HH__ + +#include "sim/sim_object.hh" + +struct ThermalNodeParams; + +/** + * A ThermalNode is used to connect thermal entities, such as + * resistors, capacitors, references and domains. It is the circuital + * equivalent to a voltage node. + */ +class ThermalNode : public SimObject +{ + public: + ThermalNode(const ThermalNodeParams *p); + + int id; + bool isref; + double temp; +}; + +#endif -- 2.30.2