Lines Matching refs:dxp

50 	dt_xlator_t *dxp = arg;  in dt_xlator_create_member()  local
51 dtrace_hdl_t *dtp = dxp->dx_hdl; in dt_xlator_create_member()
57 enp->dn_link = dxp->dx_nodes; in dt_xlator_create_member()
58 dxp->dx_nodes = enp; in dt_xlator_create_member()
63 mnp->dn_link = dxp->dx_nodes; in dt_xlator_create_member()
64 dxp->dx_nodes = mnp; in dt_xlator_create_member()
72 enp->dn_xlator = dxp; in dt_xlator_create_member()
74 dt_node_type_assign(enp, dxp->dx_dst_ctfp, type, B_FALSE); in dt_xlator_create_member()
80 if (dxp->dx_members != NULL) { in dt_xlator_create_member()
84 dxp->dx_members = mnp; in dt_xlator_create_member()
88 dt_node_type_assign(mnp, dxp->dx_dst_ctfp, type, B_FALSE); in dt_xlator_create_member()
101 dt_xlator_t *dxp = dt_zalloc(dtp, sizeof (dt_xlator_t)); in dt_xlator_create() local
107 if (dxp == NULL) in dt_xlator_create()
110 dxp->dx_hdl = dtp; in dt_xlator_create()
111 dxp->dx_id = dtp->dt_xlatorid++; in dt_xlator_create()
112 dxp->dx_gen = dtp->dt_gen; in dt_xlator_create()
113 dxp->dx_arg = -1; in dt_xlator_create()
115 if ((map = dt_alloc(dtp, sizeof (void *) * (dxp->dx_id + 1))) == NULL) { in dt_xlator_create()
116 dt_free(dtp, dxp); in dt_xlator_create()
120 dt_list_append(&dtp->dt_xlators, dxp); in dt_xlator_create()
121 bcopy(dtp->dt_xlatormap, map, sizeof (void *) * dxp->dx_id); in dt_xlator_create()
124 dtp->dt_xlatormap[dxp->dx_id] = dxp; in dt_xlator_create()
131 dxp->dx_ident = dt_ident_create(name ? name : "T", in dt_xlator_create()
135 if (dxp->dx_ident == NULL) in dt_xlator_create()
138 dxp->dx_ident->di_ctfp = src->dtt_ctfp; in dt_xlator_create()
139 dxp->dx_ident->di_type = src->dtt_type; in dt_xlator_create()
146 dxp->dx_locals = dt_idhash_create("xlparams", NULL, 0, 0); in dt_xlator_create()
148 if (dxp->dx_locals == NULL) in dt_xlator_create()
151 dt_idhash_xinsert(dxp->dx_locals, dxp->dx_ident); in dt_xlator_create()
154 dxp->dx_souid.di_name = "translator"; in dt_xlator_create()
155 dxp->dx_souid.di_kind = DT_IDENT_XLSOU; in dt_xlator_create()
156 dxp->dx_souid.di_flags = DT_IDFLG_REF; in dt_xlator_create()
157 dxp->dx_souid.di_id = dxp->dx_id; in dt_xlator_create()
158 dxp->dx_souid.di_attr = _dtrace_defattr; in dt_xlator_create()
159 dxp->dx_souid.di_ops = &dt_idops_thaw; in dt_xlator_create()
160 dxp->dx_souid.di_data = dxp; in dt_xlator_create()
161 dxp->dx_souid.di_ctfp = dst->dtt_ctfp; in dt_xlator_create()
162 dxp->dx_souid.di_type = dst->dtt_type; in dt_xlator_create()
163 dxp->dx_souid.di_gen = dtp->dt_gen; in dt_xlator_create()
165 dxp->dx_ptrid.di_name = "translator"; in dt_xlator_create()
166 dxp->dx_ptrid.di_kind = DT_IDENT_XLPTR; in dt_xlator_create()
167 dxp->dx_ptrid.di_flags = DT_IDFLG_REF; in dt_xlator_create()
168 dxp->dx_ptrid.di_id = dxp->dx_id; in dt_xlator_create()
169 dxp->dx_ptrid.di_attr = _dtrace_defattr; in dt_xlator_create()
170 dxp->dx_ptrid.di_ops = &dt_idops_thaw; in dt_xlator_create()
171 dxp->dx_ptrid.di_data = dxp; in dt_xlator_create()
172 dxp->dx_ptrid.di_ctfp = ptr.dtt_ctfp; in dt_xlator_create()
173 dxp->dx_ptrid.di_type = ptr.dtt_type; in dt_xlator_create()
174 dxp->dx_ptrid.di_gen = dtp->dt_gen; in dt_xlator_create()
183 dtp->dt_globals->dh_defer(dtp->dt_globals, &dxp->dx_souid); in dt_xlator_create()
184 dxp->dx_ptrid.di_attr = dxp->dx_souid.di_attr; in dt_xlator_create()
185 dxp->dx_ptrid.di_vers = dxp->dx_souid.di_vers; in dt_xlator_create()
188 dxp->dx_src_ctfp = src->dtt_ctfp; in dt_xlator_create()
189 dxp->dx_src_type = src->dtt_type; in dt_xlator_create()
190 dxp->dx_src_base = ctf_type_resolve(src->dtt_ctfp, src->dtt_type); in dt_xlator_create()
192 dxp->dx_dst_ctfp = dst->dtt_ctfp; in dt_xlator_create()
193 dxp->dx_dst_type = dst->dtt_type; in dt_xlator_create()
194 dxp->dx_dst_base = ctf_type_resolve(dst->dtt_ctfp, dst->dtt_type); in dt_xlator_create()
196 kind = ctf_type_kind(dst->dtt_ctfp, dxp->dx_dst_base); in dt_xlator_create()
205 if (ctf_member_iter(dxp->dx_dst_ctfp, dxp->dx_dst_base, in dt_xlator_create()
206 dt_xlator_create_member, dxp) != 0) in dt_xlator_create()
209 dxp->dx_members = members; in dt_xlator_create()
210 dxp->dx_nodes = nodes; in dt_xlator_create()
217 for (dnp = dxp->dx_members; dnp != NULL; dnp = dnp->dn_list) { in dt_xlator_create()
218 dnp->dn_membxlator = dxp; in dt_xlator_create()
219 dnp->dn_membid = dxp->dx_nmembers++; in dt_xlator_create()
222 dxp->dx_membdif = dt_zalloc(dtp, in dt_xlator_create()
223 sizeof (dtrace_difo_t *) * dxp->dx_nmembers); in dt_xlator_create()
225 if (dxp->dx_membdif == NULL) { in dt_xlator_create()
226 dxp->dx_nmembers = 0; in dt_xlator_create()
230 return (dxp); in dt_xlator_create()
233 dt_xlator_destroy(dtp, dxp); in dt_xlator_create()
238 dt_xlator_destroy(dtrace_hdl_t *dtp, dt_xlator_t *dxp) in dt_xlator_destroy() argument
242 dt_node_link_free(&dxp->dx_nodes); in dt_xlator_destroy()
244 if (dxp->dx_locals != NULL) in dt_xlator_destroy()
245 dt_idhash_destroy(dxp->dx_locals); in dt_xlator_destroy()
246 else if (dxp->dx_ident != NULL) in dt_xlator_destroy()
247 dt_ident_destroy(dxp->dx_ident); in dt_xlator_destroy()
249 for (i = 0; i < dxp->dx_nmembers; i++) in dt_xlator_destroy()
250 dt_difo_free(dtp, dxp->dx_membdif[i]); in dt_xlator_destroy()
252 dt_free(dtp, dxp->dx_membdif); in dt_xlator_destroy()
253 dt_list_delete(&dtp->dt_xlators, dxp); in dt_xlator_destroy()
254 dt_free(dtp, dxp); in dt_xlator_destroy()
272 dt_xlator_t *dxp = NULL; in dt_xlator_lookup() local
300 for (dxp = dt_list_next(&dtp->dt_xlators); dxp != NULL; in dt_xlator_lookup()
301 dxp = dt_list_next(dxp)) { in dt_xlator_lookup()
302 if (ctf_type_compat(dxp->dx_src_ctfp, dxp->dx_src_type, in dt_xlator_lookup()
304 ctf_type_compat(dxp->dx_dst_ctfp, dxp->dx_dst_base, in dt_xlator_lookup()
312 for (dxp = dt_list_next(&dtp->dt_xlators); dxp != NULL; in dt_xlator_lookup()
313 dxp = dt_list_next(dxp)) { in dt_xlator_lookup()
314 if (ctf_type_compat(dxp->dx_src_ctfp, dxp->dx_src_base, in dt_xlator_lookup()
316 ctf_type_compat(dxp->dx_dst_ctfp, dxp->dx_dst_base, in dt_xlator_lookup()
321 for (dxp = dt_list_next(&dtp->dt_xlators); dxp != NULL; in dt_xlator_lookup()
322 dxp = dt_list_next(dxp)) { in dt_xlator_lookup()
323 dt_node_type_assign(&xn, dxp->dx_src_ctfp, dxp->dx_src_type, in dt_xlator_lookup()
325 if (ctf_type_compat(dxp->dx_dst_ctfp, dxp->dx_dst_base, in dt_xlator_lookup()
331 if (ptr && dxp != NULL && dxp->dx_ptrid.di_type == CTF_ERR) in dt_xlator_lookup()
334 if (dxp != NULL || !(flags & DT_XLATE_EXTERN) || in dt_xlator_lookup()
336 return (dxp); /* we succeeded or not allowed to extern */ in dt_xlator_lookup()
361 dt_xlator_ident(dt_xlator_t *dxp, ctf_file_t *ctfp, ctf_id_t type) in dt_xlator_ident() argument
364 return (&dxp->dx_ptrid); in dt_xlator_ident()
366 return (&dxp->dx_souid); in dt_xlator_ident()
370 dt_xlator_member(dt_xlator_t *dxp, const char *name) in dt_xlator_member() argument
374 for (dnp = dxp->dx_members; dnp != NULL; dnp = dnp->dn_list) { in dt_xlator_member()
383 dt_xlator_dynamic(const dt_xlator_t *dxp) in dt_xlator_dynamic() argument
385 return (dxp->dx_locals == NULL); in dt_xlator_dynamic()