]> git.ipfire.org Git - thirdparty/kmod.git/blobdiff - TODO
kmod 27
[thirdparty/kmod.git] / TODO
diff --git a/TODO b/TODO
index 9b19ff1c27871eff9db73011eda7ca5c91081dc5..3fe06ebe17346f9501819490812b4c132403b47b 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,37 +1,61 @@
-
 Features:
+=========
+
+* Add command for signing modules
+   - There is a script to sign modules in kernel tree, but we should be able to
+   sign modules by ourselves
+
+* Stop using NOFAIL() and fatal()
+
+* Protect index against OOM
+
+* Implement actions in kmod tool like 'insert', 'remove', 'info', etc
+
+* testsuite:
+   - when fake delete_module() succeeds, remove its entry from /sys/module
+   - improve coverage (use --enable-coverage to check the current state)
+
+* 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().
 
-* config: load on demand
+* config: implement the config handling in shared/ and use it in both depmod
+and libkmod
+
+* 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()
+
+* libkmod API breaking changes:
+   - dedicated error value for all kmod_*_get_crc() functions. Currently there
+     is no way for callers to distinguish between a valid CRC=0 and the error
+     code 0.
 
 * 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.
+  Another possibility is to drop the mmap implementation relying on VFS to have
+  the pages cached. This would simplify the interface exported by libkmod.
+  Measure performance before deciding.
 
-* provide a kmod_preload_resources() so configs are parsed and files are mmaped
-  with MAP_POPULATE | MAP_LOCKED. Maybe it's a good idea to have a
-  kmod_unload_resources() too.
-
-* kmod_module: create a mempool with live and recently de-allocated modules.
-  This way we don't have to create a new one, parse dependencies and whatnot.
-  Just pick the already created node.
-
-* kmod_module: apply blacklist on module lookup. What's best? Return the whole
-  list and provide functions like kmod_module_filter_* or return the list
-  already filtered?
-  ^-- investigate the best API
+* depmod:
+   - join functions for text/binary outputs
+   - use new O_TMPFILE for tmp file creation
 
-* insmod and rmmod with dependency handling. Maybe this should be done by the
-  binary, and it's sufficient to return only the lists from lookups.
-  ^-- investigate the best API
+Things to be added/removed in kernel (check what is really needed):
+===================================================================
 
-* when preloading stuff, give the possibility to preload binary files. We need
-  to create alternative index_search* functions to operate on mmapped files.
-  Then on ctx creation we mmap all the files
+* list of currently loaded modules
+       - readdir() in /sys/modules: dir without a 'initstate' file means the
+         module is builtin.
 
-* kmod_module: calculate fields on demand if not available:
-       - name
-       - path
-       - dependency
+* kill /proc/modules ?
+       - Unlikely, given other tools might depend on it