Notes:

** Think in three sizes:
    : disk:          SectorSize (~512)
    : file-system:   BlockSize (~4096)
    : CPU page-size: PageSize (O/~4096

** Longer term TODO:
    + valgrind
	+ improve thunking: scale thunk-size by no. of libraries open (?)
	+ export section information from .so files
	    + -possible- accurate per-section breakdown for
	      page touches (separate tool/statistic?) -
	      requires more region info.
	+ [possible] - some measure of pseudo-CPU time burned
	  between I/O interesting calls.
	+ threads:
	    + need 'exec' hints to start other threads ?
		+ [or follow the valgrind scheduling ?]

    + iogrind
	+ sub-setting model:
	    + "show me only XYZ time range" (or whatever)
	    + [ a new view: bootchart type thing ? ]
	+ generic mouse-over idle pop-up infrastructure
	    + addr view: stack trace info
	    + stack view: more details of size / speed / percentage & trace.
	+ histogram:
	    + add percentage bar-graphlets
	+ cleanups
	    + consider / re-factor TraceData event interfaces ?
	+ stack (/ file) view
	    + get nice 'current fn' display at top right.
	    + tree should have "Incl, Self, Called, Function, Location" fields.
	    + have per-library coloring/sorting pane at the top.
	+ file-system layout view
	    + select in view - expands/selects in the tree...
	    + 'search' function for files ?
	+ address view
	    + show different .so sections by color
	    + better working set metrics.
	    + draw horiz & vertical scales.
	    + boot-chart style bandwidth vs. time at top
	    + allow selection of each process ...
	    + allow selection of range of interest & it's B/W etc.
	    + collapsed I/O
		+ maps V pos. should be chronological not random.
	+ console
	    + add a 'dirtied pages' metric - we can compare vs. pmap (?)
	+ modelling
	    + [ model file-system layout ]
	    + [ model a disk better ... ]
	    + [ model a CD/DVD - (bootable media!) ;-]
	    + [ model udev "failed to open /dev/urandom" etc. ]
	    + memory use
	    + async write behavior
	    + swap behavior
	    + 'atime' cost
	+ incomplete
	    + finish FileModel - use file-descriptors ...
	+ pre-priming
	    + prime the simulator with something to hot up the caches.

** known bugs:
    + stack view
	+ tree-view 'selection' - doesn't work for elided nodes.
	+ chase trace bugs in tree - uh?
    + file-system histogram
	+ need to canonicalise relative path-names ->
	  absolute ones ... after simulation.
    + valgrind
	+ need to canonicalise mmap paths, or re-work to use
	  file-descriptors / addresses ... (?)
	    + really ? - it's all done by address anyway
	      surely !? - no scope for confusion.
    + disksim
	+ bin logging to tons of files.
	+ fclose files we open ...
    + simulator
	+ remove hack to get 1st process' SimulationData
	+ fix process/thread duality ...

** Before initial release:
    + audit valgrind i/o function coverage
    + create a few simple samples:
	+ consistent file-system samples
	+ consistent sample traces ...
	+ benefits of sorting by inode,
	  or using ext3 directory type info.
        + [ prelink - the auto-fragmentation tool ... ]
    + finish file handling & emulation
    + add pre-warming capability ...
	+ collapse several .prfs -> prewarm set

    + Freak show:
	+ gnome-main-menu
	+ yast2-timezone
	+ ...
	+ OpenOffice.org
	+ new & old style hash linking.

* FileView.cs
    + broken - if parent dirs have any
      cost: duplicates them ... [urk]
    + Parent dirs -tend- to have no cost:
	+ resolved during lookup of a (child) file [ok]

    + valgrind:
	+ hook 'chdir' for io tracing, and init it to
	  the initwd... (for AIX)
	+ async io
	    + re-instate 'thread:' data
	+ need to catch 'exec's etc.
	+ mmap - talk in file-handles, not names
	    + [ is that really necessary ? ... ]

FIX:
    + FSView.cs
	+ split into sections ? - add sector index / annotations ?

    + readahead:
	+ blocks until the data has been read ...

    ** FIXME:
	+ create regression tests vs smallext2.fs etc.
	+ automate them.
	    + eg. this mmap horror:

M: 0x0401e000 0x04020000 '/usr/local/lib/valgrind/x86-linux/vgpreload_core.so'
M: 0x0401f000 0x04020000 '/usr/local/lib/valgrind/x86-linux/vgpreload_core.so'

	+ get the right map [!] ...

     void * mmap2(void *start, size_t length, int prot,
                    int flags, int fd, off_t pgoffset);

    + FIXME:
	+ we need to shrink existing mappings that are inaccurate
	  / broken and/or overwrite them partially ...
	    + just warn for extreme partial cases ...
	+ Improve visualisation & management of memory mappings
	    + VM -> 'page' information ? 'PageCache' etc.

    + FIXME:
	+ do we really want to account time by 'SimMap' ?
	    + or do we instead really want to account it by
	      'SimMappedFile' (or something) ?
	    + have a more page based view of what is mapped
	      and when and where ?
	    + [ what about the addrview ? ]

    + StackView.cs:
	+ ability to color & elide by library (?)
	    + '[x] fold'

* FIXME:
    + create a separate 'fsview' GUI ...
    + Bugs:
	+ popup is broken for AddrView - offset ?
    + 'thunk' data: the leading edge of a
           thunk should be the 1st touch there ...
	   so we don't obliterate useful data ...

** FIXME:
    + scribble- why does total time not match sum of events
    + fix sizing issues

** Push more rendering down into 'renderer' ...
    + pull it out of 'Overview' ...

    + add 'Total time' readout to Stack / Histogram by default ... [!?]

* re-factor to save linking -so- much stuff in.

* Call family ... [!]
