mirror of
https://github.com/AuxXxilium/kmod.git
synced 2025-03-11 17:31:01 +07:00
modprobe: show if module is in kernel
Now with './tools/modprobe --show-depends ahci' (ahci is builtin) we have the following output: $ ./tools/modprobe --show-depends ahci builtin ahci Just like modprobe from m-i-t. Previously we had: $ ./tools/modprobe --show-depends ahci FATAL: Module ahci not found.
This commit is contained in:
parent
efd2cec66e
commit
92122614b2
16
TODO
16
TODO
@ -19,8 +19,16 @@ Features:
|
||||
* provide 1:1 compatibility with module-init-tools's modprobe
|
||||
- dump configuration
|
||||
- deal with dependency loop
|
||||
- break dependency loop when all it needs is to check if the module is
|
||||
already loaded
|
||||
- fix dependency listing in --show-depends
|
||||
$ modprobe -S 3.2.0-2-ARCH --show-depends ahci
|
||||
insmod /lib/modules/3.2.0-2-ARCH/kernel/drivers/scsi/scsi_mod.ko.gz
|
||||
insmod /lib/modules/3.2.0-2-ARCH/kernel/drivers/scsi/scsi_mod.ko.gz
|
||||
insmod /lib/modules/3.2.0-2-ARCH/kernel/drivers/ata/libata.ko.gz
|
||||
insmod /lib/modules/3.2.0-2-ARCH/kernel/drivers/scsi/scsi_mod.ko.gz
|
||||
insmod /lib/modules/3.2.0-2-ARCH/kernel/drivers/scsi/scsi_mod.ko.gz
|
||||
insmod /lib/modules/3.2.0-2-ARCH/kernel/drivers/ata/libata.ko.gz
|
||||
insmod /lib/modules/3.2.0-2-ARCH/kernel/drivers/ata/libahci.ko.gz
|
||||
insmod /lib/modules/3.2.0-2-ARCH/kernel/drivers/ata/ahci.ko.gz
|
||||
|
||||
* Add manpages: copy them from module-init-tools and make the necessary changes
|
||||
|
||||
@ -84,6 +92,10 @@ modprobe
|
||||
* 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.
|
||||
|
||||
depmod
|
||||
------
|
||||
|
||||
|
@ -869,6 +869,34 @@ static int insmod_path(struct kmod_ctx *ctx, const char *path,
|
||||
return err;
|
||||
}
|
||||
|
||||
static int handle_failed_lookup(struct kmod_ctx *ctx, const char *alias)
|
||||
{
|
||||
struct kmod_module *mod;
|
||||
int state, err;
|
||||
|
||||
DBG("lookup failed - trying to check if it's builtin\n");
|
||||
|
||||
err = kmod_module_new_from_name(ctx, alias, &mod);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
state = kmod_module_get_initstate(mod);
|
||||
kmod_module_unref(mod);
|
||||
|
||||
if (state != KMOD_MODULE_BUILTIN) {
|
||||
LOG("Module %s not found.\n", alias);
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
if (first_time) {
|
||||
LOG("Module %s already in kernel (builtin).\n", alias);
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
SHOW("builtin %s\n", alias);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int insmod_alias(struct kmod_ctx *ctx, const char *alias,
|
||||
const char *extra_options)
|
||||
{
|
||||
@ -879,10 +907,8 @@ static int insmod_alias(struct kmod_ctx *ctx, const char *alias,
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
if (list == NULL) {
|
||||
LOG("Module %s not found.\n", alias);
|
||||
return -ENOENT;
|
||||
}
|
||||
if (list == NULL)
|
||||
return handle_failed_lookup(ctx, alias);
|
||||
|
||||
if (use_blacklist) {
|
||||
struct kmod_list *filtered = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user