gem5: start to document tracer internals

This commit is contained in:
Ciro Santilli 六四事件 法轮功
2019-07-23 00:00:01 +00:00
parent 361b94f2df
commit 9252f53180

View File

@@ -9994,6 +9994,60 @@ TODO that format is either buggy or is very difficult to understand:
https://stackoverflow.com/questions/54882466/how-to-use-the-tarmac-tracer-with-gem5
===== gem5 tracing internals
As of gem5 16eeee5356585441a49d05c78abc328ef09f7ace the default tracer is `ExeTracer`. It is set at:
....
src/cpu/BaseCPU.py:63:default_tracer = ExeTracer()
....
which then gets used at:
....
class BaseCPU(ClockedObject):
[...]
tracer = Param.InstTracer(default_tracer, "Instruction tracer")
....
All tracers derive from the common `InstTracer` base class:
....
git grep ': InstTracer'
....
gives:
....
src/arch/arm/tracers/tarmac_parser.hh:218: TarmacParser(const Params *p) : InstTracer(p), startPc(p->start_pc),
src/arch/arm/tracers/tarmac_tracer.cc:57: : InstTracer(p),
src/cpu/exetrace.hh:67: ExeTracer(const Params *params) : InstTracer(params)
src/cpu/inst_pb_trace.cc:72: : InstTracer(p), buf(nullptr), bufSize(0), curMsg(nullptr)
src/cpu/inteltrace.hh:63: IntelTrace(const IntelTraceParams *p) : InstTracer(p)
....
As mentioned at <<gem5-tarmac-traces>>, there appears to be no way to select those currently without hacking the config scripts.
TARMAC is described at: <<gem5-tarmac-traces>>.
TODO: are `IntelTrace` and `TarmacParser` useful for anything or just relics?
Then there is also the `NativeTrace` class:
....
src/cpu/nativetrace.hh:68:class NativeTrace : public ExeTracer
....
which gets implemented in a few different ISAs, but not all:
....
src/arch/arm/nativetrace.hh:40:class ArmNativeTrace : public NativeTrace
src/arch/sparc/nativetrace.hh:41:class SparcNativeTrace : public NativeTrace
src/arch/x86/nativetrace.hh:41:class X86NativeTrace : public NativeTrace
....
TODO: I can't find any usages of those classes from in-tree configs.
=== QEMU GUI is unresponsive
Sometimes in Ubuntu 14.04, after the QEMU SDL GUI starts, it does not get updated after keyboard strokes, and there are artifacts like disappearing text.