Hi all,
Some news on a topic that was discussed a few months ago: how to add new
state system with a declarative language in TMF.
* *Results :*
The defined XML structure has been used in several cases without
significant loss of performance.
Complicated cases such as *Linux**Kernel *and *Windows Kernel* (with
ETW) are available.
Linux Kernel :
http://secretaire.dorsal.polymtl.ca/~fwininger/XmlStateProvider/kernel-0.6.state-schema.xml
However I think it is more interesting to present an XML created for a
simple use case.
* *Example :*
This use case has been done by Simon Marchi to debug a problem with gdb.
He added 4 tracepoints (Lttng UST)to monitor start/stop of a gdb
instance and he want to visualize the result in a view in TMF.
It's very easy in this case to convert the events in states with XML
syntax, and ___you can have____in less than 30 minutes____your own state
system in TMF_.
<tmfxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://secretaire.dorsal.polymtl.ca/~fwininger/XmlStateProvider/0.6.state-schema.xsd">
<stateprovider analysisid="polymtl.gdb.debug">
<stateValue name="INF_RUNNING" value="1" />
<stateValue name="INF_STOPPED" value="0" />
<eventHandler eventname="gdb:inf_forked">
<stateChange>
<attribute constant="gdb" />
<attribute eventfield="pid" />
<attribute constant="Status" />
<value int="$INF_RUNNING" />
</stateChange>
</eventHandler>
<eventHandler eventname="gdb:inf_stop">
<stateChange>
<attribute constant="gdb" />
<attribute eventfield="pid" />
<attribute constant="Status" />
<value int="$INF_STOPPED" />
</stateChange>
</eventHandler>
<eventHandler eventname="gdb:inf_cont">
<stateChange>
<attribute constant="gdb" />
<attribute eventfield="pid" />
<attribute constant="Status" />
<value int="$INF_RUNNING" />
</stateChange>
</eventHandler>
<eventHandler eventname="gdb:inf_step">
<stateChange>
<attribute constant="gdb" />
<attribute eventfield="pid" />
<attribute constant="Status" />
<value int="$INF_RUNNING" />
</stateChange>
</eventHandler>
</stateprovider>
</tmfxml>
* *Visualization*
I am currently working on a generic view to display the state system.
It is based on the AbstractTimeGraphView and you can choose which
branches to display with a XML.
Example : for the Resources View, you want to display the Thread/*
branch in the state system :
<tmfxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://secretaire.dorsal.polymtl.ca/~fwininger/XmlStateProvider/0.6.state-schema.xsd">
<view id="polymtl.kernel.view">
<head>
<analysis id="polymtl.kernel.sp"/>
</head>
<!-- StateValues -->
<stateValue name="PROCESS_STATUS_UNKNOWN" value="0" color="#EEEEEE"/>
<stateValue name="PROCESS_STATUS_WAIT_BLOCKED" value="1"
color="#CCCCCC"/>
<stateValue name="PROCESS_STATUS_RUN_USERMODE" value="2"
color="#118811"/>
<stateValue name="PROCESS_STATUS_RUN_SYSCALL" value="3"
color="#0000EE"/>
<stateValue name="PROCESS_STATUS_INTERRUPTED" value="4"
color="#DDDD00"/>
<stateValue name="PROCESS_STATUS_WAIT_FOR_CPU" value="5"
color="#AA0000"/>
<!-- Resouces View -->
<line id="Threads/*" display="Status" name="Exec_name" parent="PPID">
<!-- Options -->
<option name="PPID" path="PPID"/>
<option name="TID" path=""/>
</line>
</view>
</tmfxml>
* *XML Specification :*
All specifications can be found here:
http://secretaire.dorsal.polymtl.ca/~fwininger/XmlStateProvider/0.6.state-schema.xsd
* *Sources :*
The prototype of the xml provider can be found in the xml_analysis
branch here:
http://git.dorsal.polymtl.ca/~fwininger?p=linuxtools.git;a=shortlog;h=refs/heads/xml_analysis
The contribution comes with the analysis framework developed by
Genevieve Bastien.
To be use you must add the XML file in this directory :
runtimeWorkspace/.metadata/.plugins/org.eclipse.linuxtools.tmf.analysis.xml/xml_files/
A easy way to import the XML files will come as soon as possible.
I am very interested to have new use cases to havemore feedback on the
usability and performance of this system.
Cheers,
Florian
_______________________________________________
linuxtools-dev mailing list
linuxtools-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/linuxtools-dev