gem5/util/cxx_config
Andrew Bardsley 27b7b9e561 config: Fix checkpoint restore in C++ config example
This patch fixes the checkpoint restore option in the example of C++
configuration (util/cxx_config).

The fix introduces a call to config_manager->startup() (which calls startup
on all SimObjects managed by that manager) to replicate the loop of
SimObject::startup calls in src/python/m5/simulate.py::simulate guarded by
need_startup.  As util/cxx_config/main.cc is a C++ analogue of
src/python/mt/simulate.py, it should make a similar set of calls.
2014-11-14 03:54:02 -05:00
..
main.cc config: Fix checkpoint restore in C++ config example 2014-11-14 03:54:02 -05:00
Makefile config: Add the ability to read a config file using C++ and Python 2014-10-16 05:49:37 -04:00
README config: Add the ability to read a config file using C++ and Python 2014-10-16 05:49:37 -04:00
stats.cc config: Add the ability to read a config file using C++ and Python 2014-10-16 05:49:37 -04:00
stats.hh config: Add the ability to read a config file using C++ and Python 2014-10-16 05:49:37 -04:00

This directory contains a demo of C++ configuration of gem5.  The intention
is to provide a mechanism to allow pre-generated config.ini files generated
by Python-based gem5 to be reloaded in library-base versions of gem5
embedded in other systems using C++ calls for simulation control.

This demo implements a few of the simulation control mechanisms of the Python
gem5 on top of a C++ configured system.

Read main.cc for more details of the implementation.

To build:

First build gem5 as a library with cxx-config support and (optionally)
without python.  Also build a normal gem5 (cxx-config not needed, Python
needed):

> cd ../..
> scons build/ARM/gem5.opt
> scons --with-cxx-config --without-python build/ARM/libgem5_opt.so
> cd util/cxx_config

Then edit Makefile to set the paths for PYTHON and run make

> make

Make a config file for the C++-configured gem5 using normal gem5

> ../../build/ARM/gem5.opt ../../configs/example/se.py -c \
>       ../../tests/test-progs/hello/bin/arm/linux/hello

The binary 'gem5.opt.cxx' can now be used to load in the generated config
file from the previous normal gem5 run.

Try:

> ./gem5.opt.cxx m5out/config.ini

This should print:

> Hello world!

The .ini file can also be read by the Python .ini file reader example:

> ../../build/ARM/gem5.opt ../../configs/example/read_config.py m5out/config.ini