Lucas De Marchi [Tue, 20 Dec 2011 05:08:09 +0000 (03:08 -0200)]
Reduce ident by continuing early
Lucas De Marchi [Mon, 19 Dec 2011 20:07:37 +0000 (18:07 -0200)]
build-sys: remove unneeded _SOURCES vars
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 23:53:24 +0000 (21:53 -0200)]
elf: skip leading symbol dot in modversion.
Mimics module-init-tools's dump_modversions() that calls skip_dot()
to skip leading dots. This is required for PPC64.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 23:51:31 +0000 (21:51 -0200)]
elf: fix typo that resulted in invalid uint reads for big-endian platforms.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 20:31:15 +0000 (18:31 -0200)]
kmod-modinfo: -p (-F parm) shows also parmtype in Debian expected formatting.
debian expected formatting is:
name:description (type)
variants:
name:description
name: (type)
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 19:42:34 +0000 (17:42 -0200)]
elf: do not output empty strings.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 19:41:09 +0000 (17:41 -0200)]
kmod-modinfo: fix typo and output format.
* it's parm, not param (does not have the second 'a');
* output format requires ':' after the name.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 19:28:06 +0000 (17:28 -0200)]
kmod-modinfo: add missing short options.
Thanks to falconindy for testing.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 16:48:07 +0000 (14:48 -0200)]
Introduce kmod-modinfo.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 16:34:00 +0000 (14:34 -0200)]
elf: fix minimum file size calculation.
there is only a single file header, multiple sections.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 15:02:15 +0000 (13:02 -0200)]
kmod-modprobe: improve --help output.
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 14:45:22 +0000 (12:45 -0200)]
kmod-modprobe: implement --dump-modversions
Gustavo Sverzut Barbieri [Sun, 18 Dec 2011 03:25:06 +0000 (01:25 -0200)]
ELF: initial support for modinfo and strip of modversions and vermagic.
Needs testing, but should work.
Lucas De Marchi [Mon, 19 Dec 2011 16:36:23 +0000 (14:36 -0200)]
Fix debug message formatting
Gustavo Sverzut Barbieri [Mon, 19 Dec 2011 13:37:08 +0000 (11:37 -0200)]
TODO: add idea about single file with all compressed modules.
Lucas De Marchi [Mon, 19 Dec 2011 04:26:34 +0000 (02:26 -0200)]
kmod_modprobe: properly handle install/remove commands
Handle install/remove commands just like modprobe does. Test configure
file:
install installme echo "this is a install message"
remove removeme echo "this is a remove message"
Tests:
$ ./tools/kmod-modprobe installme
this is a install message
$ ./tools/kmod-modprobe -r removeme
this is a remove message
$ ./tools/kmod-modprobe removeme
FATAL: Module removeme not found.
./tools/kmod-modprobe -r installme
FATAL: Module installme not found.
Lucas De Marchi [Mon, 19 Dec 2011 04:18:14 +0000 (02:18 -0200)]
kmod_modprobe: fix handling of remove commands
The check for remove/install commands must be before the ignore_loaded
check because we will actually run something instead of
removing/inserting a module and the modname might not correspond to a
real module. Otherwise a fake module like "remove removeme echo 'bla'"
would not work.
This also keeps compatibility with modprobe.
Lucas De Marchi [Sun, 18 Dec 2011 17:12:19 +0000 (15:12 -0200)]
Fix wrong name len when converting path to modname
Lucas De Marchi [Sun, 18 Dec 2011 03:35:30 +0000 (01:35 -0200)]
Fix leak of kmod_module
Gustavo Sverzut Barbieri [Sat, 17 Dec 2011 00:43:04 +0000 (22:43 -0200)]
compatibility: match commands using fnmatch() instead of strcmp().
module-init-tools modprobe.c use fnmatch() and not strcmp() to match
commands and softdeps, although the man page does not say so. Then use
the same function to provide compatibility.
Gustavo Sverzut Barbieri [Sat, 17 Dec 2011 00:35:28 +0000 (22:35 -0200)]
kmod-modprobe: implement softdeps.
Implement soft dependencies in a way similar to module-init-tools
modprobe. Unlike regular dependencies they are allowed to fail
inserting or removing.
The rmmod version walks the lists in reverse order, also doing post
before and pre later.
Gustavo Sverzut Barbieri [Sat, 17 Dec 2011 00:33:08 +0000 (22:33 -0200)]
introduce kmod_list_foreach_reverse().
walks the list in the reverse order.
Lucas De Marchi [Sat, 17 Dec 2011 22:03:13 +0000 (20:03 -0200)]
Use tab instead of spaces
Gustavo Sverzut Barbieri [Sat, 17 Dec 2011 00:32:33 +0000 (22:32 -0200)]
introduce kmod_list_last()
This gets the last element in the list, that is, the previous element
of the head.
Gustavo Sverzut Barbieri [Sat, 17 Dec 2011 00:27:02 +0000 (22:27 -0200)]
fix kmod_list_prev().
kmod_list_prev() should return NULL if the current element is the
head, not if the previous element is the head. This was likely a copy
& paste error from kmod_list_next().
Gustavo Sverzut Barbieri [Fri, 16 Dec 2011 23:18:10 +0000 (21:18 -0200)]
implement softdeps.
Gustavo Sverzut Barbieri [Fri, 16 Dec 2011 18:17:50 +0000 (16:17 -0200)]
fix error handling path.
Gustavo Sverzut Barbieri [Fri, 16 Dec 2011 18:08:53 +0000 (16:08 -0200)]
implement zlib module loading.
Lucas De Marchi [Fri, 16 Dec 2011 05:57:12 +0000 (03:57 -0200)]
Lookup for commands in kmod_module_new_from_lookup()
Install and remove commands are now properly treated on lookup. Example
config file:
$ ./test/test-lookup installme
libkmod version 1
Alias: 'installme'
Modules matching:
installme
install commands: 'echo "this is a install message"'
$ ./test/test-lookup removeme
libkmod version 1
Alias: 'removeme'
Modules matching:
removeme
remove commands: 'echo "this is a remove message"'
Lucas De Marchi [Fri, 16 Dec 2011 05:33:26 +0000 (03:33 -0200)]
kmod_module: do not find more than the first command
modprobe from module-init-tools does not use more than one
install/remove command, it just stops on the first one. Test
modprobe.conf:
install bla echo "this is a message"
install bla echo "this is a message"
$ modprobe bla
this is a message
$
Install and remove commands are already a legacy thing we need to carry,
but let's not extend it so people do not start doing crazy things.
With this patch we are breaking on the first element we find in the
configuration. May be we can add a warning later when parsing the config
that install commands are duplicated.
Cristian Rodríguez [Fri, 16 Dec 2011 17:46:52 +0000 (14:46 -0300)]
Open more file descriptors with O_CLOEXEC
Cristian Rodríguez [Fri, 16 Dec 2011 05:49:54 +0000 (02:49 -0300)]
Library must use O_CLOEXEC whenever it opens file descriptors
Lucas De Marchi [Fri, 16 Dec 2011 06:11:25 +0000 (04:11 -0200)]
Add address of mailing list
Lucas De Marchi [Fri, 16 Dec 2011 04:58:48 +0000 (02:58 -0200)]
tools: fix kmod-modprobe -R trying to insert module
Lucas De Marchi [Fri, 16 Dec 2011 04:02:58 +0000 (02:02 -0200)]
TODO: add new tasks and notes to future development
Ulisses Furquim [Thu, 15 Dec 2011 21:17:49 +0000 (19:17 -0200)]
trivial: fix typo causing an infinite loop
Lucas De Marchi [Thu, 15 Dec 2011 17:43:58 +0000 (15:43 -0200)]
kmod 1
Lucas De Marchi [Thu, 15 Dec 2011 17:37:41 +0000 (15:37 -0200)]
Add libkmod files to EXTRA_DIST
Lucas De Marchi [Thu, 15 Dec 2011 15:43:22 +0000 (13:43 -0200)]
Remove module from hash when it's gone
Module was never being removed from hash table. Therefore, if we create
a module, unref it and create it again we will access freed memory.
Commit "53385cf Improve test of double references" introduced a new test
in test-mod-double-ref.c that previously to this commit was crashing and
now it's working fine.
Lucas De Marchi [Thu, 15 Dec 2011 15:42:54 +0000 (13:42 -0200)]
Improve test of double references
Lucas De Marchi [Thu, 15 Dec 2011 15:35:40 +0000 (13:35 -0200)]
Add safety NULL checks in exported functions
Lucas De Marchi [Thu, 15 Dec 2011 15:11:51 +0000 (13:11 -0200)]
Fix changing hash key after module is inserted in hash
The hash key is not copied so we can't change the string from:
modname/modalias
to:
modname'\0'modalias
in order to setup mod->name and mod->alias.
Now what we do is:
1) if name is in the form 'modname/modalias', the final struct
kmod_module will be:
struct kmod_module {
char *alias;------,
char *name;-----, |
char *hashkey;--|-|-,
} | | |
name <------------------' | |
alias <-------------------' |
hashkey <-------------------'
2) if name is in the simple form 'modname', then the final struct
kmod_module will be:
struct kmod_module {
char *alias;------> NULL
char *name;-----,
char *hashkey;--|---,
} | |
name <------------------*---'
Lucas De Marchi [Thu, 15 Dec 2011 15:09:46 +0000 (13:09 -0200)]
Fix docs with wrong function names
Lucas De Marchi [Thu, 15 Dec 2011 14:27:45 +0000 (12:27 -0200)]
Add comment in public header about flags not implemented
Lucas De Marchi [Thu, 15 Dec 2011 14:26:15 +0000 (12:26 -0200)]
Rename symbol group
Lucas De Marchi [Thu, 15 Dec 2011 14:15:31 +0000 (12:15 -0200)]
Remove flags that likely will not be used
Lucas De Marchi [Thu, 15 Dec 2011 14:14:43 +0000 (12:14 -0200)]
TODO: rephrase some tasks
Lucas De Marchi [Thu, 15 Dec 2011 02:43:54 +0000 (00:43 -0200)]
Add file with details regarding coding style
Lucas De Marchi [Wed, 14 Dec 2011 19:21:46 +0000 (17:21 -0200)]
Fix format of log message
Lucas De Marchi [Wed, 14 Dec 2011 19:19:19 +0000 (17:19 -0200)]
kmod_config: parse kernel command line for options and blacklist
Luis Felipe Strano Moraes [Wed, 14 Dec 2011 17:56:10 +0000 (15:56 -0200)]
Do not depend on AM_SILENT_RULES if it is not available.
Lucas De Marchi [Wed, 14 Dec 2011 17:21:10 +0000 (15:21 -0200)]
kmod_module: use 'modname/aliasname' as key for hash
1 alias may correspond to more than 1 module. This would cause a
conflict in the hash table when inserting a module there and bad things
could happen.
Now we use 'modname/aliasname' as key, '/aliasname' part being optional.
Internally kmod_module_new_from_alias() will setup a 'modname/aliasname'
string and pass to kmod_module_new_from_name() that will treat the case
with a '/' in the name.
User might call kmod_module_new_from_name() without any slashes, so the
key my not contain it.
Lucas De Marchi [Wed, 14 Dec 2011 17:05:03 +0000 (15:05 -0200)]
Use malloc + memset instead of calloc
Lucas De Marchi [Wed, 14 Dec 2011 16:02:28 +0000 (14:02 -0200)]
TODO: update tasks
Lucas De Marchi [Wed, 14 Dec 2011 14:10:02 +0000 (12:10 -0200)]
kmod_module: move function to the right section
Lucas De Marchi [Wed, 14 Dec 2011 14:07:37 +0000 (12:07 -0200)]
kmod_module: fix log message upon module removal
Lucas De Marchi [Wed, 14 Dec 2011 14:06:18 +0000 (12:06 -0200)]
kmod_module: add missing documentation
Lucas De Marchi [Wed, 14 Dec 2011 05:58:31 +0000 (03:58 -0200)]
Simplify kmod_load_resources()
We have a static vector of indexes. There's no need to check if they
have a suffix or if they are absolute, we just already know in advance
and there are no plans to change it.
Lucas De Marchi [Wed, 14 Dec 2011 05:53:43 +0000 (03:53 -0200)]
Log and break early if index is already open
Lucas De Marchi [Wed, 14 Dec 2011 05:44:38 +0000 (03:44 -0200)]
Update documentation
Lucas De Marchi [Tue, 13 Dec 2011 16:25:29 +0000 (14:25 -0200)]
Remove function kmod_resolve_alias_options()
Remove function kmod_resolve_alias_options since it's not needed
anymore. Test is using the following configuration file:
alias blablabla ac
options ac test=1
options blablabla test=2
Lookup test by module name:
$ ./test/test-lookup ac
libkmod version 1
Alias: 'ac'
Modules matching:
ac
options: 'test=1'
Lookup test by alias:
$ ./test/test-lookup blablabla
libkmod version 1
Alias: 'blablabla'
Modules matching:
ac
options: 'test=1 test=2'
Lucas De Marchi [Tue, 13 Dec 2011 16:21:24 +0000 (14:21 -0200)]
kmod_module: make get_options() search for alias names too
Lucas De Marchi [Tue, 13 Dec 2011 16:20:48 +0000 (14:20 -0200)]
Create module by alias name where appropriate
Lucas De Marchi [Tue, 13 Dec 2011 16:12:50 +0000 (14:12 -0200)]
Add private function kmod_module_new_from_alias()
This function will create a new kmod_module() by calling
kmod_module_new_from_name(), but instead of given the module name, it
gives the alias. This way, the modules' hash will contain the alias
instead of the name. If module was created successfully, then it swap
the alias with the actual name.
The downside is that the structure is not shared anymore if we create a
kmod_module by alias and after by name. However, in modprobe's
configuration it's possible to have different options for different
aliases. In future we might want to create a way to share the common
part of the structure (then having only one instance as we had before).
Lucas De Marchi [Tue, 13 Dec 2011 15:07:40 +0000 (13:07 -0200)]
kmod_module: use pointer instead of vector for its name
We still have name allocated just after the struct kmod_module, but
now we use a pointer instead of putting name as a vector in the end of
the structure.
The previous way has some problems, the worst is:
- it's not possible to swap the name with another value: this is
the real problem that this patch is solving. Later patches
will make name be swappable with alias, which is not possible
if name is a vector.
Lucas De Marchi [Tue, 13 Dec 2011 12:48:49 +0000 (10:48 -0200)]
Return early on lookup error
There's no reason to keep looking for options if alias didn't match.
Lucas De Marchi [Tue, 13 Dec 2011 12:28:00 +0000 (10:28 -0200)]
Use alias_normalize() instead of modname_normalize()
When normalizing alias names (or if we don't know if it's an alias or
modname), use alias_normalize() instead of modname_normalize(). The
difference is that alias names can contain dashes withing brackets, and
those should not be changed to underscores.
Most of the places using underscores() function might be converted to
alias_normalize(), but this is not done now.
Lucas De Marchi [Tue, 13 Dec 2011 12:24:22 +0000 (10:24 -0200)]
Add helper alias_normalize()
Lucas De Marchi [Tue, 13 Dec 2011 12:26:04 +0000 (10:26 -0200)]
Fix check for NULL variable
Lucas De Marchi [Mon, 12 Dec 2011 20:41:57 +0000 (18:41 -0200)]
Fix "Dereference of null pointer" as reported by llvm
Lucas De Marchi [Mon, 12 Dec 2011 20:36:27 +0000 (18:36 -0200)]
Fix "Dead assignments" as reported by llvm
Gustavo Sverzut Barbieri [Mon, 12 Dec 2011 20:28:52 +0000 (18:28 -0200)]
handle case where modname was not detected.
Lucas De Marchi [Mon, 12 Dec 2011 20:24:35 +0000 (18:24 -0200)]
Change licenses
libkmod is under LGPL 2.1 or later
tools/* are under GPL
Lucas De Marchi [Mon, 12 Dec 2011 19:26:47 +0000 (17:26 -0200)]
build-sys: enable debug by default in autogen.sh
Lucas De Marchi [Mon, 12 Dec 2011 19:23:19 +0000 (17:23 -0200)]
build-sys: Set CFLAGS to "-O2 -Werror" in autogen.sh
Lucas De Marchi [Mon, 12 Dec 2011 19:23:04 +0000 (17:23 -0200)]
Remove warnings: ‘err’ may be used uninitialized in this function
Lucas De Marchi [Mon, 12 Dec 2011 19:05:23 +0000 (17:05 -0200)]
build-sys: add version map file to build dependencies
Based on original patch from Jan Engelhardt <jengelh@medozas.de> to
libabc.
Lucas De Marchi [Mon, 12 Dec 2011 18:41:38 +0000 (16:41 -0200)]
Rename project from libkmod to kmod
Lucas De Marchi [Mon, 12 Dec 2011 17:41:02 +0000 (15:41 -0200)]
Do not use config if it's not needed/wanted
Lucas De Marchi [Mon, 12 Dec 2011 17:27:57 +0000 (15:27 -0200)]
Use true/false for bool return
Lucas De Marchi [Mon, 12 Dec 2011 17:23:03 +0000 (15:23 -0200)]
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.
Lucas De Marchi [Mon, 12 Dec 2011 17:00:51 +0000 (15:00 -0200)]
Do not stat() dir twice
Lucas De Marchi [Mon, 12 Dec 2011 16:26:45 +0000 (14:26 -0200)]
Fix leak of DIR
Lucas De Marchi [Mon, 12 Dec 2011 16:01:25 +0000 (14:01 -0200)]
Remove leftover comment
mod->path is always absolute: remove comment from previous behavior.
Lucas De Marchi [Mon, 12 Dec 2011 15:56:47 +0000 (13:56 -0200)]
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.
Lucas De Marchi [Mon, 12 Dec 2011 15:49:27 +0000 (13:49 -0200)]
Rename kmod_loaded_get_list() to kmod_module_new_from_loaded()
Be consistent with other similar functions already present and improve
documentation.
Lucas De Marchi [Mon, 12 Dec 2011 15:39:07 +0000 (13:39 -0200)]
build-sys: replace spaces with tabs
Lucas De Marchi [Mon, 12 Dec 2011 15:37:13 +0000 (13:37 -0200)]
build-sys: move remaining warning flags to configure
Lucas De Marchi [Mon, 12 Dec 2011 15:26:34 +0000 (13:26 -0200)]
build-sys: remove duplicated warning flags
"822ce23 beef compile flags" added warning flags to configure, but some
of them were already present in autogen.sh. Remove the flags from
autogen.sh.
Lucas De Marchi [Mon, 12 Dec 2011 13:52:59 +0000 (11:52 -0200)]
coding style: be consistent with blank lines
Lucas De Marchi [Mon, 12 Dec 2011 12:48:02 +0000 (10:48 -0200)]
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
Lucas De Marchi [Mon, 12 Dec 2011 12:30:01 +0000 (10:30 -0200)]
Merge branch 'use-mmap'
Conflicts:
libkmod/libkmod.c
Gustavo Sverzut Barbieri [Sun, 11 Dec 2011 22:37:01 +0000 (20:37 -0200)]
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.
Gustavo Sverzut Barbieri [Sun, 11 Dec 2011 21:36:18 +0000 (19:36 -0200)]
tools: add modprobe
try to mimic original module-init-tools' modprobe as much as possible,
but this exposed some missing features in libkmod, these are now
listed in TODO.
Gustavo Sverzut Barbieri [Sun, 11 Dec 2011 00:19:41 +0000 (22:19 -0200)]
add lsmod, insmod and rmmod tools.
these tools are compatible with module-init-tools (except insmod does
not take data from stdin).
Gustavo Sverzut Barbieri [Sun, 11 Dec 2011 21:42:02 +0000 (19:42 -0200)]
add missing newline to log messages.
Gustavo Sverzut Barbieri [Sun, 11 Dec 2011 21:33:03 +0000 (19:33 -0200)]
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
Gustavo Sverzut Barbieri [Sun, 11 Dec 2011 00:26:40 +0000 (22:26 -0200)]
beef compile flags.
Beef the compile flags by using the same set recommended by systemd,
it uses attribute.m4 from the xine project to check supported flags.
Gustavo Sverzut Barbieri [Sat, 10 Dec 2011 23:02:39 +0000 (21:02 -0200)]
insmod: allows providing option to module.
Gustavo Sverzut Barbieri [Sat, 10 Dec 2011 23:00:19 +0000 (21:00 -0200)]
always normalize user-given alias.