Features:
=========

* config: configs that do not need to be matched by fnmatch() could be using a
  vector instead of a list. This way we could search in it by calling
  bsearch().

* index: drop the "open(), seek(), read()" implementation and use another one
  with mmap(). When lookup() is called and the file is not mmaped, mmap it.

* create test-mock library to be LD_PRELOAD'ed before running the binaries
  so we're able to create unit tests

* Add functions to dump configuration. Create a list with the config items
  (blacklist, aliases, etc) or just dump to a fd?

* Add functions to list all modules known by modules.dep

* provide 1:1 compatibility with module-init-tools's modprobe
   - dump configuration

* Add kmod_validate(). It checks if all config files and indexes are still
  valid. We need to save the mtime of each config dir when starting up and when
  this function is called we stat the dir and compare the mtimes.

* review API, maybe unify all of these setters:
   - kmod_module_version_get_symbol()
   - kmod_module_version_get_crc()
   - kmod_module_symbol_get_symbol()
   - kmod_module_symbol_get_crc()
   - kmod_module_dependency_symbol_get_symbol()
   - kmod_module_dependency_symbol_get_crc()
   - kmod_module_versions_free_list()
   - kmod_module_symbols_free_list()
   - kmod_module_dependency_symbols_free_list()

* provide modules.archive, a cache file with all modules compressed
  and a fast access. It's like a tar.gz, but with each entry
  compressed as opposed to the whole tar compressed, easy to pick
  individual entries, that is, more like .gz.tar. As zlib compression
  does not store the uncompressed file size, this could provide
  it. The file format should be something like:
     MAGIC-ID
     DIRECTORY-ENTRY-SIZE
     DIRECTORY (hash-like format, points to file offset and size)
     ENTRIES (each is a compressed module)
  Helper binary to:
     kmod-archive list
     kmod-archive add path.ko
     kmod-archive rm path.ko
     kmod-archive get path.ko
     kmod-archive exists path.ko

Known Bugs:
===========


Things to be added/removed in kernel (check what is really needed):
===================================================================

* list of currently loaded modules

* module's size should be available under /sys

* kill /proc/modules ?

Things that are different from module-init-tools on purpose (!TODO)
===================================================================

modprobe
--------

* 'modprobe -l' was marked as deprecated and does not exist anymore

* 'modprobe -t' is gone, together with 'modprobe -l'

* there's and additional '--remove-dependencies' flags to kmod-modprobe so we
  can remove modules depending on that one

* kmod-modprobe doesn't parse configuration files whose name don't end on
  '.alias'  or '.conf'. modprobe used to warn about these files.

depmod
------

* there's no 'depmod -m' option: legacy modules.*map files are gone
