config: Add a --without-python option to build process

Add the ability to build libgem5 without embedded Python or the
ability to configure with Python.

This is a prelude to a patch to allow config.ini files to be loaded
into libgem5 using only C++ which would make embedding gem5 within
other simulation systems easier.

This adds a few registration interfaces to things which cross
between Python and C++.  Namely: stats dumping and SimObject resolving
This commit is contained in:
Andrew Bardsley
2014-10-16 05:49:32 -04:00
parent a63ba6c7b7
commit d8502ee46d
23 changed files with 547 additions and 189 deletions

View File

@@ -462,9 +462,31 @@ Formula::str() const
return root ? root->str() : "";
}
Handler resetHandler = NULL;
Handler dumpHandler = NULL;
void
registerHandlers(Handler reset_handler, Handler dump_handler)
{
resetHandler = reset_handler;
dumpHandler = dump_handler;
}
CallbackQueue dumpQueue;
CallbackQueue resetQueue;
void
processResetQueue()
{
resetQueue.process();
}
void
processDumpQueue()
{
dumpQueue.process();
}
void
registerResetCallback(Callback *cb)
{
@@ -488,6 +510,24 @@ enable()
_enabled = true;
}
void
dump()
{
if (dumpHandler)
dumpHandler();
else
fatal("No registered Stats::dump handler");
}
void
reset()
{
if (resetHandler)
resetHandler();
else
fatal("No registered Stats::reset handler");
}
void
registerDumpCallback(Callback *cb)
{

View File

@@ -3208,6 +3208,15 @@ void reset();
void enable();
bool enabled();
/**
* Register reset and dump handlers. These are the functions which
* will actually perform the whole statistics reset/dump actions
* including processing the reset/dump callbacks
*/
typedef void (*Handler)();
void registerHandlers(Handler reset_handler, Handler dump_handler);
/**
* Register a callback that should be called whenever statistics are
* reset
@@ -3220,6 +3229,16 @@ void registerResetCallback(Callback *cb);
*/
void registerDumpCallback(Callback *cb);
/**
* Process all the callbacks in the reset callbacks queue
*/
void processResetQueue();
/**
* Process all the callbacks in the dump callbacks queue
*/
void processDumpQueue();
std::list<Info *> &statsList();
typedef std::map<const void *, Info *> MapType;