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:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user