Gustavo Sverzut Barbieri
e5c60f1c28
NULL safety in public places, allows disable logging.
2011-12-08 14:07:13 -02:00
Gustavo Sverzut Barbieri
1bdd951ee2
log: give log function its data instead of kmod_ctx.
...
This will be the most common use case for logging, also changed
log_stderr() to log_filep() with data being stderr to test it.
2011-12-08 14:06:50 -02:00
Gustavo Sverzut Barbieri
e1a6b30dc4
modname_normalize: fix const and buffer overflow.
...
"buf[NAME_MAX] = value" is invalid since it would access the byte
right after the array.
Also fix the const of modname, do not mess with it to avoid mistakes.
2011-12-08 13:33:25 -02:00
Lucas De Marchi
8fc83fe1de
kmod_loaded: document exported function
2011-12-08 12:59:16 -02:00
Lucas De Marchi
7e1b3ae2b9
kmod_list: document exported functions
2011-12-08 12:25:36 -02:00
Gustavo Sverzut Barbieri
f1fb6f8525
kmod_module: Remove const from path
...
It's an ugly hack. This is an internal variable, we know we shouldn't
change it everywhere.
2011-12-08 11:37:03 -02:00
Gustavo Sverzut Barbieri
1487a64ffa
add kmod_module_get_filtered_blacklist()
...
This function will filter the given list against the known blacklist,
returning a new list with remaining modules with the reference
incremented.
2011-12-08 11:17:16 -02:00
Lucas De Marchi
e005facdb9
Only search path in moddep if it's not already set
...
rmmod/insmod should be able to operate directly on files, not relying on
indexes and configuration.
The following test was not working and now it is:
$ # go to a dir != mod->dirname
$ cd /lib/modules/$(uname -r)/kernel
$ # try to insert module giving a relative path
$ insmod drivers/acpi/ac.ko
2011-12-08 11:15:24 -02:00
Lucas De Marchi
4eb2c0fca1
Fix abs path helper function
2011-12-08 11:15:24 -02:00
Lucas De Marchi
ac9f8761fe
test-insmod: show the path libkmod is using
2011-12-08 11:15:24 -02:00
Gustavo Sverzut Barbieri
97a3ea9e9d
test-insmod: print name to test modname_normalize().
2011-12-08 11:15:24 -02:00
Lucas De Marchi
6bd0b8d01d
kmod_module: treat module creation by path with same names
...
If a module with the same name already exists, try to reference it if
paths are the same. Otherwise fail.
2011-12-07 14:15:49 -02:00
Lucas De Marchi
71e975cd4d
kmod_module: store absolute path when creating module from path
2011-12-07 13:53:53 -02:00
Lucas De Marchi
06363cc126
Add helper path_make_absolute_cwd()
2011-12-07 13:51:40 -02:00
Lucas De Marchi
3a468809b8
Add helper path_is_absolute()
2011-12-07 13:50:52 -02:00
Lucas De Marchi
a5cce6d6ef
kmod_config: parse install and remove commands
2011-12-07 11:31:28 -02:00
Lucas De Marchi
615c42be5c
kmod_config: parse module options
2011-12-07 10:59:44 -02:00
Lucas De Marchi
afca78015b
Add helper strchr_replace()
2011-12-07 10:59:44 -02:00
Lucas De Marchi
877e80cd93
Use streq() when possible
2011-12-07 02:32:28 -02:00
Lucas De Marchi
6c343b1aee
Split function so we don't call basename() unnecessarily
2011-12-06 09:02:13 -02:00
Lucas De Marchi
fab4978ac1
test: add test for modules' hash
2011-12-06 03:49:30 -02:00
Lucas De Marchi
fd186ae996
Maintain a pool of modules alive
...
Based on previous implementation by
Gustavo Sverzut Barbieri <barbieri@profusion.mobi>
2011-12-06 03:49:07 -02:00
Lucas De Marchi
b7b7ac298f
kmod_config: optimize config files handling
...
1) Allocate less by not sorting the result with qsort. Instead,
insert the nodes in the correct order;
2) Do not maintain the whole path in memory, but rely on openat()
2011-12-06 03:34:51 -02:00
Lucas De Marchi
e16e27f4a4
kmod_list: remove nodes in order
2011-12-06 03:34:51 -02:00
Lucas De Marchi
1965029cb0
kmod_list: add helper function to merge two lists
...
This helper function will append the second list in the first one, so
they become one single list.
2011-12-06 03:34:51 -02:00
Lucas De Marchi
b91a1c6d3d
kmod_list: add helper kmod_list_insert_before()
2011-12-06 03:34:51 -02:00
Lucas De Marchi
86e8788572
kmod_list: add helper kmod_list_insert_after()
2011-12-06 03:34:51 -02:00
Lucas De Marchi
1843b153b4
test: add test to get dependencies of a module
2011-12-06 03:34:51 -02:00
Lucas De Marchi
c5b5ea9c7c
test: add test to convert name to path
...
If we create a kmod_module from a name, the path returned is relative to
the module dirname, as passed during kmod_ctx creation. Note that if
kmod_ctx is created with kmod_new(NULL), the dir used is the one
returned by uname.
2011-12-06 03:34:51 -02:00
Lucas De Marchi
4f2bb7cdd4
kmod_module: normalize module name
2011-12-06 03:34:51 -02:00
Lucas De Marchi
c5e7b1f7ef
kmod_module: get path on demand
2011-12-06 02:48:04 -02:00
Lucas De Marchi
671d489424
kmod_module: parse dependencies on demand
2011-12-06 02:48:04 -02:00
Lucas De Marchi
1eb2ef694c
Split function to search moddep file
2011-12-06 02:48:04 -02:00
Lucas De Marchi
f1cd799fb0
kmod_module: return a new list and increase ref of dependencies
...
kmod_module_get_dependency is renamed to kmod_module_get_dependencies
since it's returning a list. To match other APIs, now it returns a new
list that user must free with kmod_module_unref_list().
2011-12-06 02:48:03 -02:00
Lucas De Marchi
d2d648dfaf
Fix missing parenthesis in macro
2011-12-06 02:48:03 -02:00
Gustavo Sverzut Barbieri
7db08652cd
Add simple hash implementation
2011-12-05 19:24:06 -02:00
Lucas De Marchi
d753b8ca35
kmod_module: inline name and make it always available
2011-12-05 18:14:51 -02:00
Gustavo Sverzut Barbieri
43c29d10ff
kmod_alias: reduce from 3 mallocs to a single one.
2011-12-05 13:42:13 -02:00
Lucas De Marchi
40923bdb64
Use readdir_r in kmod_module_get_sections()
...
readdir() is not thread-safe. Use readdir_r instead.
2011-12-05 13:41:10 -02:00
Lucas De Marchi
53886ddd87
Use readdir_r in kmod_module_get_holders()
...
readdir() is not thread-safe. Use readdir_r instead.
2011-12-05 13:29:46 -02:00
Lucas De Marchi
49b741d0b0
Add padding to enum to make sure it's an int
2011-12-05 11:42:12 -02:00
Lucas De Marchi
cf91579b8d
Inline foreach macro for internal usage
...
Avoid calling _next() function because it's an exported function and
linker can not optimize it.
Thanks to "Gustavo Sverzut Barbieri <barbieri@profusion.mobi>" for
suggestion.
2011-12-05 11:33:15 -02:00
Gustavo Sverzut Barbieri
8226058343
tests: release memory before error exits.
...
this makes it easier to valgrind the error cases as well.
2011-12-05 01:45:21 -02:00
Gustavo Sverzut Barbieri
69f9dd4369
no more kmod_loaded and kmod_loaded_module.
...
kmod_loaded_get_list() now returns a regular list of kmod_modules, use
kmod_module_get_module(), kmod_module_unref() and
kmod_module_unref_list() to operate on it.
2011-12-04 17:24:08 -02:00
Gustavo Sverzut Barbieri
f12ae3c438
kmod_module: extended information gathering.
...
provide means to get:
* refcount
* initstate
* holders
* sections
this can be used to individually query properties from modules,
similar to /proc/modules (kmod_loaded / kmod_loaded_module).
2011-12-04 17:24:08 -02:00
Gustavo Sverzut Barbieri
ad4d1ae565
kmod_module_get_module: safety against NULL pointers
2011-12-04 17:24:08 -02:00
Gustavo Sverzut Barbieri
87ca03bd07
module refcount should start at 1.
...
the current way was having the referenced modules to be released given
the unref comparison checking for "> 0".
2011-12-04 17:24:08 -02:00
Gustavo Sverzut Barbieri
32c328d28e
fix missing ")".
2011-12-04 15:34:43 -02:00
Lucas De Marchi
478af97f1c
TODO: update file
2011-12-03 20:51:01 -02:00
Lucas De Marchi
94fe3dfbb9
License library as LGPL
...
The only part under GPL was the index, that is now re-licensed. Switch
back to LGPL.
2011-12-03 04:30:41 -02:00