Lines Matching defs:pvp

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;
57 return (pvp);
65 dt_provider_t *pvp;
67 for (pvp = dtp->dt_provs[h]; pvp != NULL; pvp = pvp->pv_next) {
68 if (strcmp(pvp->pv_desc.dtvd_name, name) == 0)
69 return (pvp);
85 if ((pvp = dt_provider_create(dtp, name)) == NULL)
88 bcopy(&desc, &pvp->pv_desc, sizeof (desc));
89 pvp->pv_flags |= DT_PROVIDER_IMPL;
90 return (pvp);
96 dt_provider_t *pvp;
98 if ((pvp = dt_zalloc(dtp, sizeof (dt_provider_t))) == NULL)
101 (void) strlcpy(pvp->pv_desc.dtvd_name, name, DTRACE_PROVNAMELEN);
102 pvp->pv_probes = dt_idhash_create(pvp->pv_desc.dtvd_name, NULL, 0, 0);
103 pvp->pv_gen = dtp->dt_gen;
104 pvp->pv_hdl = dtp;
106 if (pvp->pv_probes == NULL) {
107 dt_free(dtp, pvp);
112 pvp->pv_desc.dtvd_attr.dtpa_provider = _dtrace_prvattr;
113 pvp->pv_desc.dtvd_attr.dtpa_mod = _dtrace_prvattr;
114 pvp->pv_desc.dtvd_attr.dtpa_func = _dtrace_prvattr;
115 pvp->pv_desc.dtvd_attr.dtpa_name = _dtrace_prvattr;
116 pvp->pv_desc.dtvd_attr.dtpa_args = _dtrace_prvattr;
118 return (dt_provider_insert(dtp, pvp,
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;
133 while (*pp != NULL && *pp != pvp)
136 assert(*pp != NULL && *pp == pvp);
137 *pp = pvp->pv_next;
139 dt_list_delete(&dtp->dt_provlist, pvp);
142 if (pvp->pv_probes != NULL)
143 dt_idhash_destroy(pvp->pv_probes);
145 dt_node_link_free(&pvp->pv_nodes);
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)
153 size_t oldsize = BT_SIZEOFMAP(pvp->pv_xrmax);
164 bcopy(pvp->pv_xrefs, xrefs, oldsize);
165 dt_free(dtp, pvp->pv_xrefs);
167 pvp->pv_xrefs = xrefs;
168 pvp->pv_xrmax = dtp->dt_xlatorid;
171 BT_SET(pvp->pv_xrefs, id);
192 dt_probe_alloc_args(dt_provider_t *pvp, int argc)
198 if ((dnp = dt_node_xalloc(pvp->pv_hdl, DT_NODE_TYPE)) == NULL)
201 dnp->dn_link = pvp->pv_nodes;
202 pvp->pv_nodes = dnp;
233 dt_probe_discover(dt_provider_t *pvp, const dtrace_probedesc_t *pdp)
235 dtrace_hdl_t *dtp = pvp->pv_hdl;
249 assert(strcmp(pvp->pv_desc.dtvd_name, pdp->dtpd_provider) == 0);
253 pvp->pv_desc.dtvd_name, name, pdp->dtpd_id);
283 strncmp(pvp->pv_desc.dtvd_name, "pid", 3) == 0) {
294 xargs = dt_probe_alloc_args(pvp, xc);
295 nargs = dt_probe_alloc_args(pvp, nc);
315 dt_probe_declare(pvp, prp);
327 pvp->pv_desc.dtvd_name, name, i + 1,
347 pvp->pv_desc.dtvd_name, name, i + 1,
371 dt_probe_lookup(dt_provider_t *pvp, const char *s)
373 dtrace_hdl_t *dtp = pvp->pv_hdl;
390 if ((idp = dt_idhash_lookup(pvp->pv_probes, key)) != NULL)
398 return (dt_probe_discover(pvp, &pd));
487 dt_probe_declare(dt_provider_t *pvp, dt_probe_t *prp)
494 pvp->pv_flags &= ~DT_PROVIDER_INTF;
496 prp->pr_pvp = pvp;
497 dt_idhash_xinsert(pvp->pv_probes, prp->pr_ident);
530 dt_probe_define(dt_provider_t *pvp, dt_probe_t *prp,
533 dtrace_hdl_t *dtp = pvp->pv_hdl;
610 pvp->pv_desc.dtvd_name, prp->pr_ident->di_name, fname, offset,
684 dt_provider_t *pvp;
692 if ((pvp = dt_provider_lookup(dtp, pdp->dtpd_provider)) != NULL) {
696 if ((idp = dt_idhash_lookup(pvp->pv_probes, key)) != NULL)
699 prp = dt_probe_discover(pvp, pdp);
726 if ((pvp = dt_provider_lookup(dtp, pd.dtpd_provider)) == NULL)
745 if (pvp->pv_desc.dtvd_attr.dtpa_args.dtat_data <
752 if (pvp->pv_desc.dtvd_attr.dtpa_mod.dtat_name >=
758 if (pvp->pv_desc.dtvd_attr.dtpa_func.dtat_name >=
764 if (pvp->pv_desc.dtvd_attr.dtpa_name.dtat_name >=
776 prp = dt_probe_discover(pvp, &pd);
778 prp = dt_probe_lookup(pvp, pd.dtpd_name);
784 assert(pvp != NULL && prp != NULL);
794 pap = &pvp->pv_desc.dtvd_attr;