Lines Matching defs:dof

7938 	dof_hdr_t *dof = (dof_hdr_t *)daddr;
7953 str_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
7954 provider->dofpv_strtab * dof->dofh_secsize);
7955 prb_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
7956 provider->dofpv_probes * dof->dofh_secsize);
7957 arg_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
7958 provider->dofpv_prargs * dof->dofh_secsize);
7959 off_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
7960 provider->dofpv_proffs * dof->dofh_secsize);
7970 if (dof->dofh_ident[DOF_ID_VERSION] != DOF_VERSION_1 &&
7972 enoff_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
7973 provider->dofpv_prenoffs * dof->dofh_secsize);
8023 dof_hdr_t *dof = (dof_hdr_t *)daddr;
8028 for (i = 0; i < dof->dofh_secnum; i++) {
8030 dof->dofh_secoff + i * dof->dofh_secsize);
8052 dof_hdr_t *dof = (dof_hdr_t *)daddr;
8061 str_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
8062 provider->dofpv_strtab * dof->dofh_secsize);
8080 dof_hdr_t *dof = (dof_hdr_t *)daddr;
8085 for (i = 0; i < dof->dofh_secnum; i++) {
8087 dof->dofh_secoff + i * dof->dofh_secsize);
11405 dtrace_dof_error(dof_hdr_t *dof, const char *str)
11423 dof_hdr_t *dof;
11432 dof = kmem_zalloc(len, KM_SLEEP);
11433 dof->dofh_ident[DOF_ID_MAG0] = DOF_MAG_MAG0;
11434 dof->dofh_ident[DOF_ID_MAG1] = DOF_MAG_MAG1;
11435 dof->dofh_ident[DOF_ID_MAG2] = DOF_MAG_MAG2;
11436 dof->dofh_ident[DOF_ID_MAG3] = DOF_MAG_MAG3;
11438 dof->dofh_ident[DOF_ID_MODEL] = DOF_MODEL_NATIVE;
11439 dof->dofh_ident[DOF_ID_ENCODING] = DOF_ENCODE_NATIVE;
11440 dof->dofh_ident[DOF_ID_VERSION] = DOF_VERSION;
11441 dof->dofh_ident[DOF_ID_DIFVERS] = DIF_VERSION;
11442 dof->dofh_ident[DOF_ID_DIFIREG] = DIF_DIR_NREGS;
11443 dof->dofh_ident[DOF_ID_DIFTREG] = DIF_DTR_NREGS;
11445 dof->dofh_flags = 0;
11446 dof->dofh_hdrsize = sizeof (dof_hdr_t);
11447 dof->dofh_secsize = sizeof (dof_sec_t);
11448 dof->dofh_secnum = 1; /* only DOF_SECT_OPTDESC */
11449 dof->dofh_secoff = sizeof (dof_hdr_t);
11450 dof->dofh_loadsz = len;
11451 dof->dofh_filesz = len;
11452 dof->dofh_pad = 0;
11457 sec = (dof_sec_t *)((uintptr_t)dof + sizeof (dof_hdr_t));
11466 sec->dofs_offset = (uintptr_t)opt - (uintptr_t)dof;
11475 return (dof);
11481 dof_hdr_t hdr, *dof;
11510 dof = kmem_alloc(hdr.dofh_loadsz, KM_SLEEP);
11512 if (copyin((void *)uarg, dof, hdr.dofh_loadsz) != 0 ||
11513 dof->dofh_loadsz != hdr.dofh_loadsz) {
11514 kmem_free(dof, hdr.dofh_loadsz);
11519 return (dof);
11529 dof_hdr_t *dof;
11561 dof = kmem_alloc(loadsz, KM_SLEEP);
11562 bcopy(buf, dof, loadsz);
11565 return (dof);
11572 dtrace_dof_destroy(dof_hdr_t *dof)
11574 kmem_free(dof, dof->dofh_loadsz);
11584 dtrace_dof_sect(dof_hdr_t *dof, uint32_t type, dof_secidx_t i)
11587 ((uintptr_t)dof + dof->dofh_secoff + i * dof->dofh_secsize);
11589 if (i >= dof->dofh_secnum) {
11590 dtrace_dof_error(dof, "referenced section index is invalid");
11595 dtrace_dof_error(dof, "referenced section is not loadable");
11600 dtrace_dof_error(dof, "referenced section is the wrong type");
11608 dtrace_dof_probedesc(dof_hdr_t *dof, dof_sec_t *sec, dtrace_probedesc_t *desc)
11612 uintptr_t daddr = (uintptr_t)dof;
11617 dtrace_dof_error(dof, "invalid probe section");
11622 dtrace_dof_error(dof, "bad alignment in probe description");
11626 if (sec->dofs_offset + sizeof (dof_probedesc_t) > dof->dofh_loadsz) {
11627 dtrace_dof_error(dof, "truncated probe description");
11632 strtab = dtrace_dof_sect(dof, DOF_SECT_STRTAB, probe->dofp_strtab);
11641 dtrace_dof_error(dof, "corrupt probe provider");
11650 dtrace_dof_error(dof, "corrupt probe module");
11658 dtrace_dof_error(dof, "corrupt probe function");
11666 dtrace_dof_error(dof, "corrupt probe name");
11677 dtrace_dof_difo(dof_hdr_t *dof, dof_sec_t *sec, dtrace_vstate_t *vstate,
11683 uintptr_t daddr = (uintptr_t)dof;
11715 dtrace_dof_error(dof, "invalid DIFO header section");
11720 dtrace_dof_error(dof, "bad alignment in DIFO header");
11726 dtrace_dof_error(dof, "bad size in DIFO header");
11741 if ((subsec = dtrace_dof_sect(dof, DOF_SECT_NONE,
11746 dtrace_dof_error(dof, "exceeds maximum size");
11757 dtrace_dof_error(dof, "section not loaded");
11762 dtrace_dof_error(dof, "bad alignment");
11770 dtrace_dof_error(dof, difo[i].msg);
11775 dtrace_dof_error(dof, "entry size mismatch");
11781 dtrace_dof_error(dof, "corrupt entry size");
11802 dtrace_dof_error(dof, "unrecognized DIFO subsection");
11811 dtrace_dof_error(dof, "missing DIF text");
11851 dtrace_dof_predicate(dof_hdr_t *dof, dof_sec_t *sec, dtrace_vstate_t *vstate,
11856 if ((dp = dtrace_dof_difo(dof, sec, vstate, cr)) == NULL)
11863 dtrace_dof_actdesc(dof_hdr_t *dof, dof_sec_t *sec, dtrace_vstate_t *vstate,
11870 uintptr_t daddr = (uintptr_t)dof;
11875 dtrace_dof_error(dof, "invalid action section");
11879 if (sec->dofs_offset + sizeof (dof_actdesc_t) > dof->dofh_loadsz) {
11880 dtrace_dof_error(dof, "truncated action description");
11885 dtrace_dof_error(dof, "bad alignment in action description");
11890 dtrace_dof_error(dof, "section entry size exceeds total size");
11895 dtrace_dof_error(dof, "bad entry size in action description");
11900 dtrace_dof_error(dof, "actions exceed dtrace_actions_max");
11919 if ((strtab = dtrace_dof_sect(dof,
11923 str = (char *)((uintptr_t)dof +
11932 dtrace_dof_error(dof, "bogus format string");
11937 dtrace_dof_error(dof, "empty format string");
11968 if ((difosec = dtrace_dof_sect(dof,
11972 act->dtad_difo = dtrace_dof_difo(dof, difosec, vstate, cr);
11991 dtrace_dof_ecbdesc(dof_hdr_t *dof, dof_sec_t *sec, dtrace_vstate_t *vstate,
12000 dtrace_dof_error(dof, "truncated ECB description");
12005 dtrace_dof_error(dof, "bad alignment in ECB description");
12009 ecb = (dof_ecbdesc_t *)((uintptr_t)dof + (uintptr_t)sec->dofs_offset);
12010 sec = dtrace_dof_sect(dof, DOF_SECT_PROBEDESC, ecb->dofe_probes);
12019 if (dtrace_dof_probedesc(dof, sec, desc) == NULL)
12023 if ((sec = dtrace_dof_sect(dof,
12027 if ((pred = dtrace_dof_predicate(dof, sec, vstate, cr)) == NULL)
12034 if ((sec = dtrace_dof_sect(dof,
12038 ep->dted_action = dtrace_dof_actdesc(dof, sec, vstate, cr);
12060 dtrace_dof_relocate(dof_hdr_t *dof, dof_sec_t *sec, uint64_t ubase)
12062 uintptr_t daddr = (uintptr_t)dof;
12071 dtrace_dof_error(dof, "invalid relocation header");
12075 ss = dtrace_dof_sect(dof, DOF_SECT_STRTAB, dofr->dofr_strtab);
12076 rs = dtrace_dof_sect(dof, DOF_SECT_RELTAB, dofr->dofr_relsec);
12077 ts = dtrace_dof_sect(dof, DOF_SECT_NONE, dofr->dofr_tgtsec);
12084 dtrace_dof_error(dof, "invalid relocation section");
12100 dtrace_dof_error(dof, "bad relocation offset");
12105 dtrace_dof_error(dof, "misaligned setx relo");
12112 dtrace_dof_error(dof, "invalid relocation type");
12129 dtrace_dof_slurp(dof_hdr_t *dof, dtrace_vstate_t *vstate, cred_t *cr,
12132 uint64_t len = dof->dofh_loadsz, seclen;
12133 uintptr_t daddr = (uintptr_t)dof;
12139 ASSERT(dof->dofh_loadsz >= sizeof (dof_hdr_t));
12146 if (bcmp(&dof->dofh_ident[DOF_ID_MAG0],
12148 dtrace_dof_error(dof, "DOF magic string mismatch");
12152 if (dof->dofh_ident[DOF_ID_MODEL] != DOF_MODEL_ILP32 &&
12153 dof->dofh_ident[DOF_ID_MODEL] != DOF_MODEL_LP64) {
12154 dtrace_dof_error(dof, "DOF has invalid data model");
12158 if (dof->dofh_ident[DOF_ID_ENCODING] != DOF_ENCODE_NATIVE) {
12159 dtrace_dof_error(dof, "DOF encoding mismatch");
12163 if (dof->dofh_ident[DOF_ID_VERSION] != DOF_VERSION_1 &&
12164 dof->dofh_ident[DOF_ID_VERSION] != DOF_VERSION_2) {
12165 dtrace_dof_error(dof, "DOF version mismatch");
12169 if (dof->dofh_ident[DOF_ID_DIFVERS] != DIF_VERSION_2) {
12170 dtrace_dof_error(dof, "DOF uses unsupported instruction set");
12174 if (dof->dofh_ident[DOF_ID_DIFIREG] > DIF_DIR_NREGS) {
12175 dtrace_dof_error(dof, "DOF uses too many integer registers");
12179 if (dof->dofh_ident[DOF_ID_DIFTREG] > DIF_DTR_NREGS) {
12180 dtrace_dof_error(dof, "DOF uses too many tuple registers");
12185 if (dof->dofh_ident[i] != 0) {
12186 dtrace_dof_error(dof, "DOF has invalid ident byte set");
12191 if (dof->dofh_flags & ~DOF_FL_VALID) {
12192 dtrace_dof_error(dof, "DOF has invalid flag bits set");
12196 if (dof->dofh_secsize == 0) {
12197 dtrace_dof_error(dof, "zero section header size");
12206 seclen = (uint64_t)dof->dofh_secnum * (uint64_t)dof->dofh_secsize;
12208 if (dof->dofh_secoff > len || seclen > len ||
12209 dof->dofh_secoff + seclen > len) {
12210 dtrace_dof_error(dof, "truncated section headers");
12214 if (!IS_P2ALIGNED(dof->dofh_secoff, sizeof (uint64_t))) {
12215 dtrace_dof_error(dof, "misaligned section headers");
12219 if (!IS_P2ALIGNED(dof->dofh_secsize, sizeof (uint64_t))) {
12220 dtrace_dof_error(dof, "misaligned section size");
12229 for (i = 0; i < dof->dofh_secnum; i++) {
12231 (uintptr_t)dof->dofh_secoff + i * dof->dofh_secsize);
12239 dtrace_dof_error(dof, "illegal sections "
12247 dtrace_dof_error(dof, "loadable section with load "
12256 dtrace_dof_error(dof, "bad section alignment");
12261 dtrace_dof_error(dof, "misaligned section");
12267 dtrace_dof_error(dof, "corrupt section header");
12273 dtrace_dof_error(dof, "non-terminating string table");
12283 for (i = 0; i < dof->dofh_secnum; i++) {
12285 (uintptr_t)dof->dofh_secoff + i * dof->dofh_secsize);
12292 if (dtrace_dof_relocate(dof, sec, ubase) != 0)
12301 for (i = 0; i < dof->dofh_secnum; i++) {
12303 (uintptr_t)dof->dofh_secoff + i * dof->dofh_secsize);
12308 if ((ep = dtrace_dof_ecbdesc(dof, sec, vstate, cr)) == NULL) {
12325 dtrace_dof_options(dof_hdr_t *dof, dtrace_state_t *state)
12332 for (i = 0; VBDTCAST(unsigned)i < dof->dofh_secnum; i++) {
12333 dof_sec_t *sec = (dof_sec_t *)((uintptr_t)dof +
12334 (uintptr_t)dof->dofh_secoff + i * dof->dofh_secsize);
12340 dtrace_dof_error(dof, "bad alignment in "
12346 dtrace_dof_error(dof, "zeroed option entry size");
12351 dtrace_dof_error(dof, "bad option entry size");
12356 desc = (dof_optdesc_t *)((uintptr_t)dof +
12360 dtrace_dof_error(dof, "non-zero option string");
12365 dtrace_dof_error(dof, "unset option");
12371 dtrace_dof_error(dof, "rejected option");
13483 dof_hdr_t *dof;
13484 char c[32]; /* enough for "dof-data-" + digits */
13490 (void) snprintf(c, sizeof (c), "dof-data-%d", i);
13494 if ((dof = dtrace_dof_property(c)) == NULL) {
13509 dtrace_dof_destroy(dof);
13534 dtrace_dof_destroy(dof);
13539 rv = dtrace_dof_slurp(dof, &state->dts_vstate, CRED(),
13543 rv = dtrace_dof_options(dof, state);
13546 dtrace_dof_destroy(dof);
14067 dof_hdr_t *dof;
14069 dof = (dof_hdr_t *)(uintptr_t)hprov->dthp_prov.dofhp_dof;
14070 dtrace_dof_destroy(dof);
14078 dtrace_helper_provider_validate(dof_hdr_t *dof, dof_sec_t *sec)
14080 uintptr_t daddr = (uintptr_t)dof;
14093 dtrace_dof_error(dof, "misaligned section offset");
14102 ((dof->dofh_ident[DOF_ID_VERSION] == DOF_VERSION_1) ?
14105 dtrace_dof_error(dof, "provider section too small");
14110 str_sec = dtrace_dof_sect(dof, DOF_SECT_STRTAB, provider->dofpv_strtab);
14111 prb_sec = dtrace_dof_sect(dof, DOF_SECT_PROBES, provider->dofpv_probes);
14112 arg_sec = dtrace_dof_sect(dof, DOF_SECT_PRARGS, provider->dofpv_prargs);
14113 off_sec = dtrace_dof_sect(dof, DOF_SECT_PROFFS, provider->dofpv_proffs);
14121 if (dof->dofh_ident[DOF_ID_VERSION] != DOF_VERSION_1 &&
14123 (enoff_sec = dtrace_dof_sect(dof, DOF_SECT_PRENOFFS,
14131 dtrace_dof_error(dof, "invalid provider name");
14137 dtrace_dof_error(dof, "invalid entry size");
14142 dtrace_dof_error(dof, "misaligned entry size");
14147 dtrace_dof_error(dof, "invalid entry size");
14152 dtrace_dof_error(dof, "misaligned section offset");
14157 dtrace_dof_error(dof, "invalid entry size");
14173 dtrace_dof_error(dof, "invalid function name");
14178 dtrace_dof_error(dof, "function name too long");
14184 dtrace_dof_error(dof, "invalid probe name");
14196 dtrace_dof_error(dof, "invalid probe offset");
14200 if (dof->dofh_ident[DOF_ID_VERSION] != DOF_VERSION_1) {
14210 dtrace_dof_error(dof, "is-enabled "
14218 dtrace_dof_error(dof, "invalid is-enabled "
14224 dtrace_dof_error(dof, "zero probe and "
14229 dtrace_dof_error(dof, "zero probe offsets");
14237 dtrace_dof_error(dof, "invalid args");
14245 dtrace_dof_error(dof, "bad "
14252 dtrace_dof_error(dof, "native "
14264 dtrace_dof_error(dof, "bad "
14270 dtrace_dof_error(dof, "bad "
14277 dtrace_dof_error(dof, "translated argument "
14291 dtrace_helper_slurp(dof_hdr_t *dof, dof_helper_t *dhp)
14297 uintptr_t daddr = (uintptr_t)dof;
14306 if ((rv = dtrace_dof_slurp(dof, vstate, NULL, &enab,
14308 dtrace_dof_destroy(dof);
14316 for (i = 0; i < VBDTCAST(int)dof->dofh_secnum; i++) {
14318 dof->dofh_secoff + i * dof->dofh_secsize);
14323 if (dtrace_helper_provider_validate(dof, sec) != 0) {
14325 dtrace_dof_destroy(dof);
14357 dtrace_dof_destroy(dof);
14365 dtrace_dof_error(dof, "unmatched helpers");
14371 dhp->dofhp_dof = (uint64_t)(uintptr_t)dof;
14382 dtrace_dof_destroy(dof);
15207 dof_hdr_t *dof = dtrace_dof_copyin(arg, &rval);
15209 if (dof == NULL)
15215 * dtrace_helper_slurp() takes responsibility for the dof --
15218 if ((rval = dtrace_helper_slurp(dof, dhp)) != -1) {
15478 dof_hdr_t *dof;
15498 if ((dof = dtrace_dof_copyin(arg, &rval)) == NULL)
15508 dtrace_dof_destroy(dof);
15512 if (dtrace_dof_slurp(dof, vstate, cr, &enab, 0, B_TRUE) != 0) {
15515 dtrace_dof_destroy(dof);
15519 if ((rval = dtrace_dof_options(dof, state)) != 0) {
15523 dtrace_dof_destroy(dof);
15535 dtrace_dof_destroy(dof);
15733 dof_hdr_t hdr, *dof;
15740 dof = dtrace_dof_create(state);
15743 len = MIN(hdr.dofh_loadsz, dof->dofh_loadsz);
15744 rval = copyout(dof, (void *)arg, len);
15745 dtrace_dof_destroy(dof);