Lines Matching defs:dtp
469 dt_module_create(dtrace_hdl_t *dtp, const char *name)
474 uint_t h = dt_strtab_hash(name, NULL) % dtp->dt_modbuckets;
477 for (dmp = dtp->dt_mods[h]; dmp != NULL; dmp = dmp->dm_next) {
487 dt_list_append(&dtp->dt_modlist, dmp);
488 dmp->dm_next = dtp->dt_mods[h];
489 dtp->dt_mods[h] = dmp;
490 dtp->dt_nmods++;
492 if (dtp->dt_conf.dtc_ctfmodel == CTF_MODEL_LP64)
510 idp = dt_idhash_lookup(dtp->dt_macros, "target");
527 dt_module_lookup_by_name(dtrace_hdl_t *dtp, const char *name)
529 uint_t h = dt_strtab_hash(name, NULL) % dtp->dt_modbuckets;
532 for (dmp = dtp->dt_mods[h]; dmp != NULL; dmp = dmp->dm_next) {
542 dt_module_lookup_by_ctf(dtrace_hdl_t *dtp, ctf_file_t *ctfp)
549 dt_kmodule_lookup(dtrace_hdl_t *dtp, const char *name)
551 uint_t h = dt_strtab_hash(name, NULL) % dtp->dt_modbuckets;
554 for (dkmp = dtp->dt_kmods[h]; dkmp != NULL; dkmp = dkmp->dkm_next) {
564 dt_module_load_sect(dtrace_hdl_t *dtp, dt_module_t *dmp, ctf_sect_t *ctsp)
573 return (dt_set_errno(dtp, EDT_NOTLOADED));
692 dt_module_load_proc(dtrace_hdl_t *dtp, dt_module_t *dmp)
701 p = dt_proc_grab(dtp, dmp->dm_pid, 0, PGRAB_RDONLY | PGRAB_FORCE);
704 return (dt_set_errno(dtp, EDT_CANTLOAD));
706 dt_proc_lock(dtp, p);
709 arg.dpa_dtp = dtp;
714 dt_proc_unlock(dtp, p);
715 dt_proc_release(dtp, p);
716 return (dt_set_errno(dtp, EDT_CANTLOAD));
721 dt_proc_unlock(dtp, p);
722 dt_proc_release(dtp, p);
723 return (dt_set_errno(dtp, EDT_CANTLOAD));
728 dt_proc_unlock(dtp, p);
729 dt_proc_release(dtp, p);
730 return (dt_set_errno(dtp, EDT_NOMEM));
736 dt_proc_unlock(dtp, p);
737 dt_proc_release(dtp, p);
738 return (dt_set_errno(dtp, EDT_NOMEM));
745 dt_proc_unlock(dtp, p);
746 dt_module_unload(dtp, dmp);
747 dt_proc_release(dtp, p);
748 return (dt_set_errno(dtp, EDT_CANTLOAD));
754 dt_proc_unlock(dtp, p);
755 dt_proc_release(dtp, p);
762 dt_module_load(dtrace_hdl_t *dtp, dt_module_t *dmp)
768 return (dt_module_load_proc(dtp, dmp));
801 if (dt_module_load_sect(dtp, dmp, &dmp->dm_ctdata) == -1 ||
802 dt_module_load_sect(dtp, dmp, &dmp->dm_symtab) == -1 ||
803 dt_module_load_sect(dtp, dmp, &dmp->dm_strtab) == -1) {
804 dt_module_unload(dtp, dmp);
824 dt_module_unload(dtp, dmp);
825 return (dt_set_errno(dtp, EDT_NOMEM));
839 dt_module_unload(dtp, dmp);
840 return (dt_set_errno(dtp, EDT_NOMEM));
853 dt_module_hasctf(dtrace_hdl_t *dtp, dt_module_t *dmp)
857 return (dt_module_getctf(dtp, dmp) != NULL);
861 dt_module_getctf(dtrace_hdl_t *dtp, dt_module_t *dmp)
868 if (dmp->dm_ctfp != NULL || dt_module_load(dtp, dmp) != 0)
882 if (dtp->dt_conf.dtc_ctfmodel != model) {
883 (void) dt_set_errno(dtp, EDT_DATAMODEL);
888 (void) dt_set_errno(dtp, EDT_NOCTF);
893 &dmp->dm_symtab, &dmp->dm_strtab, &dtp->dt_ctferr);
896 (void) dt_set_errno(dtp, EDT_CTF);
904 if ((pmp = dt_module_create(dtp, parent)) == NULL ||
905 (pfp = dt_module_getctf(dtp, pmp)) == NULL) {
907 (void) dt_set_errno(dtp, EDT_NOMEM);
912 dtp->dt_ctferr = ctf_errno(dmp->dm_ctfp);
913 (void) dt_set_errno(dtp, EDT_CTF);
931 dt_module_unload(dtrace_hdl_t *dtp, dt_module_t *dmp)
1012 dt_module_destroy(dtrace_hdl_t *dtp, dt_module_t *dmp)
1014 uint_t h = dt_strtab_hash(dmp->dm_name, NULL) % dtp->dt_modbuckets;
1015 dt_module_t **dmpp = &dtp->dt_mods[h];
1017 dt_list_delete(&dtp->dt_modlist, dmp);
1018 assert(dtp->dt_nmods != 0);
1019 dtp->dt_nmods--;
1033 dt_module_unload(dtp, dmp);
1044 dt_module_extern(dtrace_hdl_t *dtp, dt_module_t *dmp,
1053 (void) dt_set_errno(dtp, EDT_NOMEM);
1058 (void) dt_set_errno(dtp, EDT_SYMOFLOW);
1063 (void) dt_set_errno(dtp, EDT_NOMEM);
1068 _dtrace_symattr, 0, &dt_idops_thaw, NULL, dtp->dt_gen);
1071 (void) dt_set_errno(dtp, EDT_NOMEM);
1098 dt_module_getlibid(dtrace_hdl_t *dtp, dt_module_t *dmp, const ctf_file_t *fp)
1112 dt_module_getctflib(dtrace_hdl_t *dtp, dt_module_t *dmp, const char *name)
1132 dt_module_update(dtrace_hdl_t *dtp, struct kld_file_stat *k_stat)
1158 (dmp = dt_module_create(dtp, name)) == NULL) {
1181 dt_module_destroy(dtp, dmp);
1196 dt_module_destroy(dtp, dmp);
1207 dt_module_destroy(dtp, dmp);
1281 if (dt_kmodule_lookup(dtp, ms.name) != NULL)
1287 dt_module_destroy(dtp, dmp);
1291 h = dt_strtab_hash(ms.name, NULL) % dtp->dt_modbuckets;
1292 dkmp->dkm_next = dtp->dt_kmods[h];
1295 dtp->dt_kmods[h] = dkmp;
1307 dtrace_update(dtrace_hdl_t *dtp)
1315 for (dmp = dt_list_next(&dtp->dt_modlist);
1317 dt_module_unload(dtp, dmp);
1324 if (!(dtp->dt_oflags & DTRACE_O_NOSYS) &&
1330 dt_module_update(dtp, dp->d_name);
1344 dt_module_update(dtp, &k_stat);
1353 dt_idhash_lookup(dtp->dt_macros, "egid")->di_id = getegid();
1354 dt_idhash_lookup(dtp->dt_macros, "euid")->di_id = geteuid();
1355 dt_idhash_lookup(dtp->dt_macros, "gid")->di_id = getgid();
1356 dt_idhash_lookup(dtp->dt_macros, "pid")->di_id = getpid();
1357 dt_idhash_lookup(dtp->dt_macros, "pgid")->di_id = getpgid(0);
1358 dt_idhash_lookup(dtp->dt_macros, "ppid")->di_id = getppid();
1360 dt_idhash_lookup(dtp->dt_macros, "projid")->di_id = getprojid();
1362 dt_idhash_lookup(dtp->dt_macros, "sid")->di_id = getsid(0);
1364 dt_idhash_lookup(dtp->dt_macros, "taskid")->di_id = gettaskid();
1366 dt_idhash_lookup(dtp->dt_macros, "uid")->di_id = getuid();
1374 dtp->dt_exec = dt_module_lookup_by_name(dtp, "genunix");
1375 dtp->dt_rtld = dt_module_lookup_by_name(dtp, "krtld");
1376 if (dtp->dt_rtld == NULL)
1377 dtp->dt_rtld = dt_module_lookup_by_name(dtp, "unix");
1386 if (dtp->dt_exec != NULL &&
1387 dtp->dt_cdefs == NULL && dtp->dt_ddefs == NULL) {
1388 dt_list_delete(&dtp->dt_modlist, dtp->dt_exec);
1389 dt_list_prepend(&dtp->dt_modlist, dtp->dt_exec);
1394 dt_module_from_object(dtrace_hdl_t *dtp, const char *object)
1401 dmp = dtp->dt_exec;
1404 dmp = dtp->dt_rtld;
1407 dmp = dtp->dt_cdefs;
1410 dmp = dtp->dt_ddefs;
1413 dmp = dt_module_create(dtp, object);
1418 (void) dt_set_errno(dtp, err);
1428 dtrace_lookup_by_name(dtrace_hdl_t *dtp, const char *object, const char *name,
1442 if ((dmp = dt_module_from_object(dtp, object)) == NULL)
1445 if (dt_module_load(dtp, dmp) == -1)
1455 dmp = dt_list_next(&dtp->dt_modlist);
1456 n = dtp->dt_nmods;
1466 if (dt_module_load(dtp, dmp) == -1)
1502 return (dt_set_errno(dtp, EDT_NOSYM));
1510 dtrace_lookup_by_addr(dtrace_hdl_t *dtp, GElf_Addr addr,
1515 const dtrace_vector_t *v = dtp->dt_vector;
1518 return (v->dtv_lookup_by_addr(dtp->dt_varg, addr, symp, sip));
1520 for (dmp = dt_list_next(&dtp->dt_modlist); dmp != NULL;
1529 return (dt_set_errno(dtp, EDT_NOSYMADDR));
1531 if (dt_module_load(dtp, dmp) == -1)
1536 return (dt_set_errno(dtp, EDT_NOSYMADDR));
1556 dtrace_lookup_by_type(dtrace_hdl_t *dtp, const char *object, const char *name,
1574 if ((dmp = dt_module_from_object(dtp, object)) == NULL)
1577 if (dt_module_load(dtp, dmp) == -1)
1587 dmp = dt_list_next(&dtp->dt_modlist);
1588 n = dtp->dt_nmods;
1604 if (dt_module_hasctf(dtp, dmp) == 0) {
1623 return (dt_set_errno(dtp, EDT_NOMEM));
1628 fp = dt_module_getctflib(dtp, dmp, buf);
1655 return (dt_set_errno(dtp, EDT_NOTYPE));
1661 dtrace_symbol_type(dtrace_hdl_t *dtp, const GElf_Sym *symp,
1671 if ((dmp = dt_module_lookup_by_name(dtp, sip->dts_object)) == NULL)
1672 return (dt_set_errno(dtp, EDT_NOMOD));
1679 return (dt_set_errno(dtp, EDT_NOSYM));
1685 if (dt_module_getctf(dtp, dmp) == NULL)
1692 dtp->dt_ctferr = ctf_errno(tip->dtt_ctfp);
1693 return (dt_set_errno(dtp, EDT_CTF));
1697 tip->dtt_ctfp = DT_FPTR_CTFP(dtp);
1698 tip->dtt_type = DT_FPTR_TYPE(dtp);
1729 dtrace_object_iter(dtrace_hdl_t *dtp, dtrace_obj_f *func, void *data)
1731 const dt_module_t *dmp = dt_list_next(&dtp->dt_modlist);
1736 if ((rv = (*func)(dtp, dt_module_info(dmp, &dto), data)) != 0)
1744 dtrace_object_info(dtrace_hdl_t *dtp, const char *object, dtrace_objinfo_t *dto)
1750 return (dt_set_errno(dtp, EINVAL));
1752 if ((dmp = dt_module_from_object(dtp, object)) == NULL)
1755 if (dt_module_load(dtp, dmp) == -1)