java.lang.Object
org.eclipse.tracecompass.tmf.core.statesystem.AbstractTmfStateProvider
org.eclipse.tracecompass.incubator.callstack.core.instrumented.statesystem.CallStackStateProvider
All Implemented Interfaces:
ITmfStateProvider

public abstract class CallStackStateProvider extends AbstractTmfStateProvider
The default base state provider for traces that implement the default InstrumentedCallStackAnalysis with a process / thread grouping, using the default values. Specific analyses will need to override it to specify the function entry/exit, as well as how to get the process ID and thread ID. The attribute tree should have the following structure:
 (root)
   +-- Processes
       +-- (PID 1000)
       |    +-- (TID 1000)
       |    |    +-- CallStack (stack-attribute)
       |    |         +-- 1
       |    |         +-- 2
       |    |        ...
       |    |         +-- n
       |    +-- (TID 1001)
       |         +-- CallStack (stack-attribute)
       |              +-- 1
       |              +-- 2
       |             ...
       |              +-- n
       |
       +-- (PID 2000)
            +-- (TID 2000)
                 +-- CallStack (stack-attribute)
                      +-- 1
                      +-- 2
                     ...
                      +-- n
 
where:
  • (PID n) is an attribute whose name is the display name of the process. Optionally, its value can be an int representing the process id. Otherwise, the attribute name can be set to the process id formatted as a string.
  • (TID n) is an attribute whose name is the display name of the thread. Optionally, its value can be a long representing the thread id. Otherwise, the attribute name can be set to the thread id formatted as a string.
  • "CallStack" is a stack-attribute whose pushed values are either a string, int or long representing the function name or address in the call stack. The type of value used must be constant for a particular CallStack.
TODO: Use the same state provider as the one currently in trace Compass. It just needs the ProcessName and ThreadName Aspects.
Author:
Patrick Tasse