X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fsim%2Fcore.hh;h=8e464548fe138120209f020286dfe0b914e7d04b;hb=abd33d6fd26bb69d3bf53ceb6c2dc8f90d893e34;hp=7360032c27e727aebf194659f80184501fb6d4b3;hpb=047f77102b5e5d63549663ee94cd799cdcf63516;p=gem5.git diff --git a/src/sim/core.hh b/src/sim/core.hh index 7360032c2..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 @@ -32,53 +34,73 @@ #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 "sim/host.hh" +#include "base/types.hh" +#include "sim/eventq.hh" /// The universal simulation clock. -extern Tick curTick; +inline Tick curTick() { return _curEventQueue->getCurTick(); } + const Tick retryTime = 1000; -namespace Clock { -/// The simulated frequency of curTick. -extern Tick Frequency; +/// 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 { -extern double s; -extern double ms; -extern double us; -extern double ns; -extern double ps; - -extern double Hz; -extern double kHz; -extern double MHz; -extern double GHZ; -/* 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; -extern Tick ms; -extern Tick us; -extern Tick ns; -extern Tick ps; -/* namespace Int */ } -/* namespace Clock */ } +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. -/// Output stream for simulator messages (e.g., cprintf()). Also used -/// as default stream for tracing and DPRINTF() messages (unless -/// overridden with trace:file option). -extern std::ostream *outputStream; -void setOutputFile(const std::string &file); void setOutputDir(const std::string &dir); -/// Output stream for configuration dump. -extern std::ostream *configStream; - -struct Callback; +class Callback; void registerExitCallback(Callback *callback); void doExitCleanup();