mirror of
https://github.com/AuxXxilium/kmod.git
synced 2024-11-23 23:10:53 +07:00
110 lines
3.7 KiB
Plaintext
110 lines
3.7 KiB
Plaintext
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.
|
|
|
|
* 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
|
|
|
|
* Stop using system() inside the library and use fork + exec instead
|
|
|
|
Known Bugs:
|
|
===========
|
|
|
|
|
|
Things to be added/removed in kernel (check what is really needed):
|
|
===================================================================
|
|
|
|
* list of currently loaded modules
|
|
- readdir() in /sys/modules: dirs without a 'initstate' file mean the
|
|
modules 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 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.
|
|
|
|
* kmod-modprobe doesn't parse 'config' and 'include' commands in configuration
|
|
files.
|
|
|
|
* we don't use <module-dir>/modules.builtin{,.bin} indexes. Instead we rely on
|
|
module appearing on /sys/modules/* without a initstate file to determine if
|
|
it is builtin.
|
|
|
|
* 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
|