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