LTTV Roadmap

* TODO
migrate align to lttv parser.
create a event rate graphical view : Will be useful in conjonction with the filter.
create an analysis of function time (like a precise gprof)
-> with gcc -f inline-functions


* Done
Buffer aligned on page boundary -> use valloc.
per struct (struct align=x) support added to genevent (partial).
Add offset align generation for structs to genevent.
make lttv aware of the per facility long, void* and size_t types.
Read current trace header and buffer header.

LTT Next Generation Roadmap

* TODO
make LTT tracing code completely atomic (thus remove locks)
add efficient and secure user space tracing. (1 month)
integrate LTTng State Dump : missing irq and process state.
add genevent full functionnality : alignment, array, sequences, nested structures.
add gcc -finstrument-functions instrumentation


* Done
remove ltt-headers.h
remove ltt-log.h
Put trace->active later in _ltt_trace_start()
ltt_trace_create() remove sleep in spinlock use GFP_ATOMIC kmalloc
Fix the locking of module hooks.
Fix the traps -> disable nested logging for now.
Use per cpu spinlock on trace list.
Finish the control module, libltt and lttctl : netlink interface
Finish integrating lttctl with lttd.
fix lttctl signal waiting : use a flag.
Add ltt_write_commit_counter call to genevent.
Add information in the buffer header : buffer size, etc etc...
-> this information is so small that we can repeat it. Makes flight recorder easier to decode.
Add trace start structure to buffer start header.
fix genevent : take no lock if num traces active is 0.
Add type information per facility : it will help having a standard way to understand information coming from both kernel space and user space, and deal easily with 64 bits kernel with 64 and 32 bits processes (and with size_t know at compile time which can differ inside the same process from one library to another).
fix structures alignment, array and sequences too. -> trace dynamic.
add per facility alignment (inside structures).
add control of alignment.
add control for subbuffer size and number of subbuffers.
Add reserve - get TSC - alignment atomicity through the use of cmpxchg.
Add configurable alignment (LTT_ALIGNMENT).



* TODO (low priority)
Integrate header generation (genevent) in kernel build system.
Multithreaded lttd.
Find a different way to printk from instrumentation : forbidden from schedule and wakeup (causes a deadlock).

* Need to be discussed
Drop ltt-module-register and ltt-module-unregister, use exported variables.
RelayFS ioctl interface vs control through LTT netlink interface.
drop ltt_filter_control, use functions pointers instead.
Merge facilities headers into one big header.
Change the name of XML files from XML to something else.
Remove ltt-base.c.

* Not planned for integration
Remove the callback struct from the trace struct.



* lttng patch division (0.4.2+) :

ltt-instrumentation.diff
ltt-facilities-headers.diff
ltt-facilities-loader.diff
ltt-facilities.diff
ltt-relayfs.diff
ltt-core.diff


Mathieu Desnoyers