Lines Matching refs:dtp
422 dt_module_create(dtrace_hdl_t *dtp, const char *name)
427 uint_t h = dt_strtab_hash(name, NULL) % dtp->dt_modbuckets;
430 for (dmp = dtp->dt_mods[h]; dmp != NULL; dmp = dmp->dm_next) {
440 dt_list_append(&dtp->dt_modlist, dmp);
441 dmp->dm_next = dtp->dt_mods[h];
442 dtp->dt_mods[h] = dmp;
443 dtp->dt_nmods++;
445 if (dtp->dt_conf.dtc_ctfmodel == CTF_MODEL_LP64)
463 idp = dt_idhash_lookup(dtp->dt_macros, "target");
480 dt_module_lookup_by_name(dtrace_hdl_t *dtp, const char *name)
482 uint_t h = dt_strtab_hash(name, NULL) % dtp->dt_modbuckets;
485 for (dmp = dtp->dt_mods[h]; dmp != NULL; dmp = dmp->dm_next) {
495 dt_module_lookup_by_ctf(dtrace_hdl_t *dtp, ctf_file_t *ctfp)
501 dt_module_load_sect(dtrace_hdl_t *dtp, dt_module_t *dmp, ctf_sect_t *ctsp)
510 return (dt_set_errno(dtp, EDT_NOTLOADED));
623 dt_module_load_proc(dtrace_hdl_t *dtp, dt_module_t *dmp)
632 p = dt_proc_grab(dtp, dmp->dm_pid, 0, PGRAB_RDONLY | PGRAB_FORCE);
635 return (dt_set_errno(dtp, EDT_CANTLOAD));
637 dt_proc_lock(dtp, p);
640 arg.dpa_dtp = dtp;
645 dt_proc_release(dtp, p);
646 return (dt_set_errno(dtp, EDT_CANTLOAD));
651 dt_proc_unlock(dtp, p);
652 dt_proc_release(dtp, p);
653 return (dt_set_errno(dtp, EDT_CANTLOAD));
658 dt_proc_unlock(dtp, p);
659 dt_proc_release(dtp, p);
660 return (dt_set_errno(dtp, EDT_NOMEM));
667 dt_proc_unlock(dtp, p);
668 dt_proc_release(dtp, p);
669 return (dt_set_errno(dtp, EDT_NOMEM));
677 dt_proc_unlock(dtp, p);
678 dt_module_unload(dtp, dmp);
679 dt_proc_release(dtp, p);
680 return (dt_set_errno(dtp, EDT_CANTLOAD));
686 dt_proc_unlock(dtp, p);
687 dt_proc_release(dtp, p);
694 dt_module_load(dtrace_hdl_t *dtp, dt_module_t *dmp)
700 return (dt_module_load_proc(dtp, dmp));
733 if (dt_module_load_sect(dtp, dmp, &dmp->dm_ctdata) == -1 ||
734 dt_module_load_sect(dtp, dmp, &dmp->dm_symtab) == -1 ||
735 dt_module_load_sect(dtp, dmp, &dmp->dm_strtab) == -1) {
736 dt_module_unload(dtp, dmp);
756 dt_module_unload(dtp, dmp);
757 return (dt_set_errno(dtp, EDT_NOMEM));
774 dt_module_unload(dtp, dmp);
775 return (dt_set_errno(dtp, EDT_NOMEM));
788 dt_module_hasctf(dtrace_hdl_t *dtp, dt_module_t *dmp)
792 return (dt_module_getctf(dtp, dmp) != NULL);
796 dt_module_getctf(dtrace_hdl_t *dtp, dt_module_t *dmp)
803 if (dmp->dm_ctfp != NULL || dt_module_load(dtp, dmp) != 0)
817 if (dtp->dt_conf.dtc_ctfmodel != model) {
818 (void) dt_set_errno(dtp, EDT_DATAMODEL);
823 (void) dt_set_errno(dtp, EDT_NOCTF);
828 &dmp->dm_symtab, &dmp->dm_strtab, &dtp->dt_ctferr);
831 (void) dt_set_errno(dtp, EDT_CTF);
839 if ((pmp = dt_module_create(dtp, parent)) == NULL ||
840 (pfp = dt_module_getctf(dtp, pmp)) == NULL) {
842 (void) dt_set_errno(dtp, EDT_NOMEM);
847 dtp->dt_ctferr = ctf_errno(dmp->dm_ctfp);
848 (void) dt_set_errno(dtp, EDT_CTF);
866 dt_module_unload(dtrace_hdl_t *dtp, dt_module_t *dmp)
930 dt_module_destroy(dtrace_hdl_t *dtp, dt_module_t *dmp)
932 uint_t h = dt_strtab_hash(dmp->dm_name, NULL) % dtp->dt_modbuckets;
933 dt_module_t **dmpp = &dtp->dt_mods[h];
935 dt_list_delete(&dtp->dt_modlist, dmp);
936 assert(dtp->dt_nmods != 0);
937 dtp->dt_nmods--;
951 dt_module_unload(dtp, dmp);
962 dt_module_extern(dtrace_hdl_t *dtp, dt_module_t *dmp,
971 (void) dt_set_errno(dtp, EDT_NOMEM);
976 (void) dt_set_errno(dtp, EDT_SYMOFLOW);
981 (void) dt_set_errno(dtp, EDT_NOMEM);
986 _dtrace_symattr, 0, &dt_idops_thaw, NULL, dtp->dt_gen);
989 (void) dt_set_errno(dtp, EDT_NOMEM);
1016 dt_module_getlibid(dtrace_hdl_t *dtp, dt_module_t *dmp, const ctf_file_t *fp)
1030 dt_module_getctflib(dtrace_hdl_t *dtp, dt_module_t *dmp, const char *name)
1047 dt_module_update(dtrace_hdl_t *dtp, const char *name)
1064 (dmp = dt_module_create(dtp, name)) == NULL) {
1084 dt_module_destroy(dtp, dmp);
1099 dt_module_destroy(dtp, dmp);
1147 dtrace_update(dtrace_hdl_t *dtp)
1152 for (dmp = dt_list_next(&dtp->dt_modlist);
1154 dt_module_unload(dtp, dmp);
1160 if (!(dtp->dt_oflags & DTRACE_O_NOSYS) &&
1166 dt_module_update(dtp, dp->d_name);
1177 dt_idhash_lookup(dtp->dt_macros, "egid")->di_id = getegid();
1178 dt_idhash_lookup(dtp->dt_macros, "euid")->di_id = geteuid();
1179 dt_idhash_lookup(dtp->dt_macros, "gid")->di_id = getgid();
1180 dt_idhash_lookup(dtp->dt_macros, "pid")->di_id = getpid();
1181 dt_idhash_lookup(dtp->dt_macros, "pgid")->di_id = getpgid(0);
1182 dt_idhash_lookup(dtp->dt_macros, "ppid")->di_id = getppid();
1183 dt_idhash_lookup(dtp->dt_macros, "projid")->di_id = getprojid();
1184 dt_idhash_lookup(dtp->dt_macros, "sid")->di_id = getsid(0);
1185 dt_idhash_lookup(dtp->dt_macros, "taskid")->di_id = gettaskid();
1186 dt_idhash_lookup(dtp->dt_macros, "uid")->di_id = getuid();
1194 dtp->dt_exec = dt_module_lookup_by_name(dtp, "genunix");
1195 dtp->dt_rtld = dt_module_lookup_by_name(dtp, "krtld");
1196 if (dtp->dt_rtld == NULL)
1197 dtp->dt_rtld = dt_module_lookup_by_name(dtp, "unix");
1206 if (dtp->dt_exec != NULL &&
1207 dtp->dt_cdefs == NULL && dtp->dt_ddefs == NULL) {
1208 dt_list_delete(&dtp->dt_modlist, dtp->dt_exec);
1209 dt_list_prepend(&dtp->dt_modlist, dtp->dt_exec);
1214 dt_module_from_object(dtrace_hdl_t *dtp, const char *object)
1221 dmp = dtp->dt_exec;
1224 dmp = dtp->dt_rtld;
1227 dmp = dtp->dt_cdefs;
1230 dmp = dtp->dt_ddefs;
1233 dmp = dt_module_create(dtp, object);
1238 (void) dt_set_errno(dtp, err);
1248 dtrace_lookup_by_name(dtrace_hdl_t *dtp, const char *object, const char *name,
1262 if ((dmp = dt_module_from_object(dtp, object)) == NULL)
1265 if (dt_module_load(dtp, dmp) == -1)
1275 dmp = dt_list_next(&dtp->dt_modlist);
1276 n = dtp->dt_nmods;
1286 if (dt_module_load(dtp, dmp) == -1)
1322 return (dt_set_errno(dtp, EDT_NOSYM));
1330 dtrace_lookup_by_addr(dtrace_hdl_t *dtp, GElf_Addr addr,
1335 const dtrace_vector_t *v = dtp->dt_vector;
1338 return (v->dtv_lookup_by_addr(dtp->dt_varg, addr, symp, sip));
1340 for (dmp = dt_list_next(&dtp->dt_modlist); dmp != NULL;
1349 return (dt_set_errno(dtp, EDT_NOSYMADDR));
1351 if (dt_module_load(dtp, dmp) == -1)
1356 return (dt_set_errno(dtp, EDT_NOSYMADDR));
1376 dtrace_lookup_by_type(dtrace_hdl_t *dtp, const char *object, const char *name,
1394 if ((dmp = dt_module_from_object(dtp, object)) == NULL)
1397 if (dt_module_load(dtp, dmp) == -1)
1407 dmp = dt_list_next(&dtp->dt_modlist);
1408 n = dtp->dt_nmods;
1424 if (dt_module_hasctf(dtp, dmp) == 0) {
1443 return (dt_set_errno(dtp, EDT_NOMEM));
1448 fp = dt_module_getctflib(dtp, dmp, buf);
1475 return (dt_set_errno(dtp, EDT_NOTYPE));
1481 dtrace_symbol_type(dtrace_hdl_t *dtp, const GElf_Sym *symp,
1491 if ((dmp = dt_module_lookup_by_name(dtp, sip->dts_object)) == NULL)
1492 return (dt_set_errno(dtp, EDT_NOMOD));
1499 return (dt_set_errno(dtp, EDT_NOSYM));
1505 if (dt_module_getctf(dtp, dmp) == NULL)
1512 dtp->dt_ctferr = ctf_errno(tip->dtt_ctfp);
1513 return (dt_set_errno(dtp, EDT_CTF));
1517 tip->dtt_ctfp = DT_FPTR_CTFP(dtp);
1518 tip->dtt_type = DT_FPTR_TYPE(dtp);
1549 dtrace_object_iter(dtrace_hdl_t *dtp, dtrace_obj_f *func, void *data)
1551 const dt_module_t *dmp = dt_list_next(&dtp->dt_modlist);
1556 if ((rv = (*func)(dtp, dt_module_info(dmp, &dto), data)) != 0)
1564 dtrace_object_info(dtrace_hdl_t *dtp, const char *object, dtrace_objinfo_t *dto)
1570 return (dt_set_errno(dtp, EINVAL));
1572 if ((dmp = dt_module_from_object(dtp, object)) == NULL)
1575 if (dt_module_load(dtp, dmp) == -1)