All programs read a file to compute the binary entropy of the file's data
using the the Markov Model (see:
<http://en.wikipedia.org/wiki/Information_entropy#Data_as_a_Markov_process>).

Makefile:
	Makefile for Linux & GCC, 64-bit mode

Makefile.aix:
	Makefile for AIX 5 or 6, 64-bit mode

Makefile.solaris:
	Makefile for Solaris 10, 64-bit mode

aio-ent.c:
	Reads the file using POSIX Asynchronous I/O

aio-lio-ent.c:
	Reads the file using POSIX Asynchronous I/O with multiple I/Os in
	flight.

block-ent.c:
	Reads the file using POSIX block I/O, w/ changeable block size
	(including the options to read the target file in a single system
	call or use the system recommended/preferred block size) & optional
	filesystem cache hint.  Simple and usually efficient.

cstream-ent.c:
	Reads the file using C bytes stream I/O, w/ changeable block size
	(including the options to read the target file in a single system
	call).  Very simple and often efficient.

dio-block-ent.c:
	Variant of block-ent.c using Direct I/O unconditionally.

drop-from-cache.c:
	Requests files content to be dropped from cache using
	'posix_fadvise(..., POSIX_FADV_DONTNEED)' (effective if and only
	if the file data is accessible and otherwise not accessed, locked
	or mapped.) 

errwarn.[ch]:
	Pico-framework to simplify fatal & non-fatal errors reporting.

mmap-cond-unmap-ent.c:
	Reads the file using mmap() w/ optional block size (default is to
	map the whole file in a single system call) & optional calls to
	mmunmap when several block are mapped.
	In other words: optionally leaks the memory allocated by mmap().
	The mapped (block) size has constraints related to pagesize (all
	size will not work, demonstrating the alignment requirement of mmap
	offset parameter).

mmap-ent.c:
	Reads the file using mmap w/ optional block size (default is to
	map the whole file in a single system call) & filesystem cache hint.
	The mapped (block) size has constraints related to pagesize (all
	size will not work, demonstrating the alignment requirement of mmap
	offset parameter).  The default "whole file" mode, also demonstrates
	the need to be careful with the mapped size (e.g. w/ regard to
	available memory).

mmap-off-ent.c:
	Reads the file using mmap w/ optional block size (default is to
	map the whole file in a single system call).
	The mapped (block) size has NO constraints related to pagesize.
	The program will make sure the constraints are actually respected
	while maintaining the illusion of non pagesize aligned access.
	=> This is costly (in terms of I/O efficiency, code clarity,
	branching), slightly more intricate and demonstrates the need to
	respect the alignment constraints to keep things simple & efficient.

ra-block-ent.c:
	Variant of block-ent.c with unconditional readahead() ("forced"
	pagecache readahead).

t.sh:
	Simple timed validation of the programs with a known input file.
	Calls all the above programs with & without their specific options.

t-drop.sh:
	Variant of t.sh with the file content removed from pagecache between
	each call to the '*-ent' programs.

t-medium.sh:
	Variant of t.sh with a smaller test file to cope with systems with
	small amounts of memory (~1 GBytes).

t-small.sh:
	Variant of t.sh with a smaller test file to cope with systems with
	small amounts of memory (~600 MBytes).

t-small-drop.sh:
	Variant of t-small.sh with the file content removed from pagecache
	between each call to the '*-ent' programs.

