libublio is a small library with the aim of providing a buffered I/O
layer in userspace. It's primary motivation is to make it easy to fulfil
the I/O alignment constraints of disk devices on FreeBSD (and derivative
OS-es). (These exist since FreeBSD chose to ditch block devices and
make all disks and alike character devices). However, libublio is
generic code and might prove to be useful in other cases as well.

libublio provides a random positioned I/O API which is translated into
blocksize aligned I/O (where blocksize is defined by the user).
libublio also caches data; the caching algorithm uses red/black trees
and puts emphasis on making all cache operations logarithmic (in terms
of the number of cache entries).

Note that libublio is _not_ thread safe.

Usage:

- Take a look at the ublio_conf.h to see if you want to make any compile
  time cusomization (you can tune there some diagnostic features and
  some platform specific settings which could be much better determined by
  autotools if I have taken the effort to use autotools).

- Compile either a static libublio.a with the help of the provided
  Makefile or throw directly ublio.c among your source files (in the
  latter case make sure that it can include the ublio.h and ublio_conf.h
  header files).

- See ublio.h for the API and runtime tunables. Include ublio.h to your
  program, compile, enjoy.

Feedback, bugreports is to be sent to csaba.henk creo.hu .
                                                ^
                                                |
                                                @
