base: Cleanup debug flags API

The debug flags API has a couple of quirks that should be cleaned
up. Specifically:

 * Only CompoundFlag should expose a list of children.
 * The global enable flag is just called "active", this isn't very
   descriptive.
 * Only SimpleFlag exposed a status member. This should be in the base
   class to make the API symmetric.
 * Flag::Sync() is an implementation detail and needs to be protected.

Change-Id: I4d7fd32c80891191aa04f0bd0c334c8cf8d372f5
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/34118
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Andreas Sandberg
2020-09-04 16:01:24 +01:00
parent 15a37b7dc5
commit 93ccc23b4a
5 changed files with 79 additions and 44 deletions

View File

@@ -1,4 +1,16 @@
/*
* Copyright (c) 2020 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.
*
* Copyright (c) 2003-2005 The Regents of The University of Michigan
* All rights reserved.
*
@@ -67,7 +79,7 @@ allFlags()
return flags;
}
bool SimpleFlag::_active = false;
bool Flag::_globalEnable = false;
Flag *
findFlag(const std::string &name)
@@ -96,17 +108,17 @@ Flag::~Flag()
}
void
SimpleFlag::enableAll()
Flag::globalEnable()
{
_active = true;
_globalEnable = true;
for (auto& i : allFlags())
i.second->sync();
}
void
SimpleFlag::disableAll()
Flag::globalDisable()
{
_active = false;
_globalEnable = false;
for (auto& i : allFlags())
i.second->sync();
}
@@ -125,6 +137,19 @@ CompoundFlag::disable()
k->disable();
}
bool
CompoundFlag::status() const
{
if (_kids.empty())
return false;
for (auto& k : _kids) {
if (!k->status())
return false;
}
return true;
}
bool
changeFlag(const char *s, bool value)