This is an (incomplete) list of some of the stuff we want to look at doing.

If you're interested in hacking on any of these, please contact the list first
for some pointers and/or read HACKING and doc/CodingStyle.

Before 0.5.4
------------

 o test 2.5 daemon, test both 2.4/2.5 and --no-vmlinux

Before 1.0 big stuff
--------------------

 o implement new pp spec (see specification)
 	o opcontrol should sort out the counter numbers for the user
	o thread profiling - kernel change in 2.5 to export task->tgid
	o per-cpu profiling
	o difference between two profile session. Difference must be made at source level. 
	   (This is a part of post-prof). Difference can be made also at symbols level. Important.
	o real call graph profiling. Do try locks in NMI handler to track backwards then
	   dump the trace in the logs + new sample file format
 o add support for samples not belonging to any symbols probably through
   artificially created symbols
 
Before 1.0 little stuff
-----------------------

 o improve the *non* verbose daemon log to be a bit more informative
 o daemon: opd_put_kernel_samples vs. setup_kernel_sample vs. handle_. Rename, way too confusing
 o --buffer-size is useless on 2.5 without tuning of watershed
 o should we show shared libs by default ?
 o is --reset racy ?
 o should we make the sighup handler re-read counter config and re-start profiling too ?
 o improve --smart-demangle
	o allow user to add it's own pattern in user.pat, document it.
	o hard code ${typename} regular definition to remove all current limitations (difficult, perhaps after 1.0 ?).
 o oprof_start: check lib samples when kernel samples checkbox is checked
 o "op_time" doesn't have a header !
 o document that even with the in_interrupt trick in 2.5, you can still get a few
   samples in the wrong place - interrupt code outside of the irq_enter/exit
 o look oprofiled.log statitistics if 'Nr. lost userspace samples (nil image)'
  is non-zero invetigate why.
 o implement module-drop event in 2.5 kernel
 o fix /dev/null mappings (see sf)
 o mask SIGTERM over critical daemon operations that could corrupt sample files
 o pp tools must handle samples count overflow (marked as (unsigned)-1)
 o verify if we can remove the ELF-based symbol size code
 o must we do setrlimit(RLIMIT_NOFILE, ...) for daemon ? Isn't already limited
  by the kernel itself ?
 o allow --ctr0-event to take event numbers. (is it worth ?)
 o when we dump stats for oprofiled, dump kernel-side values too (for 2.5)
 o lookup_dcookie can return ENAMETOOLONG but we can't hack it

Documentation
-------------

 o make distcheck is broken (doc subdir)
 o remove dependencies in doc for xmlt.xsl and xhtml-chunk.xls ?
 o more discussion of problematic code needs to go in the "interpreting" section. 
 o document gcc 2.95 and linenr info problems especially for inline functions
 o split doc into user's manual and hacking manual, document much more 
 o audit oprof_start for security + then document sudo

General checks to make
----------------------
 
 o check chroot() processes and the path hash stuff
 o rgrep FIXME
 o valgrind (--show-reachable=yes --leak-check=yes)
 o audit to track unnecessary include <>
 o gcc 3.0/3.x compile
 o Qt2/3 check, no Qt check
 o verify builds (modversions, kernel versions, athlon etc.). I have the
  necessary stuff to check kernel versions/configurations on PIII core (Phil)
 o use nm and a little script to track unused function
 o test it to hell and back
 o compile all C++ programs with STL_port and test them
 o There is probably place of post profile tools where looking at errno will give better error messages.

Later
-----
 
 o i18n. We need a good formatter, and also remember format_percent()
 o op_to_source --source-dir=~moz/src/oprofile/ --output-dir=op /usr/bin/oprofiled
   will fail because the ~ is not expanded (no space around it) (popt bug I say)
 o remove 1 and 2 magic numbers for oprof_ready
 o adapt Anton's patch for handling non-symbolled libraries ?
 o use standard C integer type <stdint.h> int32_t int16_t etc.
 o opcontrol --save should allow to backup binary, see subject "features to make oprofile easier to use" on mail list
 o event multiplexing for real
 
o profile the NMI handler code
 
o merge sample files into one big report (like vtune can do repeated runs)

oprof_report:

IMHO this app isn't near what we really want. There's no point doing this
GUI until we can give it some real power. Let's concentrate on making the
command-line tools as good as possible first. 
- folderview of sample files + sessions in the gui itself (later ?)
- disassembly. form "+0x8b" for intra-symbol samples optionally, on by default?
- tune and test hotspot
- source (later ?)
 
