Lines Matching +full:builtin +full:- +full:modules
2 * libkmod - interface to kernel module operations
4 * Copyright (C) 2011-2013 ProFUSION embedded systems
45 #include "libkmod-internal.h"
48 * SECTION:libkmod-module
49 * @short_description: operate on kernel modules
84 * mark if module is builtin, i.e. it's present on modules.builtin
86 * about it, i.e. the module was created from builtin lookup.
88 enum kmod_module_builtin builtin; member
139 struct kmod_ctx *ctx = mod->ctx; in kmod_module_parse_depline()
147 if (mod->init.dep) in kmod_module_parse_depline()
148 return mod->n_dep; in kmod_module_parse_depline()
149 assert(mod->dep == NULL); in kmod_module_parse_depline()
150 mod->init.dep = true; in kmod_module_parse_depline()
157 dirname = kmod_get_dirname(mod->ctx); in kmod_module_parse_depline()
167 if (mod->path == NULL) { in kmod_module_parse_depline()
171 mod->path = strdup(str); in kmod_module_parse_depline()
172 if (mod->path == NULL) in kmod_module_parse_depline()
192 ctx, path, strerror(-err)); in kmod_module_parse_depline()
202 DBG(ctx, "%d dependencies for %s\n", n, mod->name); in kmod_module_parse_depline()
204 mod->dep = list; in kmod_module_parse_depline()
205 mod->n_dep = n; in kmod_module_parse_depline()
210 mod->init.dep = false; in kmod_module_parse_depline()
216 mod->visited = visited; in kmod_module_set_visited()
219 void kmod_module_set_builtin(struct kmod_module *mod, bool builtin) in kmod_module_set_builtin() argument
221 mod->builtin = in kmod_module_set_builtin()
222 builtin ? KMOD_MODULE_BUILTIN_YES : KMOD_MODULE_BUILTIN_NO; in kmod_module_set_builtin()
227 mod->required = required; in kmod_module_set_required()
232 if (mod->builtin == KMOD_MODULE_BUILTIN_UNKNOWN) { in kmod_module_is_builtin()
234 kmod_lookup_alias_is_builtin(mod->ctx, mod->name)); in kmod_module_is_builtin()
237 return mod->builtin == KMOD_MODULE_BUILTIN_YES; in kmod_module_is_builtin()
243 * hashkey -----.
244 * alias -----. |
245 * name ----. | |
247 * name <----------' | |
248 * alias <-----------' |
249 * name\alias <--------'
254 * hashkey ---.
255 * alias -----|----> NULL
256 * name ----. |
258 * name <----------'-'
283 return -ENOMEM; in kmod_module_new()
287 m->ctx = kmod_ref(ctx); in kmod_module_new()
288 m->name = (char *)m + sizeof(*m); in kmod_module_new()
289 memcpy(m->name, key, keylen + 1); in kmod_module_new()
291 m->hashkey = m->name; in kmod_module_new()
292 m->alias = NULL; in kmod_module_new()
294 m->name[namelen] = '\0'; in kmod_module_new()
295 m->alias = m->name + namelen + 1; in kmod_module_new()
296 m->hashkey = m->name + keylen + 1; in kmod_module_new()
297 memcpy(m->hashkey, key, keylen + 1); in kmod_module_new()
300 m->refcount = 1; in kmod_module_new()
301 kmod_pool_add_module(ctx, m, m->hashkey); in kmod_module_new()
318 * struct kmod_module or a new list of modules.
337 return -ENOENT; in kmod_module_new_from_name()
353 return -ENAMETOOLONG; in kmod_module_new_from_alias()
399 return -ENOENT; in kmod_module_new_from_path()
404 return -ENOMEM; in kmod_module_new_from_path()
409 err = -errno; in kmod_module_new_from_path()
418 return -ENOENT; in kmod_module_new_from_path()
423 if (m->path == NULL) in kmod_module_new_from_path()
424 m->path = abspath; in kmod_module_new_from_path()
425 else if (streq(m->path, abspath)) in kmod_module_new_from_path()
428 ERR(ctx, "kmod_module '%s' already exists with different path: new-path='%s' old-path='%s'\n", in kmod_module_new_from_path()
429 name, abspath, m->path); in kmod_module_new_from_path()
431 return -EEXIST; in kmod_module_new_from_path()
442 m->path = abspath; in kmod_module_new_from_path()
445 m->builtin = KMOD_MODULE_BUILTIN_NO; in kmod_module_new_from_path()
466 if (--mod->refcount > 0) in kmod_module_unref()
469 DBG(mod->ctx, "kmod_module %p released\n", mod); in kmod_module_unref()
471 kmod_pool_del_module(mod->ctx, mod, mod->hashkey); in kmod_module_unref()
472 kmod_module_unref_list(mod->dep); in kmod_module_unref()
474 if (mod->file) in kmod_module_unref()
475 kmod_file_unref(mod->file); in kmod_module_unref()
477 kmod_unref(mod->ctx); in kmod_module_unref()
478 free(mod->options); in kmod_module_unref()
479 free(mod->path); in kmod_module_unref()
497 mod->refcount++; in kmod_module_ref()
514 if (err < 0 && err != -ENOSYS) in __kmod_module_new_from_lookup()
527 * @list: an empty list where to save the list of modules matching
530 * Create a new list of kmod modules using an alias or module name and lookup
533 * list of modules that is saved in @list.
536 * modules.dep index; 3. symbol aliases in modules.symbols index; 4. aliases
537 * from install commands; 5. builtin indexes from kernel.
567 return -ENOENT; in kmod_module_new_from_lookup()
571 return -ENOSYS; in kmod_module_new_from_lookup()
576 return -EINVAL; in kmod_module_new_from_lookup()
605 * The search order is: 1. module names in modules.dep index;
606 * 2. builtin indexes from kernel.
632 return -ENOENT; in kmod_module_new_from_name_lookup()
653 * @list: list of kmod modules
663 kmod_module_unref(list->data); in kmod_module_unref_list()
691 if (!mod->init.dep) { in module_get_dependencies_noref()
693 char *line = kmod_search_moddep(mod->ctx, mod->name); in module_get_dependencies_noref()
701 if (!mod->init.dep) in module_get_dependencies_noref()
705 return mod->dep; in module_get_dependencies_noref()
712 * Search the modules.dep index to find the dependencies of the given @mod.
714 * return the already searched list of modules.
716 * Returns: NULL on failure. Otherwise it returns a list of kmod modules
728 kmod_list_foreach(l, mod->dep) { in kmod_module_get_dependencies()
729 l_new = kmod_list_append(list_new, kmod_module_ref(l->data)); in kmod_module_get_dependencies()
731 kmod_module_unref(l->data); in kmod_module_get_dependencies()
741 ERR(mod->ctx, "out of memory\n"); in kmod_module_get_dependencies()
748 * @entry: an entry in a list of kmod modules.
753 * modules.
763 return kmod_module_ref(entry->data); in kmod_module_get_module()
781 return mod->name; in kmod_module_get_name()
789 * path, it can search the modules.dep index in order to find out the module
802 DBG(mod->ctx, "name='%s' path='%s'\n", mod->name, mod->path); in kmod_module_get_path()
804 if (mod->path != NULL) in kmod_module_get_path()
805 return mod->path; in kmod_module_get_path()
806 if (mod->init.dep) in kmod_module_get_path()
810 line = kmod_search_moddep(mod->ctx, mod->name); in kmod_module_get_path()
817 return mod->path; in kmod_module_get_path()
846 return -ENOENT; in kmod_module_remove_module()
852 err = delete_module(mod->name, flags); in kmod_module_remove_module()
854 err = -errno; in kmod_module_remove_module()
856 ERR(mod->ctx, "could not remove '%s': %m\n", mod->name); in kmod_module_remove_module()
877 * returns -EEXIST.
891 return -ENOENT; in kmod_module_insert_module()
895 ERR(mod->ctx, "could not find module by name='%s'\n", mod->name); in kmod_module_insert_module()
896 return -ENOENT; in kmod_module_insert_module()
899 if (!mod->file) { in kmod_module_insert_module()
900 mod->file = kmod_file_open(mod->ctx, path); in kmod_module_insert_module()
901 if (mod->file == NULL) { in kmod_module_insert_module()
902 err = -errno; in kmod_module_insert_module()
907 if (kmod_file_get_direct(mod->file)) { in kmod_module_insert_module()
915 err = finit_module(kmod_file_get_fd(mod->file), args, kernel_flags); in kmod_module_insert_module()
921 elf = kmod_file_get_elf(mod->file); in kmod_module_insert_module()
923 err = -errno; in kmod_module_insert_module()
930 INFO(mod->ctx, "Failed to strip modversion: %s\n", strerror(-err)); in kmod_module_insert_module()
936 INFO(mod->ctx, "Failed to strip vermagic: %s\n", strerror(-err)); in kmod_module_insert_module()
941 mem = kmod_file_get_contents(mod->file); in kmod_module_insert_module()
943 size = kmod_file_get_size(mod->file); in kmod_module_insert_module()
948 err = -errno; in kmod_module_insert_module()
949 INFO(mod->ctx, "Failed to insert module '%s': %m\n", path); in kmod_module_insert_module()
956 struct kmod_ctx *ctx = mod->ctx; in module_is_blacklisted()
958 const struct kmod_list *bl = config->blacklists; in module_is_blacklisted()
964 if (streq(modname, mod->name)) in module_is_blacklisted()
974 * @filter_type: bitmask to filter modules out, valid types are
975 * KMOD_FILTER_BLACKLIST: filter modules in blacklist out;
976 * KMOD_FILTER_BUILTIN: filter builtin modules out.
994 return -ENOENT; in kmod_module_apply_filter()
1001 struct kmod_module *mod = li->data; in kmod_module_apply_filter()
1025 return -ENOMEM; in kmod_module_apply_filter()
1034 DBG(mod->ctx, "%s %s\n", type, cmd); in command_do()
1040 if (err == -1) { in command_do()
1041 ERR(mod->ctx, "Could not run %s command '%s' for module %s: %m\n", in command_do()
1043 return -EINVAL; in command_do()
1047 ERR(mod->ctx, "Error running %s command '%s' for module %s: retcode %d\n", in command_do()
1049 return -EINVAL; in command_do()
1077 varlen = sizeof("$CMDLINE_OPTS") - 1; in module_do_install_commands()
1081 return -ENOMEM; in module_do_install_commands()
1084 size_t prefixlen = p - cmd; in module_do_install_commands()
1085 size_t suffixlen = cmdlen - prefixlen - varlen; in module_do_install_commands()
1086 size_t slen = cmdlen - varlen + options_len; in module_do_install_commands()
1090 return -ENOMEM; in module_do_install_commands()
1092 memcpy(s, cmd, p - cmd); in module_do_install_commands()
1102 if (cb->run_install != NULL) in module_do_install_commands()
1103 err = cb->run_install(mod, cmd, cb->data); in module_do_install_commands()
1141 /* re-entrant */
1150 ERR(mod->ctx, "could not get softdep: %s\n", in __kmod_module_fill_softdep()
1151 strerror(-err)); in __kmod_module_fill_softdep()
1156 struct kmod_module *m = l->data; in __kmod_module_fill_softdep()
1165 err = -ENOMEM; in __kmod_module_fill_softdep()
1169 mod->ignorecmd = (pre != NULL || post != NULL); in __kmod_module_fill_softdep()
1172 struct kmod_module *m = l->data; in __kmod_module_fill_softdep()
1185 /* re-entrant */
1194 if (mod->visited) { in __kmod_module_get_probe_list()
1195 DBG(mod->ctx, "Ignore module '%s': already visited\n", in __kmod_module_get_probe_list()
1196 mod->name); in __kmod_module_get_probe_list()
1199 mod->visited = true; in __kmod_module_get_probe_list()
1205 * ->required flag on mod and all its dependencies before in __kmod_module_get_probe_list()
1208 mod->required = true; in __kmod_module_get_probe_list()
1210 struct kmod_module *m = l->data; in __kmod_module_get_probe_list()
1211 m->required = true; in __kmod_module_get_probe_list()
1216 struct kmod_module *m = l->data; in __kmod_module_get_probe_list()
1226 err = -ENOMEM; in __kmod_module_get_probe_list()
1230 mod->ignorecmd = true; in __kmod_module_get_probe_list()
1251 kmod_set_modules_visited(mod->ctx, false); in kmod_module_get_probe_list()
1252 kmod_set_modules_required(mod->ctx, false); in kmod_module_get_probe_list()
1292 * output or in dry-run mode.
1319 return -ENOENT; in kmod_module_probe_insert_module()
1324 return -EEXIST; in kmod_module_probe_insert_module()
1335 if ((mod->alias != NULL && ((err = flags & KMOD_PROBE_APPLY_BLACKLIST_ALIAS_ONLY))) in kmod_module_probe_insert_module()
1350 err = kmod_module_apply_filter(mod->ctx, in kmod_module_probe_insert_module()
1366 struct kmod_module *m = l->data; in kmod_module_probe_insert_module()
1373 DBG(mod->ctx, "Ignoring module '%s': already loaded\n", in kmod_module_probe_insert_module()
1374 m->name); in kmod_module_probe_insert_module()
1375 err = -EEXIST; in kmod_module_probe_insert_module()
1382 if (cmd != NULL && !m->ignorecmd) { in kmod_module_probe_insert_module()
1411 if (err == -EEXIST && m == mod && in kmod_module_probe_insert_module()
1418 if (err == -EEXIST || !m->required) in kmod_module_probe_insert_module()
1445 if (!mod->init.options) { in kmod_module_get_options()
1453 config = kmod_get_config(mod->ctx); in kmod_module_get_options()
1455 kmod_list_foreach(l, config->options) { in kmod_module_get_options()
1461 DBG(mod->ctx, "modname=%s mod->name=%s mod->alias=%s\n", modname, mod->name, mod->alias); in kmod_module_get_options()
1462 if (!(streq(modname, mod->name) || (mod->alias != NULL && in kmod_module_get_options()
1463 streq(modname, mod->alias)))) in kmod_module_get_options()
1466 … DBG(mod->ctx, "passed = modname=%s mod->name=%s mod->alias=%s\n", modname, mod->name, mod->alias); in kmod_module_get_options()
1490 m->init.options = true; in kmod_module_get_options()
1491 m->options = opts; in kmod_module_get_options()
1494 return mod->options; in kmod_module_get_options()
1497 ERR(mod->ctx, "out of memory\n"); in kmod_module_get_options()
1520 if (!mod->init.install_commands) { in kmod_module_get_install_commands()
1526 config = kmod_get_config(mod->ctx); in kmod_module_get_install_commands()
1528 kmod_list_foreach(l, config->install_commands) { in kmod_module_get_install_commands()
1531 if (fnmatch(modname, mod->name, 0) != 0) in kmod_module_get_install_commands()
1534 m->install_commands = kmod_command_get_command(l); in kmod_module_get_install_commands()
1538 * module-init-tools does in kmod_module_get_install_commands()
1543 m->init.install_commands = true; in kmod_module_get_install_commands()
1546 return mod->install_commands; in kmod_module_get_install_commands()
1551 mod->init.install_commands = true; in kmod_module_set_install_commands()
1552 mod->install_commands = cmd; in kmod_module_set_install_commands()
1600 return -ENOENT; in kmod_module_get_softdeps()
1605 config = kmod_get_config(mod->ctx); in kmod_module_get_softdeps()
1607 kmod_list_foreach(l, config->softdeps) { in kmod_module_get_softdeps()
1612 if (fnmatch(modname, mod->name, 0) != 0) in kmod_module_get_softdeps()
1616 *pre = lookup_softdep(mod->ctx, array, count); in kmod_module_get_softdeps()
1618 *post = lookup_softdep(mod->ctx, array, count); in kmod_module_get_softdeps()
1622 * module-init-tools does in kmod_module_get_softdeps()
1649 if (!mod->init.remove_commands) { in kmod_module_get_remove_commands()
1655 config = kmod_get_config(mod->ctx); in kmod_module_get_remove_commands()
1657 kmod_list_foreach(l, config->remove_commands) { in kmod_module_get_remove_commands()
1660 if (fnmatch(modname, mod->name, 0) != 0) in kmod_module_get_remove_commands()
1663 m->remove_commands = kmod_command_get_command(l); in kmod_module_get_remove_commands()
1667 * module-init-tools does in kmod_module_get_remove_commands()
1672 m->init.remove_commands = true; in kmod_module_get_remove_commands()
1675 return mod->remove_commands; in kmod_module_get_remove_commands()
1680 mod->init.remove_commands = true; in kmod_module_set_remove_commands()
1681 mod->remove_commands = cmd; in kmod_module_set_remove_commands()
1685 * SECTION:libkmod-loaded
1686 * @short_description: currently loaded modules
1688 * Information about currently loaded modules, as reported by Linux kernel.
1690 * and /proc/modules.
1696 * @list: where to save the list of loaded modules
1698 * Create a new list of kmod modules with all modules currently loaded in
1699 * kernel. It uses /proc/modules to get the names of loaded modules and to
1700 * create kmod modules by calling kmod_module_new_from_name() in each of them.
1720 return -ENOENT; in kmod_module_new_from_loaded()
1722 fp = fopen("/proc/modules", "re"); in kmod_module_new_from_loaded()
1724 int err = -errno; in kmod_module_new_from_loaded()
1725 ERR(ctx, "could not open /proc/modules: %s\n", strerror(errno)); in kmod_module_new_from_loaded()
1739 name, strerror(-err)); in kmod_module_new_from_loaded()
1751 while (line[len - 1] != '\n' && fgets(line, sizeof(line), fp)) in kmod_module_new_from_loaded()
1774 return "builtin"; in kmod_module_initstate_str()
1794 * KMOD_MODULE_BUILTIN: module is builtin;
1805 return -ENOENT; in kmod_module_get_initstate()
1812 "/sys/module/%s/initstate", mod->name); in kmod_module_get_initstate()
1815 err = -errno; in kmod_module_get_initstate()
1817 DBG(mod->ctx, "could not open '%s': %s\n", in kmod_module_get_initstate()
1818 path, strerror(-err)); in kmod_module_get_initstate()
1820 if (pathlen > (int)sizeof("/initstate") - 1) { in kmod_module_get_initstate()
1822 path[pathlen - (sizeof("/initstate") - 1)] = '\0'; in kmod_module_get_initstate()
1827 DBG(mod->ctx, "could not open '%s': %s\n", in kmod_module_get_initstate()
1828 path, strerror(-err)); in kmod_module_get_initstate()
1835 ERR(mod->ctx, "could not read from '%s': %s\n", in kmod_module_get_initstate()
1836 path, strerror(-err)); in kmod_module_get_initstate()
1847 ERR(mod->ctx, "unknown %s: '%s'\n", path, buf); in kmod_module_get_initstate()
1848 return -EINVAL; in kmod_module_get_initstate()
1857 * kernels, this falls back on /proc/modules and searches for the specified
1867 long size = -ENOENT; in kmod_module_get_size()
1871 return -ENOENT; in kmod_module_get_size()
1877 snprintf(line, sizeof(line), "/sys/module/%s", mod->name); in kmod_module_get_size()
1880 return -errno; in kmod_module_get_size()
1886 ERR(mod->ctx, "failed to read coresize from %s\n", line); in kmod_module_get_size()
1891 /* fall back on parsing /proc/modules */ in kmod_module_get_size()
1892 fp = fopen("/proc/modules", "re"); in kmod_module_get_size()
1894 int err = -errno; in kmod_module_get_size()
1895 ERR(mod->ctx, in kmod_module_get_size()
1896 "could not open /proc/modules: %s\n", strerror(errno)); in kmod_module_get_size()
1907 if (tok == NULL || !streq(tok, mod->name)) in kmod_module_get_size()
1912 ERR(mod->ctx, in kmod_module_get_size()
1913 "invalid line format at /proc/modules:%d\n", lineno); in kmod_module_get_size()
1919 ERR(mod->ctx, in kmod_module_get_size()
1920 "invalid line format at /proc/modules:%d\n", lineno); in kmod_module_get_size()
1927 while (line[len - 1] != '\n' && fgets(line, sizeof(line), fp)) in kmod_module_get_size()
1953 return -ENOENT; in kmod_module_get_refcnt()
1955 snprintf(path, sizeof(path), "/sys/module/%s/refcnt", mod->name); in kmod_module_get_refcnt()
1958 err = -errno; in kmod_module_get_refcnt()
1959 DBG(mod->ctx, "could not open '%s': %s\n", in kmod_module_get_refcnt()
1967 ERR(mod->ctx, "could not read integer from '%s': '%s'\n", in kmod_module_get_refcnt()
1968 path, strerror(-err)); in kmod_module_get_refcnt()
1979 * Get a list of kmod modules that are holding this @mod, as returned by Linux
1982 * Returns: a new list of kmod modules on success or NULL on failure.
1991 if (mod == NULL || mod->ctx == NULL) in kmod_module_get_holders()
1994 snprintf(dname, sizeof(dname), "/sys/module/%s/holders", mod->name); in kmod_module_get_holders()
1998 ERR(mod->ctx, "could not open '%s': %s\n", in kmod_module_get_holders()
2008 if (dent->d_name[0] == '.') { in kmod_module_get_holders()
2009 if (dent->d_name[1] == '\0' || in kmod_module_get_holders()
2010 (dent->d_name[1] == '.' && dent->d_name[2] == '\0')) in kmod_module_get_holders()
2014 err = kmod_module_new_from_name(mod->ctx, dent->d_name, in kmod_module_get_holders()
2017 ERR(mod->ctx, "could not create module for '%s': %s\n", in kmod_module_get_holders()
2018 dent->d_name, strerror(-err)); in kmod_module_get_holders()
2026 ERR(mod->ctx, "out of memory\n"); in kmod_module_get_holders()
2075 snprintf(dname, sizeof(dname), "/sys/module/%s/sections", mod->name); in kmod_module_get_sections()
2079 ERR(mod->ctx, "could not open '%s': %s\n", in kmod_module_get_sections()
2093 if (dent->d_name[0] == '.') { in kmod_module_get_sections()
2094 if (dent->d_name[1] == '\0' || in kmod_module_get_sections()
2095 (dent->d_name[1] == '.' && dent->d_name[2] == '\0')) in kmod_module_get_sections()
2099 fd = openat(dfd, dent->d_name, O_RDONLY|O_CLOEXEC); in kmod_module_get_sections()
2101 ERR(mod->ctx, "could not open '%s/%s': %m\n", in kmod_module_get_sections()
2102 dname, dent->d_name); in kmod_module_get_sections()
2109 ERR(mod->ctx, "could not read long from '%s/%s': %m\n", in kmod_module_get_sections()
2110 dname, dent->d_name); in kmod_module_get_sections()
2114 namesz = strlen(dent->d_name) + 1; in kmod_module_get_sections()
2118 ERR(mod->ctx, "out of memory\n"); in kmod_module_get_sections()
2122 section->address = address; in kmod_module_get_sections()
2123 memcpy(section->name, dent->d_name, namesz); in kmod_module_get_sections()
2129 ERR(mod->ctx, "out of memory\n"); in kmod_module_get_sections()
2162 section = entry->data; in kmod_module_section_get_name()
2163 return section->name; in kmod_module_section_get_name()
2182 return (unsigned long)-1; in kmod_module_section_get_address()
2184 section = entry->data; in kmod_module_section_get_address()
2185 return section->address; in kmod_module_section_get_address()
2197 kmod_module_section_free(list->data); in kmod_module_section_free_list()
2204 if (mod->file == NULL) { in kmod_module_get_elf()
2212 ((struct kmod_module *)mod)->file = kmod_file_open(mod->ctx, in kmod_module_get_elf()
2214 if (mod->file == NULL) in kmod_module_get_elf()
2218 return kmod_file_get_elf(mod->file); in kmod_module_get_elf()
2234 info->key = (char *)info + sizeof(struct kmod_module_info) in kmod_module_info_new()
2236 memcpy(info->key, key, keylen); in kmod_module_info_new()
2237 info->key[keylen] = '\0'; in kmod_module_info_new()
2238 memcpy(info->value, value, valuelen); in kmod_module_info_new()
2239 info->value[valuelen] = '\0'; in kmod_module_info_new()
2273 str_len += ((str_len + line_limit - 1) / line_limit - 1) * 3; /* \n\t\t */ in kmod_module_hex_to_str()
2281 if (i < (int)len - 1) { in kmod_module_hex_to_str()
2343 int i, count, ret = -ENOMEM; in kmod_module_get_info()
2347 return -ENOENT; in kmod_module_get_info()
2353 count = kmod_builtin_get_modinfo(mod->ctx, in kmod_module_get_info()
2361 return -errno; in kmod_module_get_info()
2380 keylen = value - key; in kmod_module_get_info()
2390 if (mod->file && kmod_module_signature_info(mod->file, &sig_info)) { in kmod_module_get_info()
2464 info = entry->data; in kmod_module_info_get_key()
2465 return info->key; in kmod_module_info_get_key()
2484 info = entry->data; in kmod_module_info_get_value()
2485 return info->value; in kmod_module_info_get_value()
2497 kmod_module_info_free(list->data); in kmod_module_info_free_list()
2516 mv->crc = crc; in kmod_module_versions_new()
2517 memcpy(mv->symbol, symbol, symbollen); in kmod_module_versions_new()
2547 return -ENOENT; in kmod_module_get_versions()
2553 return -errno; in kmod_module_get_versions()
2565 ret = -errno; in kmod_module_get_versions()
2578 ret = -ENOMEM; in kmod_module_get_versions()
2602 if (entry == NULL || entry->data == NULL) in kmod_module_version_get_symbol()
2605 version = entry->data; in kmod_module_version_get_symbol()
2606 return version->symbol; in kmod_module_version_get_symbol()
2621 if (entry == NULL || entry->data == NULL) in kmod_module_version_get_crc()
2624 version = entry->data; in kmod_module_version_get_crc()
2625 return version->crc; in kmod_module_version_get_crc()
2637 kmod_module_version_free(list->data); in kmod_module_versions_free_list()
2656 mv->crc = crc; in kmod_module_symbols_new()
2657 memcpy(mv->symbol, symbol, symbollen); in kmod_module_symbols_new()
2687 return -ENOENT; in kmod_module_get_symbols()
2693 return -errno; in kmod_module_get_symbols()
2705 ret = -errno; in kmod_module_get_symbols()
2718 ret = -ENOMEM; in kmod_module_get_symbols()
2742 if (entry == NULL || entry->data == NULL) in kmod_module_symbol_get_symbol()
2745 symbol = entry->data; in kmod_module_symbol_get_symbol()
2746 return symbol->symbol; in kmod_module_symbol_get_symbol()
2761 if (entry == NULL || entry->data == NULL) in kmod_module_symbol_get_crc()
2764 symbol = entry->data; in kmod_module_symbol_get_crc()
2765 return symbol->crc; in kmod_module_symbol_get_crc()
2777 kmod_module_symbol_free(list->data); in kmod_module_symbols_free_list()
2797 mv->crc = crc; in kmod_module_dependency_symbols_new()
2798 mv->bind = bind; in kmod_module_dependency_symbols_new()
2799 memcpy(mv->symbol, symbol, symbollen); in kmod_module_dependency_symbols_new()
2830 return -ENOENT; in kmod_module_get_dependency_symbols()
2836 return -errno; in kmod_module_get_dependency_symbols()
2850 ret = -errno; in kmod_module_get_dependency_symbols()
2863 ret = -ENOMEM; in kmod_module_get_dependency_symbols()
2887 if (entry == NULL || entry->data == NULL) in kmod_module_dependency_symbol_get_symbol()
2890 dependency_symbol = entry->data; in kmod_module_dependency_symbol_get_symbol()
2891 return dependency_symbol->symbol; in kmod_module_dependency_symbol_get_symbol()
2906 if (entry == NULL || entry->data == NULL) in kmod_module_dependency_symbol_get_crc()
2909 dependency_symbol = entry->data; in kmod_module_dependency_symbol_get_crc()
2910 return dependency_symbol->crc; in kmod_module_dependency_symbol_get_crc()
2926 if (entry == NULL || entry->data == NULL) in kmod_module_dependency_symbol_get_bind()
2929 dependency_symbol = entry->data; in kmod_module_dependency_symbol_get_bind()
2930 return dependency_symbol->bind; in kmod_module_dependency_symbol_get_bind()
2942 kmod_module_dependency_symbol_free(list->data); in kmod_module_dependency_symbols_free_list()
2950 * @list: where to save the builtin module list
2961 return -errno; in kmod_module_get_builtin()
2968 err = -errno; in kmod_module_get_builtin()