Features:
=========

* testsuite:
   - when fake delete_module() succeeds, remove its entry from /sys/module

* review API, maybe unify all of these getters:
   - 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(

   Main reason for this is that they need to open and read the module to get
   this information. If module is compressed, that means uncompressing +
   allocating necessary space + deallocating for each of them. depmod uses most
   of these functions and in the end it uncompresses the module ~6x times more
   than needed, which makes depmod very slow if compared to module-init-tools.

   We might want to either cache the elf file within kmod_module or create
   another struct that the user ref()/unref().

* Stop using system() inside the library and use fork + exec instead

* 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.

* Implement actions in kmod tool like 'insert', 'remove', 'info', etc

* Deprecate "rmmod -w", friends and KMOD_REMOVE_NOWAIT from libkmod.
  The blocking delete_module will be removed from the kernel. Deprecate it and
  print a warning to the user because he shouldn't be using it.

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

* list of currently loaded modules
	- readdir() in /sys/modules: dir without a 'initstate' file means the
	  module is builtin.

* module's size should be available under /sys
	- DONE in 3.3: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=cca3e707301862ca9b9327e6a732463982f8cd1b

* kill /proc/modules ?
	- Unlikely, given other tools might depend on it

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 modprobe so we
  can remove modules depending on that one

* modprobe doesn't parse configuration files with names not ending in
  '.alias' or '.conf'. modprobe used to warn about these files.

* modprobe doesn't parse 'config' and 'include' commands in configuration
  files.

* modprobe from m-i-t does not honour softdeps for install commands. E.g.:
  config:

        install bli "echo bli"
	install bla "echo bla"
	softdep bla pre: bli

  With m-i-t, the output of 'modprobe --show-depends bla' will be:
        install "echo bla"

  While with kmod:
        install "echo bli"
        install "echo bla"

* kmod doesn't dump the configuration as is in the config files. Instead it
  dumps the configuration as it was parsed. Therefore, comments and file names
  are not dumped, but on the good side we know what the exact configuration
  kmod is using. We did this because if we only want to know the entire content
  of configuration files, it's enough to use find(1) in modprobe.d directories

depmod
------

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

lsmod
-----

* information is parsed from /sys instead of /proc/modules
