• Home
  • Raw
  • Download

Lines Matching refs:depmod

889 struct depmod {  struct
938 static int depmod_init(struct depmod *depmod, struct cfg *cfg, in depmod_init() argument
943 depmod->cfg = cfg; in depmod_init()
944 depmod->ctx = ctx; in depmod_init()
946 array_init(&depmod->modules, 128); in depmod_init()
948 depmod->modules_by_uncrelpath = hash_new(512, NULL); in depmod_init()
949 if (depmod->modules_by_uncrelpath == NULL) { in depmod_init()
954 depmod->modules_by_name = hash_new(512, NULL); in depmod_init()
955 if (depmod->modules_by_name == NULL) { in depmod_init()
960 depmod->symbols = hash_new(2048, (void (*)(void *))symbol_free); in depmod_init()
961 if (depmod->symbols == NULL) { in depmod_init()
969 hash_free(depmod->modules_by_name); in depmod_init()
971 hash_free(depmod->modules_by_uncrelpath); in depmod_init()
976 static void depmod_shutdown(struct depmod *depmod) in depmod_shutdown() argument
980 hash_free(depmod->symbols); in depmod_shutdown()
982 hash_free(depmod->modules_by_uncrelpath); in depmod_shutdown()
984 hash_free(depmod->modules_by_name); in depmod_shutdown()
986 for (i = 0; i < depmod->modules.count; i++) in depmod_shutdown()
987 mod_free(depmod->modules.array[i]); in depmod_shutdown()
988 array_free_array(&depmod->modules); in depmod_shutdown()
990 kmod_unref(depmod->ctx); in depmod_shutdown()
993 static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod) in depmod_module_add() argument
995 const struct cfg *cfg = depmod->cfg; in depmod_module_add()
1008 mod->sort_idx = depmod->modules.count + 1; in depmod_module_add()
1024 err = hash_add_unique(depmod->modules_by_name, mod->modname, mod); in depmod_module_add()
1035 err = hash_add_unique(depmod->modules_by_uncrelpath, in depmod_module_add()
1040 hash_del(depmod->modules_by_name, mod->modname); in depmod_module_add()
1055 static int depmod_module_del(struct depmod *depmod, struct mod *mod) in depmod_module_del() argument
1060 hash_del(depmod->modules_by_uncrelpath, mod->uncrelpath); in depmod_module_del()
1062 hash_del(depmod->modules_by_name, mod->modname); in depmod_module_del()
1098 static int depmod_module_is_higher_priority(const struct depmod *depmod, const struct mod *mod, siz… in depmod_module_is_higher_priority() argument
1100 const struct cfg *cfg = depmod->cfg; in depmod_module_is_higher_priority()
1175 static int depmod_modules_search_file(struct depmod *depmod, size_t baselen, size_t namelen, const … in depmod_modules_search_file() argument
1192 relpath = path + depmod->cfg->dirnamelen + 1; in depmod_modules_search_file()
1195 mod = hash_find(depmod->modules_by_name, modname); in depmod_modules_search_file()
1199 if (depmod_module_is_higher_priority(depmod, mod, baselen, in depmod_modules_search_file()
1208 err = depmod_module_del(depmod, mod); in depmod_modules_search_file()
1215 err = kmod_module_new_from_path(depmod->ctx, path, &kmod); in depmod_modules_search_file()
1221 err = depmod_module_add(depmod, kmod); in depmod_modules_search_file()
1231 static int depmod_modules_search_dir(struct depmod *depmod, DIR *d, size_t baselen, struct scratchb… in depmod_modules_search_dir() argument
1294 err = depmod_modules_search_dir(depmod, subdir, in depmod_modules_search_dir()
1299 err = depmod_modules_search_file(depmod, baselen, in depmod_modules_search_dir()
1312 static int depmod_modules_search_path(struct depmod *depmod, in depmod_modules_search_path() argument
1343 err = depmod_modules_search_dir(depmod, d, baselen, &s_path_buf); in depmod_modules_search_path()
1349 static int depmod_modules_search(struct depmod *depmod) in depmod_modules_search() argument
1354 err = depmod_modules_search_path(depmod, depmod->cfg->dirname); in depmod_modules_search()
1358 for (ext = depmod->cfg->externals; ext != NULL; ext = ext->next) { in depmod_modules_search()
1359 err = depmod_modules_search_path(depmod, ext->path); in depmod_modules_search()
1374 static int depmod_modules_build_array(struct depmod *depmod) in depmod_modules_build_array() argument
1380 hash_iter_init(depmod->modules_by_name, &module_iter); in depmod_modules_build_array()
1383 mod->idx = depmod->modules.count; in depmod_modules_build_array()
1384 err = array_append(&depmod->modules, mod); in depmod_modules_build_array()
1421 static void depmod_modules_sort(struct depmod *depmod) in depmod_modules_sort() argument
1428 fp = dfdopen(depmod->cfg->dirname, order_file, O_RDONLY, "r"); in depmod_modules_sort()
1439 depmod->cfg->dirname, order_file, idx); in depmod_modules_sort()
1455 mod = hash_find(depmod->modules_by_uncrelpath, line); in depmod_modules_sort()
1461 array_sort(&depmod->modules, mod_cmp); in depmod_modules_sort()
1462 for (idx = 0; idx < depmod->modules.count; idx++) { in depmod_modules_sort()
1463 struct mod *m = depmod->modules.array[idx]; in depmod_modules_sort()
1471 static int depmod_symbol_add(struct depmod *depmod, const char *name, in depmod_symbol_add() argument
1479 if (!prefix_skipped && (name[0] == depmod->cfg->sym_prefix)) in depmod_symbol_add()
1491 err = hash_add(depmod->symbols, sym->name, sym); in depmod_symbol_add()
1503 static struct symbol *depmod_symbol_find(const struct depmod *depmod, in depmod_symbol_find() argument
1508 if (name[0] == depmod->cfg->sym_prefix) in depmod_symbol_find()
1510 return hash_find(depmod->symbols, name); in depmod_symbol_find()
1513 static int depmod_load_modules(struct depmod *depmod) in depmod_load_modules() argument
1517 DBG("load symbols (%zd modules)\n", depmod->modules.count); in depmod_load_modules()
1519 itr = (struct mod **)depmod->modules.array; in depmod_load_modules()
1520 itr_end = itr + depmod->modules.count; in depmod_load_modules()
1536 depmod_symbol_add(depmod, name, false, crc, mod); in depmod_load_modules()
1549 depmod->modules.count, hash_get_count(depmod->symbols)); in depmod_load_modules()
1554 static int depmod_load_module_dependencies(struct depmod *depmod, struct mod *mod) in depmod_load_module_dependencies() argument
1556 const struct cfg *cfg = depmod->cfg; in depmod_load_module_dependencies()
1564 struct symbol *sym = depmod_symbol_find(depmod, name); in depmod_load_module_dependencies()
1590 static int depmod_load_dependencies(struct depmod *depmod) in depmod_load_dependencies() argument
1595 depmod->modules.count, hash_get_count(depmod->symbols)); in depmod_load_dependencies()
1597 itr = (struct mod **)depmod->modules.array; in depmod_load_dependencies()
1598 itr_end = itr + depmod->modules.count; in depmod_load_dependencies()
1607 depmod_load_module_dependencies(depmod, mod); in depmod_load_dependencies()
1611 depmod->modules.count, hash_get_count(depmod->symbols)); in depmod_load_dependencies()
1623 static void depmod_sort_dependencies(struct depmod *depmod) in depmod_sort_dependencies() argument
1626 itr = (struct mod **)depmod->modules.array; in depmod_sort_dependencies()
1627 itr_end = itr + depmod->modules.count; in depmod_sort_dependencies()
1661 static int depmod_report_one_cycle(struct depmod *depmod, in depmod_report_one_cycle() argument
1716 static int depmod_report_cycles_from_root(struct depmod *depmod, in depmod_report_cycles_from_root() argument
1758 rc = depmod_report_one_cycle(depmod, vertex, in depmod_report_cycles_from_root()
1817 static void depmod_report_cycles(struct depmod *depmod, uint16_t n_mods, in depmod_report_cycles() argument
1834 m = depmod->modules.array[i]; in depmod_report_cycles()
1860 err = depmod_report_cycles_from_root(depmod, in depmod_report_cycles()
1880 static int depmod_calculate_dependencies(struct depmod *depmod) in depmod_calculate_dependencies() argument
1884 uint16_t i, n_roots = 0, n_sorted = 0, n_mods = depmod->modules.count; in depmod_calculate_dependencies()
1895 assert(depmod->modules.count < UINT16_MAX); in depmod_calculate_dependencies()
1898 itrm = (const struct mod **)depmod->modules.array; in depmod_calculate_dependencies()
1914 src = depmod->modules.array[src_idx]; in depmod_calculate_dependencies()
1934 depmod_report_cycles(depmod, n_mods, users); in depmod_calculate_dependencies()
1939 depmod_sort_dependencies(depmod); in depmod_calculate_dependencies()
1948 static int depmod_load(struct depmod *depmod) in depmod_load() argument
1952 err = depmod_load_modules(depmod); in depmod_load()
1956 err = depmod_load_dependencies(depmod); in depmod_load()
1960 err = depmod_calculate_dependencies(depmod); in depmod_load()
2037 static int output_deps(struct depmod *depmod, FILE *out) in output_deps() argument
2041 for (i = 0; i < depmod->modules.count; i++) { in output_deps()
2042 const struct mod **deps, *mod = depmod->modules.array[i]; in output_deps()
2069 static int output_deps_bin(struct depmod *depmod, FILE *out) in output_deps_bin() argument
2081 for (i = 0; i < depmod->modules.count; i++) { in output_deps_bin()
2082 const struct mod **deps, *mod = depmod->modules.array[i]; in output_deps_bin()
2129 if (duplicate && depmod->cfg->warn_dups) in output_deps_bin()
2141 static int output_aliases(struct depmod *depmod, FILE *out) in output_aliases() argument
2147 for (i = 0; i < depmod->modules.count; i++) { in output_aliases()
2148 const struct mod *mod = depmod->modules.array[i]; in output_aliases()
2165 static int output_aliases_bin(struct depmod *depmod, FILE *out) in output_aliases_bin() argument
2177 for (i = 0; i < depmod->modules.count; i++) { in output_aliases_bin()
2178 const struct mod *mod = depmod->modules.array[i]; in output_aliases_bin()
2199 if (duplicate && depmod->cfg->warn_dups) in output_aliases_bin()
2211 static int output_softdeps(struct depmod *depmod, FILE *out) in output_softdeps() argument
2217 for (i = 0; i < depmod->modules.count; i++) { in output_softdeps()
2218 const struct mod *mod = depmod->modules.array[i]; in output_softdeps()
2235 static int output_symbols(struct depmod *depmod, FILE *out) in output_symbols() argument
2242 hash_iter_init(depmod->symbols, &iter); in output_symbols()
2256 static int output_symbols_bin(struct depmod *depmod, FILE *out) in output_symbols_bin() argument
2276 hash_iter_init(depmod->symbols, &iter); in output_symbols_bin()
2296 if (duplicate && depmod->cfg->warn_dups) in output_symbols_bin()
2312 static int output_builtin_bin(struct depmod *depmod, FILE *out) in output_builtin_bin() argument
2321 in = dfdopen(depmod->cfg->dirname, "modules.builtin", O_RDONLY, "r"); in output_builtin_bin()
2348 static int output_devname(struct depmod *depmod, FILE *out) in output_devname() argument
2353 for (i = 0; i < depmod->modules.count; i++) { in output_devname()
2354 const struct mod *mod = depmod->modules.array[i]; in output_devname()
2405 static int depmod_output(struct depmod *depmod, FILE *out) in depmod_output() argument
2409 int (*cb)(struct depmod *depmod, FILE *out); in depmod_output()
2422 const char *dname = depmod->cfg->dirname; in depmod_output()
2465 r = itr->cb(depmod, fp); in depmod_output()
2502 static void depmod_add_fake_syms(struct depmod *depmod) in depmod_add_fake_syms() argument
2505 depmod_symbol_add(depmod, "__this_module", true, 0, NULL); in depmod_add_fake_syms()
2507 depmod_symbol_add(depmod, "_GLOBAL_OFFSET_TABLE_", true, 0, NULL); in depmod_add_fake_syms()
2509 if (!depmod_symbol_find(depmod, "TOC.")) in depmod_add_fake_syms()
2510 depmod_symbol_add(depmod, "TOC.", true, 0, NULL); in depmod_add_fake_syms()
2513 static int depmod_load_symvers(struct depmod *depmod, const char *filename) in depmod_load_symvers() argument
2551 depmod_symbol_add(depmod, sym, false, crc, NULL); in depmod_load_symvers()
2553 depmod_add_fake_syms(depmod); in depmod_load_symvers()
2561 static int depmod_load_system_map(struct depmod *depmod, const char *filename) in depmod_load_system_map() argument
2593 if (p[0] == depmod->cfg->sym_prefix) in depmod_load_system_map()
2604 depmod_symbol_add(depmod, p + ksymstr_len, true, 0, NULL); in depmod_load_system_map()
2610 depmod_add_fake_syms(depmod); in depmod_load_system_map()
2751 struct depmod depmod; in do_depmod() local
2754 memset(&depmod, 0, sizeof(depmod)); in do_depmod()
2877 err = depmod_init(&depmod, &cfg, ctx); in do_depmod()
2885 err = depmod_load_symvers(&depmod, module_symvers); in do_depmod()
2892 err = depmod_load_system_map(&depmod, system_map); in do_depmod()
2909 err = depmod_modules_search(&depmod); in do_depmod()
2926 err = kmod_module_new_from_path(depmod.ctx, path, &mod); in do_depmod()
2933 err = depmod_module_add(&depmod, mod); in do_depmod()
2943 err = depmod_modules_build_array(&depmod); in do_depmod()
2950 depmod_modules_sort(&depmod); in do_depmod()
2951 err = depmod_load(&depmod); in do_depmod()
2955 err = depmod_output(&depmod, out); in do_depmod()
2958 depmod_shutdown(&depmod); in do_depmod()
2963 depmod_shutdown(&depmod); in do_depmod()