Fix dark text on dark colors by switching to CSS use where we can specify more than one styling at a time; almost moved other styling to use CSS so that it is in one place.
Emit an asterisk next to the mean or median expanded stats value so we know for sure which one was used for the final number.
Add clarifying parentheses around the computed time value, and remove the unneeded parentheses for the return values of doublecmp().
Add a few getpid tests that use multiple processes and threads so that we exercise the logic computing benchmark times where we have threads and processes involved.
A bit of whitespace cleanup, both to tabify file and to use constants for output widths so that it is easy to change later.
Drop scaling to buckets of at least 1us, and making the buckets multiples of microseconds, and instead just create HISTOSIZE number of buckets and display them as is; along the way, fix the formatting so that it is easy to adjust column width by changing constants.
A bit more whitespace cleanup.
A bit of code cleanup before further changes; also fixes the case where -R option without USE_RDTSC defined falls through to the -p and/or -l cases.
Note that -W implies -S.
Pull the calculation of getnsecs() overhead and resolution out from individual benchmarks when run under ./bench; also make those methods return unsigned int to more closely represent the values calculated; we bump the libmicro interface version because we have changed the header file and, as a result, the expected output of the tattle program.
Change the way we emit stats, removing the various hardcoded formatting widths.
When printing the histogram, be sure to use the final number of samples with all the outliers removed.
Refine how statistics are calculated and displayed:

 * Sort the statistics once before we crunch the stats instead of each time
   crunch_stats() is called and when the histogram is displayed

   * Take advantage of this sorting in remove_outliers() to avoid moving more
     data than necessary

 * Modify fit_line() to not return a value, but instead use NAN for a and b
   values

   * And recognize that it is only used internally by libmicro core code

 * Modify crunch_stats() to not return a value since it was explicitly not
   used

 * Use the standard HUGE_VAL constant instead of a somewhat portable number

 * crunch_stats() is no longer duplicating the data set, so it just needs to
   setup the x values for fit_line()

   * And while we are at it, check the return value of malloc()
Collect more samples when calculating the overhead of getnsecs() to help stabilize it a bit; report on a memory allocation failure when trying to print the histogram; compare against the constant NULL rather than against the variable to avoid missing equal sign errors (more of a discipline than a need).
Increase the number of samples used to determine the getnsecs() resolution to avoid fluctuations run-to-run; do a search for the proper nops in the face of fast hardware; determine the number of samples from a constant that might be bigger than what can fit on a stack.
A poor choice of suite template names forces the use of the C++ version of the C Pre Processor, so for now we force the use of the C version.
Convert from microseconds to nanoseconds reporting:

 * Use "long long" values for all nanosecond measurements

   * This reduces the number of mathematical errors manipulating converted
     doubles

   * Convert as many double values to long long in various fields and local
     variables

   * Round to the nearest nanosecond value

   * Update the various column headers to report nanoseconds per call

   * Give more room in the formatted output for nanosecond based values

 * Histogram displays are now uniform across all values

   * The means are not calculated for histograms where the bucket width is
     only 1

 * Changed over to using constants for primary results report

   * Also now only report floating point format for the mean (when requested)

 * Update multiview display to recognize old usec based reports and properly
   convert one to the other when comparing
Don't use numactl inside the benchmark script to avoid conflicts when numactl is used on the script itself (e.g. see the runit script); note that we also drop the use of chrt so that we use values calculated from the same environment in which the tests will run.
Add one more run for just a single core, and then only use SCHED_FIFO for single core runs (does not make sense on a whole NUMA node); also change to use the last NUMA node and core as reported by lscpu so that the script always finds one regardless of the varying topologies.
Write down some more work to be done: fix barrier implementation, and fix data aggregation from multiple threads/processes.