From 3bb86373ee0d8c82aee3c14fa8493252a223cee7 Mon Sep 17 00:00:00 2001 From: "Daniel R. Carvalho" Date: Sat, 16 Jan 2021 21:55:12 -0300 Subject: [PATCH] sim: Move cur tick to its own files When declared within sim/core.hh, unit tests that use the current tick would have to unnecessarily include many other extra files. Change-Id: Ib4348312afb90765edb4f94c80785df1275b2004 Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/39835 Tested-by: kokoro Reviewed-by: Bobby R. Bruce Maintainer: Bobby R. Bruce --- src/sim/SConscript | 1 + src/sim/core.cc | 8 -------- src/sim/core.hh | 14 +++----------- src/sim/cur_tick.cc | 36 ++++++++++++++++++++++++++++++++++++ src/sim/cur_tick.hh | 45 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 85 insertions(+), 19 deletions(-) create mode 100644 src/sim/cur_tick.cc create mode 100644 src/sim/cur_tick.hh diff --git a/src/sim/SConscript b/src/sim/SConscript index 78d9bf535..fe18d247c 100644 --- a/src/sim/SConscript +++ b/src/sim/SConscript @@ -44,6 +44,7 @@ SimObject('PowerDomain.py') Source('async.cc') Source('backtrace_%s.cc' % env['BACKTRACE_IMPL']) Source('core.cc') +Source('cur_tick.cc') Source('tags.cc') Source('cxx_config.cc') Source('cxx_manager.cc') diff --git a/src/sim/core.cc b/src/sim/core.cc index 928e6c8d2..baa56abe2 100644 --- a/src/sim/core.cc +++ b/src/sim/core.cc @@ -37,14 +37,6 @@ #include "base/cprintf.hh" #include "base/logging.hh" #include "base/output.hh" -#include "sim/eventq.hh" - -namespace Gem5Internal -{ - -__thread Tick *_curTickPtr; - -} // namespace Gem5Internal namespace SimClock { /// The simulated frequency of curTick(). (In ticks per second) diff --git a/src/sim/core.hh b/src/sim/core.hh index c5920490d..30c8949cc 100644 --- a/src/sim/core.hh +++ b/src/sim/core.hh @@ -39,17 +39,9 @@ #include #include "base/types.hh" - -namespace Gem5Internal -{ - -// This pointer is maintained by curEventQueue in src/sim/eventq.hh. -extern __thread Tick *_curTickPtr; - -} // namespace Gem5Internal - -/// The universal simulation clock. -inline Tick curTick() { return *Gem5Internal::_curTickPtr; } +// @todo The next include is not needed in this file, but must be kept +// until the transitive includes are fixed +#include "sim/cur_tick.hh" /// These are variables that are set based on the simulator frequency ///@{ diff --git a/src/sim/cur_tick.cc b/src/sim/cur_tick.cc new file mode 100644 index 000000000..630a7fb00 --- /dev/null +++ b/src/sim/cur_tick.cc @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2021 Daniel R. Carvalho + * All rights reserved. + * + * 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. + */ + +#include "sim/cur_tick.hh" + +namespace Gem5Internal +{ + +__thread Tick *_curTickPtr; + +} // namespace Gem5Internal diff --git a/src/sim/cur_tick.hh b/src/sim/cur_tick.hh new file mode 100644 index 000000000..0aee61115 --- /dev/null +++ b/src/sim/cur_tick.hh @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2021 Daniel R. Carvalho + * All rights reserved. + * + * 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. + */ + +#ifndef __SIM_CUR_TICK_HH__ +#define __SIM_CUR_TICK_HH__ + +#include "base/types.hh" + +namespace Gem5Internal +{ + +// This pointer is maintained by curEventQueue in src/sim/eventq.hh. +extern __thread Tick *_curTickPtr; + +} // namespace Gem5Internal + +/// The universal simulation clock. +inline Tick curTick() { return *Gem5Internal::_curTickPtr; } + +#endif /* __SIM_CUR_TICK_HH__ */ -- 2.30.2