Lines Matching refs:dtp
49 dt_provider_insert(dtrace_hdl_t *dtp, dt_provider_t *pvp, uint_t h)
51 dt_list_append(&dtp->dt_provlist, pvp);
53 pvp->pv_next = dtp->dt_provs[h];
54 dtp->dt_provs[h] = pvp;
55 dtp->dt_nprovs++;
61 dt_provider_lookup(dtrace_hdl_t *dtp, const char *name)
63 uint_t h = dt_strtab_hash(name, NULL) % dtp->dt_provbuckets;
67 for (pvp = dtp->dt_provs[h]; pvp != NULL; pvp = pvp->pv_next) {
73 (void) dt_set_errno(dtp, EDT_NOPROV);
80 if (dt_ioctl(dtp, DTRACEIOC_PROVIDER, &desc) == -1) {
81 (void) dt_set_errno(dtp, errno == ESRCH ? EDT_NOPROV : errno);
85 if ((pvp = dt_provider_create(dtp, name)) == NULL)
94 dt_provider_create(dtrace_hdl_t *dtp, const char *name)
98 if ((pvp = dt_zalloc(dtp, sizeof (dt_provider_t))) == NULL)
103 pvp->pv_gen = dtp->dt_gen;
104 pvp->pv_hdl = dtp;
107 dt_free(dtp, pvp);
108 (void) dt_set_errno(dtp, EDT_NOMEM);
118 return (dt_provider_insert(dtp, pvp,
119 dt_strtab_hash(name, NULL) % dtp->dt_provbuckets));
123 dt_provider_destroy(dtrace_hdl_t *dtp, dt_provider_t *pvp)
128 assert(pvp->pv_hdl == dtp);
130 h = dt_strtab_hash(pvp->pv_desc.dtvd_name, NULL) % dtp->dt_provbuckets;
131 pp = &dtp->dt_provs[h];
139 dt_list_delete(&dtp->dt_provlist, pvp);
140 dtp->dt_nprovs--;
146 dt_free(dtp, pvp->pv_xrefs);
147 dt_free(dtp, pvp);
151 dt_provider_xref(dtrace_hdl_t *dtp, dt_provider_t *pvp, id_t id)
154 size_t newsize = BT_SIZEOFMAP(dtp->dt_xlatorid);
156 assert(id >= 0 && id < dtp->dt_xlatorid);
159 ulong_t *xrefs = dt_zalloc(dtp, newsize);
165 dt_free(dtp, pvp->pv_xrefs);
168 pvp->pv_xrmax = dtp->dt_xlatorid;
235 dtrace_hdl_t *dtp = pvp->pv_hdl;
260 if (dt_ioctl(dtp, DTRACEIOC_PROBEARG, adp) != 0) {
261 (void) dt_set_errno(dtp, errno);
285 dt_pid_get_types(dtp, pdp, adv, &nc);
302 &dt_idops_probe, NULL, dtp->dt_gen);
305 (void) dt_set_errno(dtp, EDT_NOMEM);
309 if ((prp = dt_probe_create(dtp, idp, 2,
323 if (dtrace_type_strcompile(dtp,
328 dtrace_errmsg(dtp, dtrace_errno(dtp)));
343 } else if (dtrace_type_strcompile(dtp,
348 dtrace_errmsg(dtp, dtrace_errno(dtp)));
373 dtrace_hdl_t *dtp = pvp->pv_hdl;
379 if (dtrace_str2desc(dtp, DTRACE_PROBESPEC_NAME, s, &pd) != 0)
397 if (dt_ioctl(dtp, DTRACEIOC_PROBEMATCH, &pd) == 0)
401 (void) dt_set_errno(dtp, EDT_NOPROBE);
403 (void) dt_set_errno(dtp, errno);
409 dt_probe_create(dtrace_hdl_t *dtp, dt_ident_t *idp, int protoc,
432 if ((prp = dt_alloc(dtp, sizeof (dt_probe_t))) == NULL)
443 prp->pr_nargv = dt_alloc(dtp, sizeof (dt_node_t *) * nargc);
446 prp->pr_xargv = dt_alloc(dtp, sizeof (dt_node_t *) * xargc);
448 prp->pr_mapping = dt_alloc(dtp, sizeof (uint8_t) * xargc);
450 prp->pr_argv = dt_alloc(dtp, sizeof (dtrace_typeinfo_t) * xargc);
469 if ((dmp = dt_module_lookup_by_ctf(dtp,
504 dtrace_hdl_t *dtp;
507 dtp = prp->pr_pvp->pv_hdl;
509 dtp = yypcb->pcb_hdl;
514 dt_free(dtp, prp->pr_nargv);
515 dt_free(dtp, prp->pr_xargv);
519 dt_free(dtp, pip->pi_offs);
520 dt_free(dtp, pip->pi_enoffs);
521 dt_free(dtp, pip);
524 dt_free(dtp, prp->pr_mapping);
525 dt_free(dtp, prp->pr_argv);
526 dt_free(dtp, prp);
533 dtrace_hdl_t *dtp = pvp->pv_hdl;
548 if ((pip = dt_zalloc(dtp, sizeof (*pip))) == NULL)
551 if ((pip->pi_offs = dt_zalloc(dtp,
553 dt_free(dtp, pip);
557 if ((pip->pi_enoffs = dt_zalloc(dtp,
559 dt_free(dtp, pip->pi_offs);
560 dt_free(dtp, pip);
567 dt_free(dtp, pip->pi_offs);
568 dt_free(dtp, pip);
569 return (dt_set_errno(dtp, EDT_COMPILER));
596 uint32_t *new_offs = dt_alloc(dtp, sizeof (uint32_t) * new_max);
603 dt_free(dtp, *offs);
627 dtrace_hdl_t *dtp = prp->pr_pvp->pv_hdl;
640 if (dtrace_lookup_by_type(dtp, DTRACE_OBJ_DDEFS, tag, &dtt) != 0) {
642 dtt.dtt_ctfp = DT_DYN_CTFP(dtp);
643 dtt.dtt_type = ctf_add_typedef(DT_DYN_CTFP(dtp),
644 CTF_ADD_ROOT, tag, DT_DYN_TYPE(dtp));
664 dt_probe_desc(dtrace_hdl_t *dtp, const dtrace_probedesc_t *pdp, void *arg)
675 dt_probe_info(dtrace_hdl_t *dtp,
692 if ((pvp = dt_provider_lookup(dtp, pdp->dtpd_provider)) != NULL) {
723 if ((m = dtrace_probe_iter(dtp, pdp, dt_probe_desc, &pd)) < 0)
726 if ((pvp = dt_provider_lookup(dtp, pd.dtpd_provider)) == NULL)
747 (void) dt_set_errno(dtp, EDT_UNSTABLE);
754 (void) dt_set_errno(dtp, EDT_UNSTABLE);
760 (void) dt_set_errno(dtp, EDT_UNSTABLE);
766 (void) dt_set_errno(dtp, EDT_UNSTABLE);
813 dtrace_probe_info(dtrace_hdl_t *dtp,
816 return (dt_probe_info(dtp, pdp, pip) != NULL ? 0 : -1);
836 dtrace_probe_iter(dtrace_hdl_t *dtp,
847 pit.pit_hdl = dtp;
852 for (pit.pit_pvp = dt_list_next(&dtp->dt_provlist);
880 if (dt_ioctl(dtp, cmd, &pd) != 0)
882 else if ((rv = func(dtp, &pd, arg)) != 0)
892 return (pit.pit_matches ? 0 : dt_set_errno(dtp, EDT_NOPROBE));
894 return (dt_set_errno(dtp, EDT_BADPGLOB));
896 return (dt_set_errno(dtp, errno));