Features:
=========

* testsuite:
   - when fake init_module() succeeds, create an entry in /sys/module
   - when fake delete_module() succeeds, remove its entry from /sys/module
   - add test for dependency loop _with install commands_ relying on module
     already been loaded in order to succeed. E.g.: alsa install rules on
     debian:

   install snd /sbin/modprobe --ignore-install snd && { /sbin/modprobe --quiet snd-ioctl32 ; /sbin/modprobe --quiet snd-seq ; }
   install snd_rawmidi /sbin/modprobe --ignore-install snd-rawmidi && { /sbin/modprobe --quiet snd-seq-midi ; : ; }
   install snd_emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 && { /sbin/modprobe --quiet snd-emu10k1-synth ; : ; }
   install snd_pcm modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { modprobe --quiet snd-pcm-oss ; : ; }
   install snd_mixer modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { modprobe --quiet snd-mixer-oss ; : ; }
   install snd_seq modprobe --ignore-install snd-seq $CMDLINE_OPTS && { modprobe --quiet snd-seq-midi ; modprobe --quiet snd-seq-oss ; : ; }

* 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()

* 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

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
