Lucas De Marchi
cb451f35d9
Change licenses
...
libkmod is under LGPL 2.1 or later
tools/* are under GPL
2011-12-12 18:24:35 -02:00
Lucas De Marchi
45f2778174
Remove warnings: ‘err’ may be used uninitialized in this function
2011-12-12 17:23:04 -02:00
Lucas De Marchi
cb48c9b2e6
Rename project from libkmod to kmod
2011-12-12 16:54:18 -02:00
Lucas De Marchi
8f767e2dfa
Use true/false for bool return
2011-12-12 15:27:57 -02:00
Lucas De Marchi
98c80f44c9
Directories inside config directories are not supported
...
This was failing silent, both in libkmod and module-init-tools. Give a
warning if we created a dir inside config directories.
2011-12-12 15:26:59 -02:00
Lucas De Marchi
4782396cc4
Do not stat() dir twice
2011-12-12 15:00:51 -02:00
Lucas De Marchi
016d619cd9
Fix leak of DIR
2011-12-12 14:39:35 -02:00
Lucas De Marchi
970ba8be9d
Remove leftover comment
...
mod->path is always absolute: remove comment from previous behavior.
2011-12-12 14:01:39 -02:00
Lucas De Marchi
49ce6d0741
Remove libkmod-loaded.c and re-order functions in libkmod-module.c
...
It's not possible to move functions related to "live" modules to
libkmod-loaded.c because they depend on the definition of kmod_module.
Putting this structure in the private header is not a good idea, so let
all functions related to "live" information in the end of
libkmod-module.c, and move the sole function from libkmod-loaded.c to
this place. This way all functions get the right documentation
about their sections.
2011-12-12 13:56:47 -02:00
Lucas De Marchi
a102e262e6
Rename kmod_loaded_get_list() to kmod_module_new_from_loaded()
...
Be consistent with other similar functions already present and improve
documentation.
2011-12-12 13:50:19 -02:00
Lucas De Marchi
28c175edd1
coding style: be consistent with blank lines
2011-12-12 11:52:59 -02:00
Lucas De Marchi
c35347f15c
coding style: fix lines over 80 chars
...
Lines should not go over 80 chars with a few exceptions:
- headers
- function definitions with only 1 argument
- long strings, otherwise we break grep
This should go later in a coding-style file
2011-12-12 10:54:19 -02:00
Gustavo Sverzut Barbieri
cb8d4d3e99
API-BREAK: kmod_new() takes a second parameter for configuration directory.
...
This is required by modprobe and also to help doing unit tests in future.
2011-12-11 20:58:22 -02:00
Gustavo Sverzut Barbieri
d01c67e383
add missing newline to log messages.
2011-12-11 20:58:22 -02:00
Gustavo Sverzut Barbieri
926f67a6d6
be less verbose on initstate for unexistent modules.
...
the module may be unloaded, in this case -NOENT is returned but it
should not present an error message
2011-12-11 20:58:22 -02:00
Gustavo Sverzut Barbieri
3a721bbcf0
insmod: allows providing option to module.
2011-12-11 20:58:22 -02:00
Gustavo Sverzut Barbieri
d917f2743e
always normalize user-given alias.
2011-12-11 20:58:22 -02:00
Gustavo Sverzut Barbieri
bd3f553526
export module's options and commands.
...
This will be required to implement modprobe later. The implementation
follows "man modprobe.conf" and allows options to be specified for
alias as well, thus the need for kmod_resolve_alias_options().
Example mod-a.conf:
options mod-a a=1 b=2
options mod-a c=3
alias mymod-a mod-a
options mymod-a d=4
Results in:
options mod-a a=1 b=2 c=3
options mymod-a a=1 b=2 c=3 d=4
Install commands are being concatenated with ";", but manpage is not
clean about this behavior.
2011-12-11 20:58:21 -02:00
Gustavo Sverzut Barbieri
b6a534f72c
parse_depline may be called from libkmod.c
...
allow parse_depline to be called when already initialized as it may be
called from libkmod.c and at that point there is no way to check
mod->init.dep
2011-12-11 20:58:21 -02:00
Gustavo Sverzut Barbieri
bf8cf1483f
fix string replace.
...
configure files with this would fail:
options wl x=1
were being handled as " =1".
2011-12-11 20:58:21 -02:00
Lucas De Marchi
54ba8b3416
kmod: Add documentation and format comments
2011-12-11 20:55:09 -02:00
Gustavo Sverzut Barbieri
27fdf63153
index: fix memleak for non-matchin aliases.
2011-12-10 13:28:18 -02:00
Gustavo Sverzut Barbieri
d091546448
index-mm: allocate values inline into node, strings points to mmap.
...
For mmap mode, we can avoid allocating and copying strings from the
mmap'ed memory.
With that we have fixed length "struct index_mm_value" that can be
allocated inline with "struct index_mm_node".
2011-12-10 13:04:43 -02:00
Gustavo Sverzut Barbieri
148226ed92
index: cleanup header, move as much as possible to libkmod-index.c
2011-12-10 11:53:51 -02:00
Gustavo Sverzut Barbieri
15c1c143f2
index-mm: no need to allocate prefix.
2011-12-10 11:44:31 -02:00
Gustavo Sverzut Barbieri
fc2d835df5
index-mm: fix memory access.
...
uint32_t reads must be aligned, they're not then use memcpy().
read_alloc_chars_mm() and read_chars_mm() were wrong, normalize all
address calculation using single byte pointer "addr" that is
incremented by the amount read, this will avoid further errors.
2011-12-10 11:36:35 -02:00
Gustavo Sverzut Barbieri
79d57fcb29
kmod_load_resources: use proper full path to binary files to be mmaped.
2011-12-10 10:27:27 -02:00
Gustavo Sverzut Barbieri
3e245be100
kmod_lookup_alias_from_alias_bin: debug message for mmap case.
2011-12-10 09:28:42 -02:00
Gustavo Sverzut Barbieri
85132101e4
kmod_search_moddep: reorder to avoid creating path when not required.
...
if we're using mmap'ed index, say so and avoid creating the path as it
won't be used.
2011-12-10 09:26:27 -02:00
Gustavo Sverzut Barbieri
3b2099595b
fix snprintf usage.
...
snprintf() takes the full buffer size, including \0 and guarantees it
will be there.
2011-12-10 09:21:03 -02:00
Lucas De Marchi
65a84f5591
Use alias/symbol index_mm if it's open
2011-12-09 16:11:42 -02:00
Lucas De Marchi
810803dbe8
Pass enum around instead of filename
...
This will allow us to later use the index to search these indexes.
2011-12-09 16:07:33 -02:00
Lucas De Marchi
d65d71ceff
Use index_mm if it's open for moddep search
2011-12-09 15:55:30 -02:00
Lucas De Marchi
4272d08780
Do not allocate path for known places an close resource asap
...
This place is not supposed to exceed PATH_MAX. So, use snprintf instead
of asprintf.
Close the index before iterating the values.
2011-12-09 15:45:55 -02:00
Lucas De Marchi
33bb69b943
Load and unload resources
...
This call will mmap all the index files and in future some of the work
done in ctx creation can be put here.
2011-12-08 19:51:06 -02:00
Lucas De Marchi
5109f2b422
index: mm: Add flag to open call to populate buffer
2011-12-08 19:51:06 -02:00
Lucas De Marchi
a4a750297d
Refactor index file handling
...
Put all names in a static vector and declare a enum containing the
number of indexes. This way it's easier to create vectors inside ctx
that depend on these files.
2011-12-08 19:51:06 -02:00
Gustavo Sverzut Barbieri
558b020704
remove useless look checking for duplicates
2011-12-08 16:36:48 -02:00
Gustavo Sverzut Barbieri
1433ba9ef5
index: avoid strlen() whenever possible.
2011-12-08 16:35:36 -02:00
Gustavo Sverzut Barbieri
435ad788e2
reduce calls to realloc() if size did not change.
2011-12-08 16:35:36 -02:00
Gustavo Sverzut Barbieri
405f614af9
index: improve buffer management and reduce mallocs.
...
Grow buffer based on a step, avoiding hitting the system over and over
again.
Do not allocate the 'struct buffer' as in all cases the lifetime is
known and the pattern was allocate then free in every call site.
2011-12-08 14:38:22 -02:00
Gustavo Sverzut Barbieri
e18ad35c64
fix path handling at dependencies parsing.
...
paths come relative to dirname, make them absolute to avoid confusion
later.
2011-12-08 14:12:39 -02:00
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
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
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
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
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
8f923be69a
index: change license to LGPL
...
I've got an explicit permit from index author to re-license it as LGPL.
2011-12-03 04:30:16 -02:00
Lucas De Marchi
5a7ade7191
index: update copyrignt
...
mmap implementation
2011-12-03 04:07:16 -02:00
Lucas De Marchi
bf89f70ca3
index: mmap: add support for seaching with wildcards
...
Almost a clean copy & paste from the previous implementation.
2011-12-03 04:07:16 -02:00
Lucas De Marchi
b797b79183
index: mmap: add support for searching
...
Almost a clean copy & paste from the previous implementation.
2011-12-03 04:07:16 -02:00
Lucas De Marchi
e33bb87cae
index: mmap: add support for searching node
...
Almost a clean copy & paste from the previous implementation.
2011-12-03 04:07:16 -02:00
Lucas De Marchi
91298dc79e
index: mmap: read child node
2011-12-03 04:07:15 -02:00
Lucas De Marchi
77bf936a89
index: mmap: read root node
2011-12-03 04:07:15 -02:00
Lucas De Marchi
836be9ac5f
index: mmap: create and destroy node
2011-12-03 04:07:15 -02:00
Lucas De Marchi
e22c85f357
Add memdup() helper
2011-12-03 04:07:15 -02:00
Lucas De Marchi
b471a6b494
index: mmap: open and close file
2011-12-03 04:06:16 -02:00
Lucas De Marchi
4a4876d6a7
index: use idx instead of index due to name clash
2011-12-03 04:06:16 -02:00
Lucas De Marchi
2295acc5da
Fix some coding style issues
2011-12-03 04:05:22 -02:00
Gustavo Sverzut Barbieri
d13e606ff6
improve kmod_config api.
...
make the function names reflect the structure they are operating on.
the structure is now allocated and remembers the context it was
created, then no need to give the context in every function call.
2011-12-03 03:56:57 -02:00
Gustavo Sverzut Barbieri
8d3f3ef815
reorder struct fields to avoid holes, improving packing
2011-12-03 03:56:02 -02:00
Lucas De Marchi
ad5555b272
Fix extra attribute
...
linenum can be NULL in case we are not interested in the number of lines
parsed.
2011-12-03 03:53:10 -02:00
Gustavo Sverzut Barbieri
12d9419d08
improve compiler warnings and checks for internal functions.
2011-12-03 03:52:35 -02:00