Lines Matching refs:lf
194 linker_file_sysinit(linker_file_t lf) in linker_file_sysinit() argument
200 lf->filename)); in linker_file_sysinit()
204 if (linker_file_lookup_set(lf, "sysinit_set", &start, &stop, NULL) != 0) in linker_file_sysinit()
237 BOOTTRACE("%s: sysinit 0x%7x", lf->filename, in linker_file_sysinit()
249 linker_file_sysuninit(linker_file_t lf) in linker_file_sysuninit() argument
255 lf->filename)); in linker_file_sysuninit()
259 if (linker_file_lookup_set(lf, "sysuninit_set", &start, &stop, in linker_file_sysuninit()
294 BOOTTRACE("%s: sysuninit 0x%7x", lf->filename, in linker_file_sysuninit()
306 linker_file_register_sysctls(linker_file_t lf, bool enable) in linker_file_register_sysctls() argument
312 lf->filename)); in linker_file_register_sysctls()
316 if (linker_file_lookup_set(lf, "sysctl_set", &start, &stop, NULL) != 0) in linker_file_register_sysctls()
352 linker_file_enable_sysctls(linker_file_t lf) in linker_file_enable_sysctls() argument
358 lf->filename)); in linker_file_enable_sysctls()
362 if (linker_file_lookup_set(lf, "sysctl_set", &start, &stop, NULL) != 0) in linker_file_enable_sysctls()
374 linker_file_unregister_sysctls(linker_file_t lf) in linker_file_unregister_sysctls() argument
379 " for %s\n", lf->filename)); in linker_file_unregister_sysctls()
383 if (linker_file_lookup_set(lf, "sysctl_set", &start, &stop, NULL) != 0) in linker_file_unregister_sysctls()
395 linker_file_register_modules(linker_file_t lf) in linker_file_register_modules() argument
402 " in %s\n", lf->filename)); in linker_file_register_modules()
406 if (linker_file_lookup_set(lf, MDT_SETNAME, &start, &stop, NULL) != 0) { in linker_file_register_modules()
412 if (lf == linker_kernel_file) { in linker_file_register_modules()
424 moddata->name, lf->filename)); in linker_file_register_modules()
425 error = module_register(moddata, lf); in linker_file_register_modules()
452 linker_file_t lf; in linker_load_file() local
460 lf = linker_find_file_by_name(filename); in linker_load_file()
461 if (lf) { in linker_load_file()
464 *result = lf; in linker_load_file()
465 lf->refs++; in linker_load_file()
479 error = LINKER_LOAD_FILE(lc, filename, &lf); in linker_load_file()
489 if (lf) { in linker_load_file()
490 error = linker_file_register_modules(lf); in linker_load_file()
492 linker_file_unload(lf, LINKER_UNLOAD_FORCE); in linker_load_file()
495 modules = !TAILQ_EMPTY(&lf->modules); in linker_load_file()
496 linker_file_register_sysctls(lf, false); in linker_load_file()
498 LINKER_PROPAGATE_VNETS(lf); in linker_load_file()
500 linker_file_sysinit(lf); in linker_load_file()
501 lf->flags |= LINKER_FILE_LINKED; in linker_load_file()
508 if (modules && TAILQ_EMPTY(&lf->modules)) { in linker_load_file()
509 linker_file_unload(lf, LINKER_UNLOAD_FORCE); in linker_load_file()
512 linker_file_enable_sysctls(lf); in linker_load_file()
517 linker_ctf_load_file(lf); in linker_load_file()
518 EVENTHANDLER_INVOKE(kld_load, lf); in linker_load_file()
519 *result = lf; in linker_load_file()
573 linker_file_t lf) in linker_release_module() argument
579 if (lf == NULL) { in linker_release_module()
587 lf = mod->container; in linker_release_module()
591 error = linker_file_unload(lf, LINKER_UNLOAD_NORMAL); in linker_release_module()
599 linker_file_t lf; in linker_find_file_by_name() local
606 TAILQ_FOREACH(lf, &linker_files, link) { in linker_find_file_by_name()
607 if (strcmp(lf->filename, koname) == 0) in linker_find_file_by_name()
609 if (strcmp(lf->filename, filename) == 0) in linker_find_file_by_name()
613 return (lf); in linker_find_file_by_name()
619 linker_file_t lf; in linker_find_file_by_id() local
622 TAILQ_FOREACH(lf, &linker_files, link) in linker_find_file_by_id()
623 if (lf->id == fileid && lf->flags & LINKER_FILE_LINKED) in linker_find_file_by_id()
625 return (lf); in linker_find_file_by_id()
631 linker_file_t lf; in linker_file_foreach() local
635 TAILQ_FOREACH(lf, &linker_files, link) { in linker_file_foreach()
636 retval = predicate(lf, context); in linker_file_foreach()
647 linker_file_t lf; in linker_make_file() local
655 lf = (linker_file_t)kobj_create((kobj_class_t)lc, M_LINKER, M_WAITOK); in linker_make_file()
656 if (lf == NULL) in linker_make_file()
658 lf->ctors_addr = 0; in linker_make_file()
659 lf->ctors_size = 0; in linker_make_file()
660 lf->ctors_invoked = LF_NONE; in linker_make_file()
661 lf->dtors_addr = 0; in linker_make_file()
662 lf->dtors_size = 0; in linker_make_file()
663 lf->refs = 1; in linker_make_file()
664 lf->userrefs = 0; in linker_make_file()
665 lf->flags = 0; in linker_make_file()
666 lf->filename = strdup(filename, M_LINKER); in linker_make_file()
667 lf->pathname = strdup(pathname, M_LINKER); in linker_make_file()
668 LINKER_GET_NEXT_FILE_ID(lf->id); in linker_make_file()
669 lf->ndeps = 0; in linker_make_file()
670 lf->deps = NULL; in linker_make_file()
671 lf->loadcnt = ++loadcnt; in linker_make_file()
673 lf->exidx_addr = 0; in linker_make_file()
674 lf->exidx_size = 0; in linker_make_file()
676 STAILQ_INIT(&lf->common); in linker_make_file()
677 TAILQ_INIT(&lf->modules); in linker_make_file()
678 TAILQ_INSERT_TAIL(&linker_files, lf, link); in linker_make_file()
679 return (lf); in linker_make_file()
815 linker_file_t lf; in linker_ctf_lookup_typename_ddb() local
817 TAILQ_FOREACH (lf, &linker_files, link){ in linker_ctf_lookup_typename_ddb()
818 if (LINKER_CTF_LOOKUP_TYPENAME(lf, lc, typename) == 0) in linker_ctf_lookup_typename_ddb()
830 linker_file_t lf; in linker_ctf_lookup_sym_ddb() local
832 TAILQ_FOREACH (lf, &linker_files, link){ in linker_ctf_lookup_sym_ddb()
833 if (LINKER_LOOKUP_DEBUG_SYMBOL_CTF(lf, symname, sym, lc) == 0) in linker_ctf_lookup_sym_ddb()
874 linker_file_function_listall(linker_file_t lf, in linker_file_function_listall() argument
877 return (LINKER_EACH_FUNCTION_NAMEVAL(lf, callback_func, arg)); in linker_file_function_listall()
998 linker_file_t lf; in linker_debug_lookup() local
1000 TAILQ_FOREACH(lf, &linker_files, link) { in linker_debug_lookup()
1001 if (LINKER_LOOKUP_DEBUG_SYMBOL(lf, symstr, sym) == 0) in linker_debug_lookup()
1011 linker_file_t lf; in linker_debug_search_symbol() local
1018 TAILQ_FOREACH(lf, &linker_files, link) { in linker_debug_search_symbol()
1019 if (LINKER_SEARCH_SYMBOL(lf, value, &es, &diff) != 0) in linker_debug_search_symbol()
1042 linker_file_t lf; in linker_debug_symbol_values() local
1044 TAILQ_FOREACH(lf, &linker_files, link) { in linker_debug_symbol_values()
1045 if (LINKER_DEBUG_SYMBOL_VALUES(lf, sym, symval) == 0) in linker_debug_symbol_values()
1202 linker_file_t lf; in kern_kldload() local
1236 error = linker_load_module(kldname, modname, NULL, NULL, &lf); in kern_kldload()
1240 lf->userrefs++; in kern_kldload()
1242 *fileid = lf->id; in kern_kldload()
1270 linker_file_t lf; in kern_kldunload() local
1286 lf = linker_find_file_by_id(fileid); in kern_kldunload()
1287 if (lf) { in kern_kldunload()
1288 KLD_DPF(FILE, ("kldunload: lf->userrefs=%d\n", lf->userrefs)); in kern_kldunload()
1290 if (lf->userrefs == 0) { in kern_kldunload()
1297 } else if (lf->refs > 1) { in kern_kldunload()
1300 lf->userrefs--; in kern_kldunload()
1301 error = linker_file_unload(lf, flags); in kern_kldunload()
1303 lf->userrefs++; in kern_kldunload()
1334 linker_file_t lf; in sys_kldfind() local
1351 lf = linker_find_file_by_name(filename); in sys_kldfind()
1352 if (lf) in sys_kldfind()
1353 td->td_retval[0] = lf->id; in sys_kldfind()
1365 linker_file_t lf; in sys_kldnext() local
1376 lf = TAILQ_FIRST(&linker_files); in sys_kldnext()
1378 lf = linker_find_file_by_id(uap->fileid); in sys_kldnext()
1379 if (lf == NULL) { in sys_kldnext()
1383 lf = TAILQ_NEXT(lf, link); in sys_kldnext()
1387 while (lf != NULL && !(lf->flags & LINKER_FILE_LINKED)) in sys_kldnext()
1388 lf = TAILQ_NEXT(lf, link); in sys_kldnext()
1390 if (lf) in sys_kldnext()
1391 td->td_retval[0] = lf->id; in sys_kldnext()
1426 linker_file_t lf; in kern_kldstat() local
1437 lf = linker_find_file_by_id(fileid); in kern_kldstat()
1438 if (lf == NULL) { in kern_kldstat()
1444 namelen = strlen(lf->filename) + 1; in kern_kldstat()
1447 bcopy(lf->filename, &stat->name[0], namelen); in kern_kldstat()
1448 stat->refs = lf->refs; in kern_kldstat()
1449 stat->id = lf->id; in kern_kldstat()
1450 stat->address = lf->address; in kern_kldstat()
1451 stat->size = lf->size; in kern_kldstat()
1453 namelen = strlen(lf->pathname) + 1; in kern_kldstat()
1456 bcopy(lf->pathname, &stat->pathname[0], namelen); in kern_kldstat()
1466 linker_file_t lf; in DB_COMMAND_FLAGS() local
1471 TAILQ_FOREACH(lf, &linker_files, link) { in DB_COMMAND_FLAGS()
1474 db_printf("%2d %4d %p %-8zx %s\n", lf->id, lf->refs, in DB_COMMAND_FLAGS()
1475 lf->address, lf->size, lf->filename); in DB_COMMAND_FLAGS()
1483 linker_file_t lf; in sys_kldfirstmod() local
1494 lf = linker_find_file_by_id(uap->fileid); in sys_kldfirstmod()
1495 if (lf) { in sys_kldfirstmod()
1497 mp = TAILQ_FIRST(&lf->modules); in sys_kldfirstmod()
1515 linker_file_t lf; in sys_kldsym() local
1535 lf = linker_find_file_by_id(uap->fileid); in sys_kldsym()
1536 if (lf == NULL) in sys_kldsym()
1538 else if (LINKER_LOOKUP_SYMBOL(lf, symstr, &sym) == 0 && in sys_kldsym()
1539 LINKER_SYMBOL_VALUES(lf, sym, &symval) == 0) { in sys_kldsym()
1546 TAILQ_FOREACH(lf, &linker_files, link) { in sys_kldsym()
1547 if (LINKER_LOOKUP_SYMBOL(lf, symstr, &sym) == 0 && in sys_kldsym()
1548 LINKER_SYMBOL_VALUES(lf, sym, &symval) == 0) { in sys_kldsym()
1556 if (lf == NULL) in sys_kldsym()
1621 linker_addmodules(linker_file_t lf, struct mod_metadata **start, in linker_addmodules() argument
1639 modlist_newmodule(modname, ver, lf); in linker_addmodules()
1649 linker_file_t lf, nlf; in linker_preload() local
1685 lf = NULL; in linker_preload()
1687 error = LINKER_LINK_PRELOAD(lc, modname, &lf); in linker_preload()
1690 lf = NULL; in linker_preload()
1692 if (lf) in linker_preload()
1693 TAILQ_INSERT_TAIL(&loaded_files, lf, loaded); in linker_preload()
1708 TAILQ_FOREACH(lf, &loaded_files, loaded) { in linker_preload()
1709 error = linker_file_lookup_set(lf, MDT_SETNAME, &start, in linker_preload()
1761 lf, loaded); in linker_preload()
1762 linker_file_unload(lf, in linker_preload()
1767 modlist_newmodule(modname, nver, lf); in linker_preload()
1770 TAILQ_REMOVE(&loaded_files, lf, loaded); in linker_preload()
1771 TAILQ_INSERT_TAIL(&depended_files, lf, loaded); in linker_preload()
1785 while ((lf = TAILQ_FIRST(&loaded_files)) != NULL) { in linker_preload()
1786 TAILQ_REMOVE(&loaded_files, lf, loaded); in linker_preload()
1787 printf("KLD file %s is missing dependencies\n", lf->filename); in linker_preload()
1788 linker_file_unload(lf, LINKER_UNLOAD_FORCE); in linker_preload()
1794 TAILQ_FOREACH_SAFE(lf, &depended_files, loaded, nlf) { in linker_preload()
1797 linker_file_add_dependency(lf, linker_kernel_file); in linker_preload()
1799 error = linker_file_lookup_set(lf, MDT_SETNAME, &start, in linker_preload()
1812 lf->filename, modname); in linker_preload()
1816 if (lf == mod->container) in linker_preload()
1819 linker_file_add_dependency(lf, mod->container); in linker_preload()
1826 error = LINKER_LINK_PRELOAD_FINISH(lf); in linker_preload()
1829 lf->filename); in linker_preload()
1832 linker_file_register_modules(lf); in linker_preload()
1833 if (!TAILQ_EMPTY(&lf->modules)) in linker_preload()
1834 lf->flags |= LINKER_FILE_MODULES; in linker_preload()
1835 if (linker_file_lookup_set(lf, "sysinit_set", &si_start, in linker_preload()
1838 linker_file_register_sysctls(lf, true); in linker_preload()
1839 lf->flags |= LINKER_FILE_LINKED; in linker_preload()
1842 TAILQ_REMOVE(&depended_files, lf, loaded); in linker_preload()
1843 linker_file_unload(lf, LINKER_UNLOAD_FORCE); in linker_preload()
1853 linker_file_t lf; in linker_mountroot() local
1856 TAILQ_FOREACH (lf, &linker_files, link) { in linker_mountroot()
1857 linker_ctf_load_file(lf); in linker_mountroot()
1869 linker_file_t lf, nlf; in linker_preload_finish() local
1872 TAILQ_FOREACH_SAFE(lf, &linker_files, link, nlf) { in linker_preload_finish()
1873 if (lf == linker_kernel_file) in linker_preload_finish()
1881 if ((lf->flags & LINKER_FILE_MODULES) != 0 && in linker_preload_finish()
1882 TAILQ_EMPTY(&lf->modules)) { in linker_preload_finish()
1883 linker_file_unload(lf, LINKER_UNLOAD_FORCE); in linker_preload_finish()
1887 lf->flags &= ~LINKER_FILE_MODULES; in linker_preload_finish()
1888 lf->userrefs++; /* so we can (try to) kldunload it */ in linker_preload_finish()
2194 linker_file_t lf; in linker_hwpmc_list_objects() local
2200 TAILQ_FOREACH(lf, &linker_files, link) in linker_hwpmc_list_objects()
2207 TAILQ_FOREACH(lf, &linker_files, link) { in linker_hwpmc_list_objects()
2209 kobase[i].pm_file = lf->pathname; in linker_hwpmc_list_objects()
2210 kobase[i].pm_address = (uintptr_t)lf->address; in linker_hwpmc_list_objects()
2315 linker_load_dependencies(linker_file_t lf) in linker_load_dependencies() argument
2331 linker_file_add_dependency(lf, linker_kernel_file); in linker_load_dependencies()
2333 if (linker_file_lookup_set(lf, MDT_SETNAME, &start, &stop, in linker_load_dependencies()
2372 linker_file_add_dependency(lf, lfdep); in linker_load_dependencies()
2375 error = linker_load_module(NULL, modname, lf, verinfo, NULL); in linker_load_dependencies()
2378 " version mismatch\n", lf->filename, modname); in linker_load_dependencies()
2385 linker_addmodules(lf, start, stop, 0); in linker_load_dependencies()
2405 linker_file_t lf; in sysctl_kern_function_list() local
2417 TAILQ_FOREACH(lf, &linker_files, link) { in sysctl_kern_function_list()
2418 error = LINKER_EACH_FUNCTION_NAME(lf, in sysctl_kern_function_list()