modprobe: read modules.builtin
No binary (build failed)
—
(log yok)
| @@ -171,6 +171,7 @@ static const char modprobe_longopts[] ALIGN1 = | |
| /* "was seen in modules.dep": */ | |
| #define MODULE_FLAG_FOUND_IN_MODDEP 0x0004 | |
| #define MODULE_FLAG_BLACKLISTED 0x0008 | |
| + | #define MODULE_FLAG_BUILTIN 0x0010 |
| struct globals { | |
| llist_t *probes; /* MEs of module(s) requested on cmdline */ | |
| @@ -217,7 +218,7 @@ static void add_probe(const char *name) | |
| m = get_or_add_modentry(name); | |
| if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS)) | |
| - | && (m->flags & MODULE_FLAG_LOADED) |
| + | && (m->flags & (MODULE_FLAG_LOADED | MODULE_FLAG_BUILTIN)) |
| ) { | |
| DBG("skipping %s, it is already loaded", name); | |
| return; | |
| @@ -413,8 +414,10 @@ static int do_modprobe(struct module_entry *m) | |
| if (!(m->flags & MODULE_FLAG_FOUND_IN_MODDEP)) { | |
| if (!(option_mask32 & INSMOD_OPT_SILENT)) | |
| - | bb_error_msg("module %s not found in modules.dep", |
| - | humanly_readable_name(m)); |
| + | bb_error_msg((m->flags & MODULE_FLAG_BUILTIN) ? |
| + | "module %s is builtin" : |
| + | "module %s not found in modules.dep", |
| + | humanly_readable_name(m)); |
| return -ENOENT; | |
| } | |
| DBG("do_modprob'ing %s", m->modname); | |
| @@ -618,6 +621,11 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) | |
| while (config_read(parser, &s, 1, 1, "# \t", PARSE_NORMAL & ~PARSE_GREEDY)) | |
| get_or_add_modentry(s)->flags |= MODULE_FLAG_LOADED; | |
| config_close(parser); | |
| + | |
| + | parser = config_open2("modules.builtin", fopen_for_read); |
| + | while (config_read(parser, &s, 1, 1, "# \t", PARSE_NORMAL)) |
| + | get_or_add_modentry(s)->flags |= MODULE_FLAG_BUILTIN; |
| + | config_close(parser); |
| } | |
| if (opt & (OPT_INSERT_ALL | OPT_REMOVE)) { | |