Lines Matching refs:dtp
465 dt_module_create(dtrace_hdl_t *dtp, const char *name) in dt_module_create() argument
470 uint_t h = dt_strtab_hash(name, NULL) % dtp->dt_modbuckets; in dt_module_create()
473 for (dmp = dtp->dt_mods[h]; dmp != NULL; dmp = dmp->dm_next) { in dt_module_create()
483 dt_list_append(&dtp->dt_modlist, dmp); in dt_module_create()
484 dmp->dm_next = dtp->dt_mods[h]; in dt_module_create()
485 dtp->dt_mods[h] = dmp; in dt_module_create()
486 dtp->dt_nmods++; in dt_module_create()
488 if (dtp->dt_conf.dtc_ctfmodel == CTF_MODEL_LP64) in dt_module_create()
506 idp = dt_idhash_lookup(dtp->dt_macros, "target"); in dt_module_create()
523 dt_module_lookup_by_name(dtrace_hdl_t *dtp, const char *name) in dt_module_lookup_by_name() argument
525 uint_t h = dt_strtab_hash(name, NULL) % dtp->dt_modbuckets; in dt_module_lookup_by_name()
528 for (dmp = dtp->dt_mods[h]; dmp != NULL; dmp = dmp->dm_next) { in dt_module_lookup_by_name()
538 dt_module_lookup_by_ctf(dtrace_hdl_t *dtp, ctf_file_t *ctfp) in dt_module_lookup_by_ctf() argument
545 dt_kmodule_lookup(dtrace_hdl_t *dtp, const char *name) in dt_kmodule_lookup() argument
547 uint_t h = dt_strtab_hash(name, NULL) % dtp->dt_modbuckets; in dt_kmodule_lookup()
550 for (dkmp = dtp->dt_kmods[h]; dkmp != NULL; dkmp = dkmp->dkm_next) { in dt_kmodule_lookup()
560 dt_module_load_sect(dtrace_hdl_t *dtp, dt_module_t *dmp, ctf_sect_t *ctsp) in dt_module_load_sect() argument
569 return (dt_set_errno(dtp, EDT_NOTLOADED)); in dt_module_load_sect()
688 dt_module_load_proc(dtrace_hdl_t *dtp, dt_module_t *dmp) in dt_module_load_proc() argument
697 p = dt_proc_grab(dtp, dmp->dm_pid, 0, PGRAB_RDONLY | PGRAB_FORCE); in dt_module_load_proc()
700 return (dt_set_errno(dtp, EDT_CANTLOAD)); in dt_module_load_proc()
702 dt_proc_lock(dtp, p); in dt_module_load_proc()
705 arg.dpa_dtp = dtp; in dt_module_load_proc()
710 dt_proc_unlock(dtp, p); in dt_module_load_proc()
711 dt_proc_release(dtp, p); in dt_module_load_proc()
712 return (dt_set_errno(dtp, EDT_CANTLOAD)); in dt_module_load_proc()
717 dt_proc_unlock(dtp, p); in dt_module_load_proc()
718 dt_proc_release(dtp, p); in dt_module_load_proc()
719 return (dt_set_errno(dtp, EDT_CANTLOAD)); in dt_module_load_proc()
724 dt_proc_unlock(dtp, p); in dt_module_load_proc()
725 dt_proc_release(dtp, p); in dt_module_load_proc()
726 return (dt_set_errno(dtp, EDT_NOMEM)); in dt_module_load_proc()
732 dt_proc_unlock(dtp, p); in dt_module_load_proc()
733 dt_proc_release(dtp, p); in dt_module_load_proc()
734 return (dt_set_errno(dtp, EDT_NOMEM)); in dt_module_load_proc()
741 dt_proc_unlock(dtp, p); in dt_module_load_proc()
742 dt_module_unload(dtp, dmp); in dt_module_load_proc()
743 dt_proc_release(dtp, p); in dt_module_load_proc()
744 return (dt_set_errno(dtp, EDT_CANTLOAD)); in dt_module_load_proc()
750 dt_proc_unlock(dtp, p); in dt_module_load_proc()
751 dt_proc_release(dtp, p); in dt_module_load_proc()
758 dt_module_load(dtrace_hdl_t *dtp, dt_module_t *dmp) in dt_module_load() argument
764 return (dt_module_load_proc(dtp, dmp)); in dt_module_load()
797 if (dt_module_load_sect(dtp, dmp, &dmp->dm_ctdata) == -1 || in dt_module_load()
798 dt_module_load_sect(dtp, dmp, &dmp->dm_symtab) == -1 || in dt_module_load()
799 dt_module_load_sect(dtp, dmp, &dmp->dm_strtab) == -1) { in dt_module_load()
800 dt_module_unload(dtp, dmp); in dt_module_load()
820 dt_module_unload(dtp, dmp); in dt_module_load()
821 return (dt_set_errno(dtp, EDT_NOMEM)); in dt_module_load()
835 dt_module_unload(dtp, dmp); in dt_module_load()
836 return (dt_set_errno(dtp, EDT_NOMEM)); in dt_module_load()
849 dt_module_hasctf(dtrace_hdl_t *dtp, dt_module_t *dmp) in dt_module_hasctf() argument
853 return (dt_module_getctf(dtp, dmp) != NULL); in dt_module_hasctf()
857 dt_module_getctf(dtrace_hdl_t *dtp, dt_module_t *dmp) in dt_module_getctf() argument
864 if (dmp->dm_ctfp != NULL || dt_module_load(dtp, dmp) != 0) in dt_module_getctf()
878 if (dtp->dt_conf.dtc_ctfmodel != model) { in dt_module_getctf()
879 (void) dt_set_errno(dtp, EDT_DATAMODEL); in dt_module_getctf()
884 (void) dt_set_errno(dtp, EDT_NOCTF); in dt_module_getctf()
889 &dmp->dm_symtab, &dmp->dm_strtab, &dtp->dt_ctferr); in dt_module_getctf()
892 (void) dt_set_errno(dtp, EDT_CTF); in dt_module_getctf()
900 if ((pmp = dt_module_create(dtp, parent)) == NULL || in dt_module_getctf()
901 (pfp = dt_module_getctf(dtp, pmp)) == NULL) { in dt_module_getctf()
903 (void) dt_set_errno(dtp, EDT_NOMEM); in dt_module_getctf()
908 dtp->dt_ctferr = ctf_errno(dmp->dm_ctfp); in dt_module_getctf()
909 (void) dt_set_errno(dtp, EDT_CTF); in dt_module_getctf()
927 dt_module_unload(dtrace_hdl_t *dtp, dt_module_t *dmp) in dt_module_unload() argument
1008 dt_module_destroy(dtrace_hdl_t *dtp, dt_module_t *dmp) in dt_module_destroy() argument
1010 uint_t h = dt_strtab_hash(dmp->dm_name, NULL) % dtp->dt_modbuckets; in dt_module_destroy()
1011 dt_module_t **dmpp = &dtp->dt_mods[h]; in dt_module_destroy()
1013 dt_list_delete(&dtp->dt_modlist, dmp); in dt_module_destroy()
1014 assert(dtp->dt_nmods != 0); in dt_module_destroy()
1015 dtp->dt_nmods--; in dt_module_destroy()
1029 dt_module_unload(dtp, dmp); in dt_module_destroy()
1040 dt_module_extern(dtrace_hdl_t *dtp, dt_module_t *dmp, in dt_module_extern() argument
1049 (void) dt_set_errno(dtp, EDT_NOMEM); in dt_module_extern()
1054 (void) dt_set_errno(dtp, EDT_SYMOFLOW); in dt_module_extern()
1059 (void) dt_set_errno(dtp, EDT_NOMEM); in dt_module_extern()
1064 _dtrace_symattr, 0, &dt_idops_thaw, NULL, dtp->dt_gen); in dt_module_extern()
1067 (void) dt_set_errno(dtp, EDT_NOMEM); in dt_module_extern()
1094 dt_module_getlibid(dtrace_hdl_t *dtp, dt_module_t *dmp, const ctf_file_t *fp) in dt_module_getlibid() argument
1108 dt_module_getctflib(dtrace_hdl_t *dtp, dt_module_t *dmp, const char *name) in dt_module_getctflib() argument
1128 dt_module_update(dtrace_hdl_t *dtp, struct kld_file_stat *k_stat) in dt_module_update() argument
1154 (dmp = dt_module_create(dtp, name)) == NULL) { in dt_module_update()
1177 dt_module_destroy(dtp, dmp); in dt_module_update()
1192 dt_module_destroy(dtp, dmp); in dt_module_update()
1203 dt_module_destroy(dtp, dmp); in dt_module_update()
1277 if (dt_kmodule_lookup(dtp, ms.name) != NULL) in dt_module_update()
1283 dt_module_destroy(dtp, dmp); in dt_module_update()
1287 h = dt_strtab_hash(ms.name, NULL) % dtp->dt_modbuckets; in dt_module_update()
1288 dkmp->dkm_next = dtp->dt_kmods[h]; in dt_module_update()
1291 dtp->dt_kmods[h] = dkmp; in dt_module_update()
1303 dtrace_update(dtrace_hdl_t *dtp) in dtrace_update() argument
1311 for (dmp = dt_list_next(&dtp->dt_modlist); in dtrace_update()
1313 dt_module_unload(dtp, dmp); in dtrace_update()
1320 if (!(dtp->dt_oflags & DTRACE_O_NOSYS) && in dtrace_update()
1326 dt_module_update(dtp, dp->d_name); in dtrace_update()
1340 dt_module_update(dtp, &k_stat); in dtrace_update()
1349 dt_idhash_lookup(dtp->dt_macros, "egid")->di_id = getegid(); in dtrace_update()
1350 dt_idhash_lookup(dtp->dt_macros, "euid")->di_id = geteuid(); in dtrace_update()
1351 dt_idhash_lookup(dtp->dt_macros, "gid")->di_id = getgid(); in dtrace_update()
1352 dt_idhash_lookup(dtp->dt_macros, "pid")->di_id = getpid(); in dtrace_update()
1353 dt_idhash_lookup(dtp->dt_macros, "pgid")->di_id = getpgid(0); in dtrace_update()
1354 dt_idhash_lookup(dtp->dt_macros, "ppid")->di_id = getppid(); in dtrace_update()
1356 dt_idhash_lookup(dtp->dt_macros, "projid")->di_id = getprojid(); in dtrace_update()
1358 dt_idhash_lookup(dtp->dt_macros, "sid")->di_id = getsid(0); in dtrace_update()
1360 dt_idhash_lookup(dtp->dt_macros, "taskid")->di_id = gettaskid(); in dtrace_update()
1362 dt_idhash_lookup(dtp->dt_macros, "uid")->di_id = getuid(); in dtrace_update()
1370 dtp->dt_exec = dt_module_lookup_by_name(dtp, "genunix"); in dtrace_update()
1371 dtp->dt_rtld = dt_module_lookup_by_name(dtp, "krtld"); in dtrace_update()
1372 if (dtp->dt_rtld == NULL) in dtrace_update()
1373 dtp->dt_rtld = dt_module_lookup_by_name(dtp, "unix"); in dtrace_update()
1382 if (dtp->dt_exec != NULL && in dtrace_update()
1383 dtp->dt_cdefs == NULL && dtp->dt_ddefs == NULL) { in dtrace_update()
1384 dt_list_delete(&dtp->dt_modlist, dtp->dt_exec); in dtrace_update()
1385 dt_list_prepend(&dtp->dt_modlist, dtp->dt_exec); in dtrace_update()
1390 dt_module_from_object(dtrace_hdl_t *dtp, const char *object) in dt_module_from_object() argument
1397 dmp = dtp->dt_exec; in dt_module_from_object()
1400 dmp = dtp->dt_rtld; in dt_module_from_object()
1403 dmp = dtp->dt_cdefs; in dt_module_from_object()
1406 dmp = dtp->dt_ddefs; in dt_module_from_object()
1409 dmp = dt_module_create(dtp, object); in dt_module_from_object()
1414 (void) dt_set_errno(dtp, err); in dt_module_from_object()
1424 dtrace_lookup_by_name(dtrace_hdl_t *dtp, const char *object, const char *name, in dtrace_lookup_by_name() argument
1438 if ((dmp = dt_module_from_object(dtp, object)) == NULL) in dtrace_lookup_by_name()
1441 if (dt_module_load(dtp, dmp) == -1) in dtrace_lookup_by_name()
1451 dmp = dt_list_next(&dtp->dt_modlist); in dtrace_lookup_by_name()
1452 n = dtp->dt_nmods; in dtrace_lookup_by_name()
1462 if (dt_module_load(dtp, dmp) == -1) in dtrace_lookup_by_name()
1498 return (dt_set_errno(dtp, EDT_NOSYM)); in dtrace_lookup_by_name()
1506 dtrace_lookup_by_addr(dtrace_hdl_t *dtp, GElf_Addr addr, in dtrace_lookup_by_addr() argument
1511 const dtrace_vector_t *v = dtp->dt_vector; in dtrace_lookup_by_addr()
1514 return (v->dtv_lookup_by_addr(dtp->dt_varg, addr, symp, sip)); in dtrace_lookup_by_addr()
1516 for (dmp = dt_list_next(&dtp->dt_modlist); dmp != NULL; in dtrace_lookup_by_addr()
1525 return (dt_set_errno(dtp, EDT_NOSYMADDR)); in dtrace_lookup_by_addr()
1527 if (dt_module_load(dtp, dmp) == -1) in dtrace_lookup_by_addr()
1532 return (dt_set_errno(dtp, EDT_NOSYMADDR)); in dtrace_lookup_by_addr()
1552 dtrace_lookup_by_type(dtrace_hdl_t *dtp, const char *object, const char *name, in dtrace_lookup_by_type() argument
1570 if ((dmp = dt_module_from_object(dtp, object)) == NULL) in dtrace_lookup_by_type()
1573 if (dt_module_load(dtp, dmp) == -1) in dtrace_lookup_by_type()
1583 dmp = dt_list_next(&dtp->dt_modlist); in dtrace_lookup_by_type()
1584 n = dtp->dt_nmods; in dtrace_lookup_by_type()
1600 if (dt_module_hasctf(dtp, dmp) == 0) { in dtrace_lookup_by_type()
1619 return (dt_set_errno(dtp, EDT_NOMEM)); in dtrace_lookup_by_type()
1624 fp = dt_module_getctflib(dtp, dmp, buf); in dtrace_lookup_by_type()
1651 return (dt_set_errno(dtp, EDT_NOTYPE)); in dtrace_lookup_by_type()
1657 dtrace_symbol_type(dtrace_hdl_t *dtp, const GElf_Sym *symp, in dtrace_symbol_type() argument
1667 if ((dmp = dt_module_lookup_by_name(dtp, sip->dts_object)) == NULL) in dtrace_symbol_type()
1668 return (dt_set_errno(dtp, EDT_NOMOD)); in dtrace_symbol_type()
1675 return (dt_set_errno(dtp, EDT_NOSYM)); in dtrace_symbol_type()
1681 if (dt_module_getctf(dtp, dmp) == NULL) in dtrace_symbol_type()
1688 dtp->dt_ctferr = ctf_errno(tip->dtt_ctfp); in dtrace_symbol_type()
1689 return (dt_set_errno(dtp, EDT_CTF)); in dtrace_symbol_type()
1693 tip->dtt_ctfp = DT_FPTR_CTFP(dtp); in dtrace_symbol_type()
1694 tip->dtt_type = DT_FPTR_TYPE(dtp); in dtrace_symbol_type()
1725 dtrace_object_iter(dtrace_hdl_t *dtp, dtrace_obj_f *func, void *data) in dtrace_object_iter() argument
1727 const dt_module_t *dmp = dt_list_next(&dtp->dt_modlist); in dtrace_object_iter()
1732 if ((rv = (*func)(dtp, dt_module_info(dmp, &dto), data)) != 0) in dtrace_object_iter()
1740 dtrace_object_info(dtrace_hdl_t *dtp, const char *object, dtrace_objinfo_t *dto) in dtrace_object_info() argument
1746 return (dt_set_errno(dtp, EINVAL)); in dtrace_object_info()
1748 if ((dmp = dt_module_from_object(dtp, object)) == NULL) in dtrace_object_info()
1751 if (dt_module_load(dtp, dmp) == -1) in dtrace_object_info()