Lines Matching defs:dtp

54 dt_provider_insert(dtrace_hdl_t *dtp, dt_provider_t *pvp, uint_t h)
56 dt_list_append(&dtp->dt_provlist, pvp);
58 pvp->pv_next = dtp->dt_provs[h];
59 dtp->dt_provs[h] = pvp;
60 dtp->dt_nprovs++;
66 dt_provider_lookup(dtrace_hdl_t *dtp, const char *name)
68 uint_t h = dt_strtab_hash(name, NULL) % dtp->dt_provbuckets;
72 for (pvp = dtp->dt_provs[h]; pvp != NULL; pvp = pvp->pv_next) {
78 (void) dt_set_errno(dtp, EDT_NOPROV);
85 if (dt_ioctl(dtp, DTRACEIOC_PROVIDER, &desc) == -1) {
86 (void) dt_set_errno(dtp, errno == ESRCH ? EDT_NOPROV : errno);
90 if ((pvp = dt_provider_create(dtp, name)) == NULL)
99 dt_provider_create(dtrace_hdl_t *dtp, const char *name)
103 if ((pvp = dt_zalloc(dtp, sizeof (dt_provider_t))) == NULL)
108 pvp->pv_gen = dtp->dt_gen;
109 pvp->pv_hdl = dtp;
112 dt_free(dtp, pvp);
113 (void) dt_set_errno(dtp, EDT_NOMEM);
123 return (dt_provider_insert(dtp, pvp,
124 dt_strtab_hash(name, NULL) % dtp->dt_provbuckets));
128 dt_provider_destroy(dtrace_hdl_t *dtp, dt_provider_t *pvp)
133 assert(pvp->pv_hdl == dtp);
135 h = dt_strtab_hash(pvp->pv_desc.dtvd_name, NULL) % dtp->dt_provbuckets;
136 pp = &dtp->dt_provs[h];
144 dt_list_delete(&dtp->dt_provlist, pvp);
145 dtp->dt_nprovs--;
151 dt_free(dtp, pvp->pv_xrefs);
152 dt_free(dtp, pvp);
156 dt_provider_xref(dtrace_hdl_t *dtp, dt_provider_t *pvp, id_t id)
159 size_t newsize = BT_SIZEOFMAP(dtp->dt_xlatorid);
161 assert(id >= 0 && id < dtp->dt_xlatorid);
164 ulong_t *xrefs = dt_zalloc(dtp, newsize);
170 dt_free(dtp, pvp->pv_xrefs);
173 pvp->pv_xrmax = dtp->dt_xlatorid;
240 dtrace_hdl_t *dtp = pvp->pv_hdl;
265 if (dt_ioctl(dtp, DTRACEIOC_PROBEARG, adp) != 0) {
266 (void) dt_set_errno(dtp, errno);
290 dt_pid_get_types(dtp, pdp, adv, &nc);
307 &dt_idops_probe, NULL, dtp->dt_gen);
310 (void) dt_set_errno(dtp, EDT_NOMEM);
314 if ((prp = dt_probe_create(dtp, idp, 2,
328 if (dtrace_type_strcompile(dtp,
333 dtrace_errmsg(dtp, dtrace_errno(dtp)));
348 } else if (dtrace_type_strcompile(dtp,
353 dtrace_errmsg(dtp, dtrace_errno(dtp)));
378 dtrace_hdl_t *dtp = pvp->pv_hdl;
384 if (dtrace_str2desc(dtp, DTRACE_PROBESPEC_NAME, s, &pd) != 0)
402 if (dt_ioctl(dtp, DTRACEIOC_PROBEMATCH, &pd) == 0)
406 (void) dt_set_errno(dtp, EDT_NOPROBE);
408 (void) dt_set_errno(dtp, errno);
414 dt_probe_create(dtrace_hdl_t *dtp, dt_ident_t *idp, int protoc,
437 if ((prp = dt_alloc(dtp, sizeof (dt_probe_t))) == NULL)
448 prp->pr_nargv = dt_alloc(dtp, sizeof (dt_node_t *) * nargc);
451 prp->pr_xargv = dt_alloc(dtp, sizeof (dt_node_t *) * xargc);
453 prp->pr_mapping = dt_alloc(dtp, sizeof (uint8_t) * xargc);
455 prp->pr_argv = dt_alloc(dtp, sizeof (dtrace_typeinfo_t) * xargc);
474 if ((dmp = dt_module_lookup_by_ctf(dtp,
509 dtrace_hdl_t *dtp;
512 dtp = prp->pr_pvp->pv_hdl;
514 dtp = yypcb->pcb_hdl;
519 dt_free(dtp, prp->pr_nargv);
520 dt_free(dtp, prp->pr_xargv);
524 dt_free(dtp, pip->pi_rname);
525 dt_free(dtp, pip->pi_fname);
526 dt_free(dtp, pip->pi_offs);
527 dt_free(dtp, pip->pi_enoffs);
528 dt_free(dtp, pip);
531 dt_free(dtp, prp->pr_mapping);
532 dt_free(dtp, prp->pr_argv);
533 dt_free(dtp, prp);
540 dtrace_hdl_t *dtp = pvp->pv_hdl;
554 if ((pip = dt_zalloc(dtp, sizeof (*pip))) == NULL)
557 if ((pip->pi_offs = dt_zalloc(dtp, sizeof (uint32_t))) == NULL)
560 if ((pip->pi_enoffs = dt_zalloc(dtp,
592 uint32_t *new_offs = dt_alloc(dtp, sizeof (uint32_t) * new_max);
599 dt_free(dtp, *offs);
615 dt_free(dtp, pip->pi_fname);
616 dt_free(dtp, pip->pi_enoffs);
617 dt_free(dtp, pip->pi_offs);
618 dt_free(dtp, pip);
619 return (dt_set_errno(dtp, EDT_NOMEM));
630 dtrace_hdl_t *dtp = prp->pr_pvp->pv_hdl;
643 if (dtrace_lookup_by_type(dtp, DTRACE_OBJ_DDEFS, tag, &dtt) != 0) {
645 dtt.dtt_ctfp = DT_DYN_CTFP(dtp);
646 dtt.dtt_type = ctf_add_typedef(DT_DYN_CTFP(dtp),
647 CTF_ADD_ROOT, tag, DT_DYN_TYPE(dtp));
667 dt_probe_desc(dtrace_hdl_t *dtp, const dtrace_probedesc_t *pdp, void *arg)
678 dt_probe_info(dtrace_hdl_t *dtp,
695 if ((pvp = dt_provider_lookup(dtp, pdp->dtpd_provider)) != NULL) {
707 if (dtp->dt_kinstfd == -1) {
712 (void) dt_set_errno(dtp, errno);
715 dtp->dt_kinstfd = fd;
725 if (ioctl(dtp->dt_kinstfd, KINSTIOC_MAKEPROBE, &pd) !=
727 (void) dt_set_errno(dtp, errno);
754 if ((m = dtrace_probe_iter(dtp, pdp, dt_probe_desc, &pd)) < 0)
757 if ((pvp = dt_provider_lookup(dtp, pd.dtpd_provider)) == NULL)
778 (void) dt_set_errno(dtp, EDT_UNSTABLE);
785 (void) dt_set_errno(dtp, EDT_UNSTABLE);
791 (void) dt_set_errno(dtp, EDT_UNSTABLE);
797 (void) dt_set_errno(dtp, EDT_UNSTABLE);
844 dtrace_probe_info(dtrace_hdl_t *dtp,
847 return (dt_probe_info(dtp, pdp, pip) != NULL ? 0 : -1);
867 dtrace_probe_iter(dtrace_hdl_t *dtp,
878 pit.pit_hdl = dtp;
883 for (pit.pit_pvp = dt_list_next(&dtp->dt_provlist);
911 if (dt_ioctl(dtp, cmd, &pd) != 0)
913 else if ((rv = func(dtp, &pd, arg)) != 0)
923 return (pit.pit_matches ? 0 : dt_set_errno(dtp, EDT_NOPROBE));
925 return (dt_set_errno(dtp, EDT_BADPGLOB));
927 return (dt_set_errno(dtp, errno));