summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCurtis Dunham <Curtis.Dunham@arm.com>2015-09-02 15:19:43 -0500
committerCurtis Dunham <Curtis.Dunham@arm.com>2015-09-02 15:19:43 -0500
commit1ad5b772291220d44b355d8d939d625db7dffc1a (patch)
treebb19b0d83038f0b8126d01a29670e7d65c66709d
parentfe47f0a72fda6b101c10810acfb60569fe5b05cd (diff)
downloadgem5-1ad5b772291220d44b355d8d939d625db7dffc1a.tar.xz
sim: make warning for absent optional parameters optional
This is in support of tag-based checkpoint versioning. It should be possible to examine an optional parameter in a checkpoint during unserialization and not have it throw a warning.
-rw-r--r--src/sim/serialize.cc8
-rw-r--r--src/sim/serialize.hh8
2 files changed, 10 insertions, 6 deletions
diff --git a/src/sim/serialize.cc b/src/sim/serialize.cc
index 3127d9a04..0ecf45b6d 100644
--- a/src/sim/serialize.cc
+++ b/src/sim/serialize.cc
@@ -223,12 +223,13 @@ paramIn(CheckpointIn &cp, const string &name, T &param)
template <class T>
bool
-optParamIn(CheckpointIn &cp, const string &name, T &param)
+optParamIn(CheckpointIn &cp, const string &name, T &param, bool warn)
{
const string &section(Serializable::currentSection());
string str;
if (!cp.find(section, name, str) || !parseParam(str, param)) {
- warn("optional parameter %s:%s not present\n", section, name);
+ if (warn)
+ warn("optional parameter %s:%s not present\n", section, name);
return false;
} else {
return true;
@@ -384,7 +385,8 @@ objParamIn(CheckpointIn &cp, const string &name, SimObject * &param)
template void \
paramIn(CheckpointIn &cp, const string &name, type & param); \
template bool \
- optParamIn(CheckpointIn &cp, const string &name, type & param); \
+ optParamIn(CheckpointIn &cp, const string &name, type & param, \
+ bool warn); \
template void \
arrayParamOut(CheckpointOut &os, const string &name, \
type const *param, unsigned size); \
diff --git a/src/sim/serialize.hh b/src/sim/serialize.hh
index 561cd5508..e3b761f10 100644
--- a/src/sim/serialize.hh
+++ b/src/sim/serialize.hh
@@ -100,13 +100,15 @@ void paramIn(CheckpointIn &cp, const std::string &name,
}
template <class T>
-bool optParamIn(CheckpointIn &cp, const std::string &name, T &param);
+bool optParamIn(CheckpointIn &cp, const std::string &name, T &param,
+ bool warn = true);
template <typename DataType, typename BitUnion>
bool optParamIn(CheckpointIn &cp, const std::string &name,
- BitfieldBackend::BitUnionOperators<DataType, BitUnion> &p)
+ BitfieldBackend::BitUnionOperators<DataType, BitUnion> &p,
+ bool warn = true)
{
- return optParamIn(cp, name, p.__data);
+ return optParamIn(cp, name, p.__data, warn);
}
template <class T>