X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fsim%2Fcore.hh;h=8e464548fe138120209f020286dfe0b914e7d04b;hb=abd33d6fd26bb69d3bf53ceb6c2dc8f90d893e34;hp=2ef21c4b60b04217957ce2fe77b4ada2540a353e;hpb=ffe6bebb05c30b0f1d7cde5ad5b94a2551938630;p=gem5.git diff --git a/src/sim/core.hh b/src/sim/core.hh index 2ef21c4b6..8e464548f 100644 --- a/src/sim/core.hh +++ b/src/sim/core.hh @@ -1,5 +1,7 @@ /* * Copyright (c) 2006 The Regents of The University of Michigan + * Copyright (c) 2013 Advanced Micro Devices, Inc. + * Copyright (c) 2013 Mark D. Hill and David A. Wood * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -29,12 +31,77 @@ * Steve Reinhardt */ -#include +#ifndef __SIM_CORE_HH__ +#define __SIM_CORE_HH__ + +/** @file This header provides some core simulator functionality such as time + * information, output directory and exit events + */ + #include -#include "base/callback.hh" +#include "base/types.hh" +#include "sim/eventq.hh" + +/// The universal simulation clock. +inline Tick curTick() { return _curEventQueue->getCurTick(); } + +const Tick retryTime = 1000; + +/// These are variables that are set based on the simulator frequency +///@{ +namespace SimClock { +extern Tick Frequency; ///< The number of ticks that equal one second + +namespace Float { + +/** These variables equal the number of ticks in the unit of time they're + * named after in a double. + * @{ + */ +extern double s; ///< second +extern double ms; ///< millisecond +extern double us; ///< microsecond +extern double ns; ///< nanosecond +extern double ps; ///< picosecond +/** @} */ + +/** These variables the inverse of above. They're all < 1. + * @{ + */ +extern double Hz; ///< Hz +extern double kHz; ///< kHz +extern double MHz; ///< MHz +extern double GHz; ///< GHz +/** @}*/ +} // namespace Float + +/** These variables equal the number of ticks in the unit of time they're + * named after in a 64 bit integer. + * + * @{ + */ +namespace Int { +extern Tick s; ///< second +extern Tick ms; ///< millisecond +extern Tick us; ///< microsecond +extern Tick ns; ///< nanosecond +extern Tick ps; ///< picosecond +/** @} */ +} // namespace Int +} // namespace SimClock +/** @} */ + +void fixClockFrequency(); +bool clockFrequencyFixed(); + +void setClockFrequency(Tick ticksPerSecond); +Tick getClockFrequency(); // Ticks per second. void setOutputDir(const std::string &dir); +class Callback; void registerExitCallback(Callback *callback); void doExitCleanup(); + +#endif /* __SIM_CORE_HH__ */