Hi Florian, Wow, great work! I know many people are eagerly awaiting something like this!
If you want to squash/rebase your commits on master and push it to Gerrit, I'll be happy to review it. Perhaps you could add a bit more comments and a bit saner spacing to the XML files, with that it will be very readable. I'd also suggest you add a draft of the attribute tree as a comment in the state provider, it makes it easier when reading/writing the code when you can refer to the whole tree. We could even add the XML LTTng kernel provider to the tests: it would make sure that the XML-defined provider gives the same results as the hard-coded one. Cheers, Alex On 13-08-29 04:56 PM, Florian Wininger wrote: > 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 _______________________________________________ linuxtools-dev mailing list linuxtools-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/linuxtools-dev