Lines Matching refs:ddo
48 dt_dof_t *ddo = &dtp->dt_dof; in dt_dof_init() local
50 ddo->ddo_hdl = dtp; in dt_dof_init()
51 ddo->ddo_nsecs = 0; in dt_dof_init()
52 ddo->ddo_strsec = DOF_SECIDX_NONE; in dt_dof_init()
53 ddo->ddo_xlimport = NULL; in dt_dof_init()
54 ddo->ddo_xlexport = NULL; in dt_dof_init()
56 dt_buf_create(dtp, &ddo->ddo_secs, "section headers", 0); in dt_dof_init()
57 dt_buf_create(dtp, &ddo->ddo_strs, "string table", 0); in dt_dof_init()
58 dt_buf_create(dtp, &ddo->ddo_ldata, "loadable data", 0); in dt_dof_init()
59 dt_buf_create(dtp, &ddo->ddo_udata, "unloadable data", 0); in dt_dof_init()
61 dt_buf_create(dtp, &ddo->ddo_probes, "probe data", 0); in dt_dof_init()
62 dt_buf_create(dtp, &ddo->ddo_args, "probe args", 0); in dt_dof_init()
63 dt_buf_create(dtp, &ddo->ddo_offs, "probe offs", 0); in dt_dof_init()
64 dt_buf_create(dtp, &ddo->ddo_enoffs, "probe is-enabled offs", 0); in dt_dof_init()
65 dt_buf_create(dtp, &ddo->ddo_rels, "probe rels", 0); in dt_dof_init()
67 dt_buf_create(dtp, &ddo->ddo_xlms, "xlate members", 0); in dt_dof_init()
73 dt_dof_t *ddo = &dtp->dt_dof; in dt_dof_fini() local
75 dt_free(dtp, ddo->ddo_xlimport); in dt_dof_fini()
76 dt_free(dtp, ddo->ddo_xlexport); in dt_dof_fini()
78 dt_buf_destroy(dtp, &ddo->ddo_secs); in dt_dof_fini()
79 dt_buf_destroy(dtp, &ddo->ddo_strs); in dt_dof_fini()
80 dt_buf_destroy(dtp, &ddo->ddo_ldata); in dt_dof_fini()
81 dt_buf_destroy(dtp, &ddo->ddo_udata); in dt_dof_fini()
83 dt_buf_destroy(dtp, &ddo->ddo_probes); in dt_dof_fini()
84 dt_buf_destroy(dtp, &ddo->ddo_args); in dt_dof_fini()
85 dt_buf_destroy(dtp, &ddo->ddo_offs); in dt_dof_fini()
86 dt_buf_destroy(dtp, &ddo->ddo_enoffs); in dt_dof_fini()
87 dt_buf_destroy(dtp, &ddo->ddo_rels); in dt_dof_fini()
89 dt_buf_destroy(dtp, &ddo->ddo_xlms); in dt_dof_fini()
95 dt_dof_t *ddo = &dtp->dt_dof; in dt_dof_reset() local
98 assert(ddo->ddo_hdl == dtp); in dt_dof_reset()
99 ddo->ddo_pgp = pgp; in dt_dof_reset()
101 ddo->ddo_nsecs = 0; in dt_dof_reset()
102 ddo->ddo_strsec = DOF_SECIDX_NONE; in dt_dof_reset()
104 dt_free(dtp, ddo->ddo_xlimport); in dt_dof_reset()
105 dt_free(dtp, ddo->ddo_xlexport); in dt_dof_reset()
107 ddo->ddo_xlimport = dt_alloc(dtp, sizeof (dof_secidx_t) * nx); in dt_dof_reset()
108 ddo->ddo_xlexport = dt_alloc(dtp, sizeof (dof_secidx_t) * nx); in dt_dof_reset()
110 if (nx != 0 && (ddo->ddo_xlimport == NULL || ddo->ddo_xlexport == NULL)) in dt_dof_reset()
114 ddo->ddo_xlimport[i] = DOF_SECIDX_NONE; in dt_dof_reset()
115 ddo->ddo_xlexport[i] = DOF_SECIDX_NONE; in dt_dof_reset()
118 dt_buf_reset(dtp, &ddo->ddo_secs); in dt_dof_reset()
119 dt_buf_reset(dtp, &ddo->ddo_strs); in dt_dof_reset()
120 dt_buf_reset(dtp, &ddo->ddo_ldata); in dt_dof_reset()
121 dt_buf_reset(dtp, &ddo->ddo_udata); in dt_dof_reset()
123 dt_buf_reset(dtp, &ddo->ddo_probes); in dt_dof_reset()
124 dt_buf_reset(dtp, &ddo->ddo_args); in dt_dof_reset()
125 dt_buf_reset(dtp, &ddo->ddo_offs); in dt_dof_reset()
126 dt_buf_reset(dtp, &ddo->ddo_enoffs); in dt_dof_reset()
127 dt_buf_reset(dtp, &ddo->ddo_rels); in dt_dof_reset()
129 dt_buf_reset(dtp, &ddo->ddo_xlms); in dt_dof_reset()
139 dof_add_lsect(dt_dof_t *ddo, const void *data, uint32_t type, in dof_add_lsect() argument
142 dtrace_hdl_t *dtp = ddo->ddo_hdl; in dof_add_lsect()
149 s.dofs_offset = dt_buf_offset(&ddo->ddo_ldata, align); in dof_add_lsect()
152 dt_buf_write(dtp, &ddo->ddo_secs, &s, sizeof (s), sizeof (uint64_t)); in dof_add_lsect()
155 dt_buf_write(dtp, &ddo->ddo_ldata, data, size, align); in dof_add_lsect()
157 return (ddo->ddo_nsecs++); in dof_add_lsect()
166 dof_add_usect(dt_dof_t *ddo, const void *data, uint32_t type, in dof_add_usect() argument
169 dtrace_hdl_t *dtp = ddo->ddo_hdl; in dof_add_usect()
176 s.dofs_offset = dt_buf_offset(&ddo->ddo_udata, align); in dof_add_usect()
179 dt_buf_write(dtp, &ddo->ddo_secs, &s, sizeof (s), sizeof (uint64_t)); in dof_add_usect()
182 dt_buf_write(dtp, &ddo->ddo_udata, data, size, align); in dof_add_usect()
184 return (ddo->ddo_nsecs++); in dof_add_usect()
192 dof_add_string(dt_dof_t *ddo, const char *s) in dof_add_string() argument
194 dt_buf_t *bp = &ddo->ddo_strs; in dof_add_string()
200 dt_buf_write(ddo->ddo_hdl, bp, s, strlen(s) + 1, sizeof (char)); in dof_add_string()
211 dof_add_difo(dt_dof_t *ddo, const dtrace_difo_t *dp) in dof_add_difo() argument
225 dsecs[nsecs++] = dof_add_lsect(ddo, dp->dtdo_buf, in dof_add_difo()
231 dsecs[nsecs++] = intsec = dof_add_lsect(ddo, dp->dtdo_inttab, in dof_add_difo()
237 dsecs[nsecs++] = strsec = dof_add_lsect(ddo, dp->dtdo_strtab, in dof_add_difo()
242 dsecs[nsecs++] = dof_add_lsect(ddo, dp->dtdo_vartab, in dof_add_difo()
265 xlp->dofxr_xlator = ddo->ddo_xlimport[dxp->dx_id]; in dof_add_difo()
267 ddo->ddo_pgp->dp_xrefs[dxp->dx_id], dnp->dn_membid); in dof_add_difo()
271 dsecs[nsecs++] = dof_add_lsect(ddo, xlt, DOF_SECT_XLTAB, in dof_add_difo()
285 hdrsec = dof_add_lsect(ddo, dofd, DOF_SECT_DIFOHDR, in dof_add_difo()
294 relsec = dof_add_lsect(ddo, dp->dtdo_kreltab, DOF_SECT_RELTAB, in dof_add_difo()
307 (void) dof_add_lsect(ddo, &dofr, DOF_SECT_KRELHDR, in dof_add_difo()
312 relsec = dof_add_lsect(ddo, dp->dtdo_ureltab, DOF_SECT_RELTAB, in dof_add_difo()
325 (void) dof_add_lsect(ddo, &dofr, DOF_SECT_URELHDR, in dof_add_difo()
333 dof_add_translator(dt_dof_t *ddo, const dt_xlator_t *dxp, uint_t type) in dof_add_translator() argument
335 dtrace_hdl_t *dtp = ddo->ddo_hdl; in dof_add_translator()
345 xst = type == DOF_SECT_XLIMPORT ? ddo->ddo_xlimport : ddo->ddo_xlexport; in dof_add_translator()
350 dt_buf_reset(dtp, &ddo->ddo_xlms); in dof_add_translator()
360 if (!BT_TEST(ddo->ddo_pgp->dp_xrefs[dxp->dx_id], i)) in dof_add_translator()
364 dofxm.dofxm_difo = dof_add_difo(ddo, in dof_add_translator()
368 dofxm.dofxm_name = dof_add_string(ddo, dnp->dn_membname); in dof_add_translator()
371 dt_buf_write(dtp, &ddo->ddo_xlms, in dof_add_translator()
375 dofxl.dofxl_members = dof_add_lsect(ddo, NULL, DOF_SECT_XLMEMBERS, in dof_add_translator()
376 sizeof (uint32_t), 0, sizeof (dofxm), dt_buf_len(&ddo->ddo_xlms)); in dof_add_translator()
378 dt_buf_concat(dtp, &ddo->ddo_ldata, &ddo->ddo_xlms, sizeof (uint32_t)); in dof_add_translator()
380 dofxl.dofxl_strtab = ddo->ddo_strsec; in dof_add_translator()
381 dofxl.dofxl_argv = dof_add_string(ddo, ctf_type_name( in dof_add_translator()
384 dofxl.dofxl_type = dof_add_string(ddo, ctf_type_name( in dof_add_translator()
388 xst[dxp->dx_id] = dof_add_lsect(ddo, &dofxl, type, in dof_add_translator()
396 dt_dof_t *ddo = data; in dof_add_probe() local
397 dtrace_hdl_t *dtp = ddo->ddo_hdl; in dof_add_probe()
409 dofpr.dofpr_name = dof_add_string(ddo, prp->pr_name); in dof_add_probe()
410 dofpr.dofpr_nargv = dt_buf_len(&ddo->ddo_strs); in dof_add_probe()
413 (void) dof_add_string(ddo, ctf_type_name(dnp->dn_ctfp, in dof_add_probe()
417 dofpr.dofpr_xargv = dt_buf_len(&ddo->ddo_strs); in dof_add_probe()
420 (void) dof_add_string(ddo, ctf_type_name(dnp->dn_ctfp, in dof_add_probe()
424 dofpr.dofpr_argidx = dt_buf_len(&ddo->ddo_args) / sizeof (uint8_t); in dof_add_probe()
427 dt_buf_write(dtp, &ddo->ddo_args, &prp->pr_mapping[i], in dof_add_probe()
440 dofpr.dofpr_func = dof_add_string(ddo, pip->pi_fname); in dof_add_probe()
450 dt_buf_len(&ddo->ddo_offs) / sizeof (uint32_t); in dof_add_probe()
452 dt_buf_write(dtp, &ddo->ddo_offs, pip->pi_offs, in dof_add_probe()
456 dt_buf_len(&ddo->ddo_enoffs) / sizeof (uint32_t); in dof_add_probe()
458 dt_buf_write(dtp, &ddo->ddo_enoffs, pip->pi_enoffs, in dof_add_probe()
471 dofr.dofr_name = dof_add_string(ddo, pip->pi_rname); in dof_add_probe()
473 dofr.dofr_offset = dt_buf_len(&ddo->ddo_probes); in dof_add_probe()
476 dt_buf_write(dtp, &ddo->ddo_rels, &dofr, in dof_add_probe()
479 dt_buf_write(dtp, &ddo->ddo_probes, &dofpr, in dof_add_probe()
487 dof_add_provider(dt_dof_t *ddo, const dt_provider_t *pvp) in dof_add_provider() argument
489 dtrace_hdl_t *dtp = ddo->ddo_hdl; in dof_add_provider()
515 dof_add_translator(ddo, in dof_add_provider()
517 dofs[xr++] = ddo->ddo_xlexport[i]; in dof_add_provider()
521 dt_buf_reset(dtp, &ddo->ddo_probes); in dof_add_provider()
522 dt_buf_reset(dtp, &ddo->ddo_args); in dof_add_provider()
523 dt_buf_reset(dtp, &ddo->ddo_offs); in dof_add_provider()
524 dt_buf_reset(dtp, &ddo->ddo_enoffs); in dof_add_provider()
525 dt_buf_reset(dtp, &ddo->ddo_rels); in dof_add_provider()
527 (void) dt_idhash_iter(pvp->pv_probes, dof_add_probe, ddo); in dof_add_provider()
529 if (dt_buf_len(&ddo->ddo_probes) == 0) in dof_add_provider()
532 dofpv.dofpv_probes = dof_add_lsect(ddo, NULL, DOF_SECT_PROBES, in dof_add_provider()
534 dt_buf_len(&ddo->ddo_probes)); in dof_add_provider()
536 dt_buf_concat(dtp, &ddo->ddo_ldata, in dof_add_provider()
537 &ddo->ddo_probes, sizeof (uint64_t)); in dof_add_provider()
539 dofpv.dofpv_prargs = dof_add_lsect(ddo, NULL, DOF_SECT_PRARGS, in dof_add_provider()
540 sizeof (uint8_t), 0, sizeof (uint8_t), dt_buf_len(&ddo->ddo_args)); in dof_add_provider()
542 dt_buf_concat(dtp, &ddo->ddo_ldata, &ddo->ddo_args, sizeof (uint8_t)); in dof_add_provider()
544 dofpv.dofpv_proffs = dof_add_lsect(ddo, NULL, DOF_SECT_PROFFS, in dof_add_provider()
545 sizeof (uint_t), 0, sizeof (uint_t), dt_buf_len(&ddo->ddo_offs)); in dof_add_provider()
547 dt_buf_concat(dtp, &ddo->ddo_ldata, &ddo->ddo_offs, sizeof (uint_t)); in dof_add_provider()
549 if ((sz = dt_buf_len(&ddo->ddo_enoffs)) != 0) { in dof_add_provider()
550 dofpv.dofpv_prenoffs = dof_add_lsect(ddo, NULL, in dof_add_provider()
556 dt_buf_concat(dtp, &ddo->ddo_ldata, &ddo->ddo_enoffs, sizeof (uint_t)); in dof_add_provider()
558 dofpv.dofpv_strtab = ddo->ddo_strsec; in dof_add_provider()
559 dofpv.dofpv_name = dof_add_string(ddo, pvp->pv_desc.dtvd_name); in dof_add_provider()
567 dofs[0] = dof_add_lsect(ddo, &dofpv, DOF_SECT_PROVIDER, in dof_add_provider()
572 dofr.dofr_relsec = dof_add_lsect(ddo, NULL, DOF_SECT_RELTAB, in dof_add_provider()
574 dt_buf_len(&ddo->ddo_rels)); in dof_add_provider()
576 dt_buf_concat(dtp, &ddo->ddo_ldata, &ddo->ddo_rels, sizeof (uint64_t)); in dof_add_provider()
578 (void) dof_add_lsect(ddo, &dofr, DOF_SECT_URELHDR, in dof_add_provider()
582 (void) dof_add_lsect(ddo, dofs, DOF_SECT_PREXPORT, in dof_add_provider()
631 dt_dof_t *ddo = &dtp->dt_dof; in dtrace_dof_create() local
693 ddo->ddo_strsec = dof_add_lsect(ddo, NULL, DOF_SECT_STRTAB, 1, 0, 0, 0); in dtrace_dof_create()
694 (void) dof_add_string(ddo, ""); in dtrace_dof_create()
705 dof_add_translator(ddo, dxp, DOF_SECT_XLIMPORT); in dtrace_dof_create()
736 dofp.dofp_strtab = ddo->ddo_strsec; in dtrace_dof_create()
737 dofp.dofp_provider = dof_add_string(ddo, pdp->dtpd_provider); in dtrace_dof_create()
738 dofp.dofp_mod = dof_add_string(ddo, pdp->dtpd_mod); in dtrace_dof_create()
739 dofp.dofp_func = dof_add_string(ddo, pdp->dtpd_func); in dtrace_dof_create()
740 dofp.dofp_name = dof_add_string(ddo, pdp->dtpd_name); in dtrace_dof_create()
743 probesec = dof_add_lsect(ddo, &dofp, DOF_SECT_PROBEDESC, in dtrace_dof_create()
752 prdsec = dof_add_difo(ddo, edp->dted_pred.dtpdd_difo); in dtrace_dof_create()
763 dof_add_difo(ddo, ap->dtad_difo); in dtrace_dof_create()
778 strndx = dof_add_string(ddo, fmt); in dtrace_dof_create()
780 strndx = dof_add_string(ddo, in dtrace_dof_create()
794 dofa[i].dofa_strtab = ddo->ddo_strsec; in dtrace_dof_create()
806 actsec = dof_add_lsect(ddo, dofa, DOF_SECT_ACTDESC, in dtrace_dof_create()
821 (void) dof_add_lsect(ddo, &dofe, DOF_SECT_ECBDESC, in dtrace_dof_create()
832 if (dof_add_provider(ddo, pvp) != 0) in dtrace_dof_create()
842 (void) dof_add_usect(ddo, _dtrace_version, DOF_SECT_COMMENTS, in dtrace_dof_create()
844 (void) dof_add_usect(ddo, &dtp->dt_uts, DOF_SECT_UTSNAME, in dtrace_dof_create()
852 h.dofh_secnum = ddo->ddo_nsecs; in dtrace_dof_create()
853 ssize = sizeof (h) + dt_buf_len(&ddo->ddo_secs); in dtrace_dof_create()
856 dt_buf_len(&ddo->ddo_ldata) + in dtrace_dof_create()
857 dt_buf_len(&ddo->ddo_strs); in dtrace_dof_create()
859 if (dt_buf_len(&ddo->ddo_udata) != 0) { in dtrace_dof_create()
861 h.dofh_filesz = lsize + dt_buf_len(&ddo->ddo_udata); in dtrace_dof_create()
872 if ((i = dt_buf_error(&ddo->ddo_secs)) != 0) { in dtrace_dof_create()
877 sp = dt_buf_ptr(&ddo->ddo_secs); in dtrace_dof_create()
878 assert(sp[ddo->ddo_strsec].dofs_type == DOF_SECT_STRTAB); in dtrace_dof_create()
879 assert(ssize == sizeof (h) + sizeof (dof_sec_t) * ddo->ddo_nsecs); in dtrace_dof_create()
881 sp[ddo->ddo_strsec].dofs_offset = ssize + dt_buf_len(&ddo->ddo_ldata); in dtrace_dof_create()
882 sp[ddo->ddo_strsec].dofs_size = dt_buf_len(&ddo->ddo_strs); in dtrace_dof_create()
888 for (i = 0; i < ddo->ddo_nsecs; i++, sp++) { in dtrace_dof_create()
889 if (i == ddo->ddo_strsec) in dtrace_dof_create()
906 dt_buf_concat(dtp, &dof, &ddo->ddo_secs, sizeof (uint64_t)); in dtrace_dof_create()
907 dt_buf_concat(dtp, &dof, &ddo->ddo_ldata, sizeof (uint64_t)); in dtrace_dof_create()
908 dt_buf_concat(dtp, &dof, &ddo->ddo_strs, sizeof (char)); in dtrace_dof_create()
909 dt_buf_concat(dtp, &dof, &ddo->ddo_udata, sizeof (uint64_t)); in dtrace_dof_create()