
This is an implementation of the network-centric cache on top Trove.
We call this component as Network-Centric Adaptive Cache (NCAC), a
quite bad name.
The main purposes of this cache facility are as follows:
(1) network-centric buffer manager; (2) adaptive user-level cache;
(3) control and extended access to the cache; (4)to achieve "sendfile()" 
and "recvfile()" semantics for BMI on different user-level networks such
as GM and InfiniBand.
Detailed documents can be found in doc/pvfs2-ncac/ncac.tex (TODO).

Some examples and tests are located at src/io/test/buffer. 

Below is a description of what is in the various files as of 08/20/2003.

--------------
ncac-init.c	-- functions to initialize the NCAC component

--------------
ncac-interface.h -- interface exposed to the NCAC upper components, 
					such as FLOW, scheduler and others.
 
ncac-interace.c -- interface functions to the NCAC upper components 

--------------
ncac-trove.h --  function information used for NCAC to interact Trove. 

ncac-trove.c --  function to access Trove. 

--------------
ncac-job.h -- job management functions

ncac-job.c -- functions to process different jobs  

ncac-buf-job.c -- functions to process buffer-typed jobs

--------------
internal.h -- function and data structure information used in the NCAC.
internal.c -- functions act as a transition from the ncac-interface world
			  to the NCAC world.

--------------
cache.h
cache.c   -- cache management functions

--------------
state.h
flags.h   -- extent states
state.c   -- extent state transition functions

--------------
radix.h   -- 
radix.c   -- radix tree functions to maintain cached extents. 

------------
ncac-list.h -- customized list functions to manipulate lists
ncac-locks.h  -- customized lock wappers
aiovec.h 	  -- container structure to batch aio operations.
