Lines Matching refs:mstate
576 #define DTRACE_INSCRATCH(mstate, alloc_sz) \
577 ((mstate)->dtms_scratch_base + (mstate)->dtms_scratch_size - \
578 (mstate)->dtms_scratch_ptr >= (alloc_sz))
777 dtrace_inscratch(uintptr_t dest, size_t size, dtrace_mstate_t *mstate)
779 if (dest < mstate->dtms_scratch_base)
785 if (dest + size > mstate->dtms_scratch_ptr)
841 dtrace_canstore(uint64_t addr, size_t sz, dtrace_mstate_t *mstate,
844 return (dtrace_canstore_remains(addr, sz, NULL, mstate, vstate));
853 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
858 if (DTRACE_INRANGE(addr, sz, mstate->dtms_scratch_base,
859 mstate->dtms_scratch_size)) {
860 DTRACE_RANGE_REMAIN(remain, addr, mstate->dtms_scratch_base,
861 mstate->dtms_scratch_size);
946 dtrace_canload(uint64_t addr, size_t sz, dtrace_mstate_t *mstate,
949 return (dtrace_canload_remains(addr, sz, NULL, mstate, vstate));
958 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
967 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0) {
975 mstate, vstate))
981 if (DTRACE_INRANGE(addr, sz, mstate->dtms_difo->dtdo_strtab,
982 mstate->dtms_difo->dtdo_strlen)) {
984 mstate->dtms_difo->dtdo_strtab,
985 mstate->dtms_difo->dtdo_strlen);
1048 if ((fp = mstate->dtms_getf) != NULL) {
1124 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
1133 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0) {
1145 if (dtrace_canload_remains(addr, 0, remain, mstate, vstate)) {
1169 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
1200 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0) {
1206 return (dtrace_strcanload((uintptr_t)src, sz, remain, mstate,
1209 return (dtrace_canload_remains((uintptr_t)src, sz, remain, mstate,
1707 * processing, but with access(es) stripped from the mstate's dtms_access
1711 dtrace_priv_probe(dtrace_state_t *state, dtrace_mstate_t *mstate,
1747 mstate->dtms_access &= ~DTRACE_ACCESS_ARGS;
1798 mstate->dtms_access &= ~DTRACE_ACCESS_PROC;
1822 mstate->dtms_access &=
1981 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
2033 if (!dtrace_canload(base, size, mstate, vstate))
3342 dtrace_mstate_t *mstate)
3352 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0)
3363 if (mstate->dtms_scratch_ptr + strsz >
3364 mstate->dtms_scratch_base + mstate->dtms_scratch_size) {
3369 dtrace_strcpy((const void *)addr, (void *)mstate->dtms_scratch_ptr,
3371 ret = mstate->dtms_scratch_ptr;
3372 mstate->dtms_scratch_ptr += strsz;
3388 dtrace_mstate_t *mstate)
3394 if (mstate->dtms_scratch_ptr + strsz >
3395 mstate->dtms_scratch_base + mstate->dtms_scratch_size) {
3400 dtrace_bcopy((const void *)addr, (void *)mstate->dtms_scratch_ptr,
3404 for (p = (char *) mstate->dtms_scratch_ptr, i = 0; i < strsz - 1;
3409 ret = mstate->dtms_scratch_ptr;
3410 mstate->dtms_scratch_ptr += strsz;
3419 dtrace_dif_variable(dtrace_mstate_t *mstate, dtrace_state_t *state, uint64_t v,
3433 ASSERT(mstate->dtms_present & DTRACE_MSTATE_ARGS);
3434 if (ndx >= sizeof (mstate->dtms_arg) /
3435 sizeof (mstate->dtms_arg[0])) {
3436 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
3440 pv = mstate->dtms_probe->dtpr_provider;
3443 mstate->dtms_probe->dtpr_id,
3444 mstate->dtms_probe->dtpr_arg, ndx, aframes);
3457 if (mstate->dtms_probe != NULL)
3463 return (mstate->dtms_arg[ndx]);
3521 if (!(mstate->dtms_present & DTRACE_MSTATE_TIMESTAMP)) {
3522 mstate->dtms_timestamp = dtrace_gethrtime();
3523 mstate->dtms_present |= DTRACE_MSTATE_TIMESTAMP;
3525 return (mstate->dtms_timestamp);
3532 if (!(mstate->dtms_present & DTRACE_MSTATE_WALLTIMESTAMP)) {
3533 mstate->dtms_walltimestamp = dtrace_gethrestime();
3534 mstate->dtms_present |= DTRACE_MSTATE_WALLTIMESTAMP;
3536 return (mstate->dtms_walltimestamp);
3542 if (!(mstate->dtms_present & DTRACE_MSTATE_IPL)) {
3543 mstate->dtms_ipl = dtrace_getipl();
3544 mstate->dtms_present |= DTRACE_MSTATE_IPL;
3546 return (mstate->dtms_ipl);
3550 ASSERT(mstate->dtms_present & DTRACE_MSTATE_EPID);
3551 return (mstate->dtms_epid);
3554 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3555 return (mstate->dtms_probe->dtpr_id);
3560 if (!(mstate->dtms_present & DTRACE_MSTATE_STACKDEPTH)) {
3561 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
3563 mstate->dtms_stackdepth = dtrace_getstackdepth(aframes);
3564 mstate->dtms_present |= DTRACE_MSTATE_STACKDEPTH;
3566 return (mstate->dtms_stackdepth);
3571 if (!(mstate->dtms_present & DTRACE_MSTATE_USTACKDEPTH)) {
3575 if (DTRACE_ANCHORED(mstate->dtms_probe) &&
3577 mstate->dtms_ustackdepth = 0;
3580 mstate->dtms_ustackdepth =
3584 mstate->dtms_present |= DTRACE_MSTATE_USTACKDEPTH;
3586 return (mstate->dtms_ustackdepth);
3591 if (!(mstate->dtms_present & DTRACE_MSTATE_CALLER)) {
3592 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
3594 if (!DTRACE_ANCHORED(mstate->dtms_probe)) {
3604 (uint32_t *)(uintptr_t)mstate->dtms_arg[0]);
3605 mstate->dtms_caller = caller[1];
3606 } else if ((mstate->dtms_caller =
3616 mstate->dtms_caller = caller;
3619 mstate->dtms_present |= DTRACE_MSTATE_CALLER;
3621 return (mstate->dtms_caller);
3627 if (!(mstate->dtms_present & DTRACE_MSTATE_UCALLER)) {
3641 mstate->dtms_ucaller = ustack[2];
3642 mstate->dtms_present |= DTRACE_MSTATE_UCALLER;
3645 return (mstate->dtms_ucaller);
3648 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3650 (uintptr_t)mstate->dtms_probe->dtpr_provider->dtpv_name,
3651 state, mstate));
3654 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3656 (uintptr_t)mstate->dtms_probe->dtpr_mod,
3657 state, mstate));
3660 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3662 (uintptr_t)mstate->dtms_probe->dtpr_func,
3663 state, mstate));
3666 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3668 (uintptr_t)mstate->dtms_probe->dtpr_name,
3669 state, mstate));
3681 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3705 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3727 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3741 (uintptr_t) p_args->ar_args, p_args->ar_length, state, mstate));
3755 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3766 state, mstate));
3769 (uintptr_t) curproc->p_comm, state, mstate));
3780 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3791 state, mstate));
3804 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3833 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3863 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
4362 dtrace_mstate_t *mstate, dtrace_state_t *state)
4407 mstate, vstate)) {
4421 mstate, vstate)) {
4436 mstate, vstate)) {
4447 mstate, vstate)) {
4460 mstate, vstate)) {
4472 mstate, vstate)) {
4483 mstate, vstate)) {
4496 sizeof (struct lock_object), mstate, vstate)) {
4508 sizeof (struct lock_object), mstate, vstate)) {
4521 mstate, vstate)) {
4533 mstate, vstate)) {
4546 mstate, vstate)) {
4560 mstate, vstate)) {
4574 mstate, vstate)) {
4589 mstate, vstate)) {
4603 mstate, vstate)) {
4618 mstate, vstate)) {
4629 mstate, vstate)) {
4640 mstate, vstate)) {
4652 mstate, vstate)) {
4663 mstate, vstate)) {
4683 if (!dtrace_inscratch(dest, size, mstate)) {
4689 if (!dtrace_canload(src, size, mstate, vstate)) {
4700 uintptr_t dest = P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
4703 size_t scratch_size = (dest - mstate->dtms_scratch_ptr) + size;
4716 !DTRACE_INSCRATCH(mstate, scratch_size)) {
4728 mstate->dtms_scratch_ptr += scratch_size;
4742 if (!dtrace_inscratch(dest, size, mstate)) {
4755 uintptr_t dest = mstate->dtms_scratch_ptr;
4766 if (!DTRACE_INSCRATCH(mstate, size)) {
4777 mstate->dtms_scratch_ptr += size;
4792 if (!dtrace_canload(baddr, sizeof (mblk_t), mstate,
4894 dtrace_strcanload(kaddr, size, &lim, mstate, vstate)) {
4907 if (!dtrace_strcanload(addr, size, &lim, mstate, vstate)) {
4931 if (!dtrace_strcanload(addr, size, &lim, mstate, vstate)) {
4974 if (!dtrace_canload((uintptr_t)addr, len + 1, mstate, vstate)) {
4979 if (!dtrace_canload((uintptr_t)substr, sublen + 1, mstate,
5108 char *dest = (char *)mstate->dtms_scratch_ptr;
5115 if (!dtrace_strcanload(tokaddr, size, &clim, mstate, vstate)) {
5121 if (!DTRACE_INSCRATCH(mstate, size)) {
5130 * strtok pointer from the mstate. Note that this
5135 addr = mstate->dtms_strtok;
5136 limit = mstate->dtms_strtok_limit;
5143 * (when we fetch addr from mstate->dtms_strtok)
5146 if (!dtrace_strcanload(addr, size, &clim, mstate,
5190 mstate->dtms_strtok = 0;
5191 mstate->dtms_strtok_limit = 0;
5212 mstate->dtms_scratch_ptr += size;
5213 mstate->dtms_strtok = addr;
5214 mstate->dtms_strtok_limit = limit;
5221 char *d = (char *)mstate->dtms_scratch_ptr;
5227 if (!dtrace_canload(s, len + 1, mstate, vstate)) {
5232 if (!DTRACE_INSCRATCH(mstate, size)) {
5265 mstate->dtms_scratch_ptr += size;
5277 char *dest = (char *)mstate->dtms_scratch_ptr;
5278 char *elemlist = (char *)mstate->dtms_scratch_ptr + jsonlen + 1;
5283 if (!dtrace_canload(json, jsonlen + 1, mstate, vstate) ||
5284 !dtrace_canload(elem, elemlen + 1, mstate, vstate)) {
5289 if (!DTRACE_INSCRATCH(mstate, jsonlen + 1 + elemlen + 1)) {
5325 mstate->dtms_scratch_ptr += jsonlen + 1;
5333 char *dest = (char *)mstate->dtms_scratch_ptr, c;
5348 if (!dtrace_canload(s, len + 1, mstate, vstate)) {
5353 if (!DTRACE_INSCRATCH(mstate, size)) {
5372 mstate->dtms_scratch_ptr += size;
5400 uintptr_t dest = mstate->dtms_scratch_ptr;
5413 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) == 0) {
5419 if (!DTRACE_INSCRATCH(mstate, size)) {
5580 mstate->dtms_scratch_ptr += size;
5588 char *d = (char *)mstate->dtms_scratch_ptr;
5596 if (!dtrace_strcanload(s1, size, &lim1, mstate, vstate) ||
5597 !dtrace_strcanload(s2, size, &lim2, mstate, vstate)) {
5602 if (!DTRACE_INSCRATCH(mstate, size)) {
5635 mstate->dtms_scratch_ptr += i;
5656 if (!dtrace_strcanload(s, size, &lim, mstate, vstate)) {
5669 char *end = (char *)mstate->dtms_scratch_ptr + size - 1;
5682 if (!DTRACE_INSCRATCH(mstate, size)) {
5709 mstate->dtms_scratch_ptr += size;
5745 char *dest = (char *)mstate->dtms_scratch_ptr;
5752 if (!dtrace_canload(src, len + 1, mstate, vstate)) {
5757 if (!DTRACE_INSCRATCH(mstate, size)) {
5870 mstate->dtms_scratch_ptr += size;
5887 mstate->dtms_getf = fp;
5897 char *dest = (char *)mstate->dtms_scratch_ptr, c;
5906 if (!dtrace_strcanload(src, size, &lim, mstate, vstate)) {
5911 if (!DTRACE_INSCRATCH(mstate, size)) {
6005 if (mstate->dtms_getf != NULL &&
6006 !(mstate->dtms_access & DTRACE_ACCESS_KERNEL) &&
6023 mstate->dtms_scratch_ptr += size;
6047 sizeof (ipaddr_t), mstate, vstate)) {
6061 if (!DTRACE_INSCRATCH(mstate, size)) {
6066 base = (char *)mstate->dtms_scratch_ptr;
6067 end = (char *)mstate->dtms_scratch_ptr + size - 1;
6106 sizeof (struct in6_addr), mstate, vstate)) {
6122 if (!DTRACE_INSCRATCH(mstate, size)) {
6127 base = (char *)mstate->dtms_scratch_ptr;
6128 end = (char *)mstate->dtms_scratch_ptr + size - 1;
6260 mstate->dtms_scratch_ptr += size;
6266 uintptr_t *memref = (uintptr_t *) P2ROUNDUP(mstate->dtms_scratch_ptr, sizeof(uintptr_t));
6267 size_t scratch_size = ((uintptr_t) memref - mstate->dtms_scratch_ptr) + size;
6274 mstate->dtms_scratch_ptr += scratch_size;
6280 char *str = (char *)mstate->dtms_scratch_ptr;
6292 if (!dtrace_canload(mem, size - 1, mstate, vstate))
6295 if (!DTRACE_INSCRATCH(mstate, size)) {
6312 mstate->dtms_scratch_ptr += size;
6325 dtrace_dif_emulate(dtrace_difo_t *difo, dtrace_mstate_t *mstate,
6355 mstate->dtms_difo = difo;
6491 if (!dtrace_canload(regs[r1], 1, mstate, vstate))
6498 if (!dtrace_canload(regs[r1], 2, mstate, vstate))
6505 if (!dtrace_canload(regs[r1], 4, mstate, vstate))
6512 if (!dtrace_canload(regs[r1], 1, mstate, vstate))
6519 if (!dtrace_canload(regs[r1], 2, mstate, vstate))
6526 if (!dtrace_canload(regs[r1], 4, mstate, vstate))
6533 if (!dtrace_canload(regs[r1], 8, mstate, vstate))
6601 !dtrace_strcanload(s1, sz, &lim1, mstate, vstate))
6604 !dtrace_strcanload(s2, sz, &lim2, mstate, vstate))
6616 regs[rd] = dtrace_dif_variable(mstate, state,
6651 regs[rd] = dtrace_dif_variable(mstate, state, id, 0);
6681 &lim, mstate, vstate))
6780 &lim, mstate, vstate))
6810 mstate, vstate);
6846 DTRACE_DYNVAR_DEALLOC, mstate, vstate);
6862 &v->dtdv_type, &lim, mstate, vstate))
6880 regs, tupregs, ttop, mstate, state);
6959 DTRACE_DYNVAR_NOALLOC, mstate, vstate);
7000 DTRACE_DYNVAR_DEALLOC, mstate, vstate);
7010 &lim, mstate, vstate))
7023 uintptr_t ptr = P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
7024 size_t size = ptr - mstate->dtms_scratch_ptr + regs[r1];
7032 !DTRACE_INSCRATCH(mstate, size)) {
7038 dtrace_bzero((void *) mstate->dtms_scratch_ptr, size);
7039 mstate->dtms_scratch_ptr += size;
7046 mstate, vstate)) {
7052 if (!dtrace_canload(regs[r1], regs[r2], mstate, vstate))
7060 if (!dtrace_canstore(regs[rd], 1, mstate, vstate)) {
7069 if (!dtrace_canstore(regs[rd], 2, mstate, vstate)) {
7083 if (!dtrace_canstore(regs[rd], 4, mstate, vstate)) {
7097 if (!dtrace_canstore(regs[rd], 8, mstate, vstate)) {
7115 mstate->dtms_fltoffs = opc * sizeof (dif_instr_t);
7116 mstate->dtms_present |= DTRACE_MSTATE_FLTOFFS;
7293 dtrace_action_chill(dtrace_mstate_t *mstate, hrtime_t val)
7337 mstate->dtms_present &= ~DTRACE_MSTATE_TIMESTAMP;
7342 dtrace_action_ustack(dtrace_mstate_t *mstate, dtrace_state_t *state,
7351 uintptr_t old = mstate->dtms_scratch_ptr, saved;
7364 fps = (uint64_t *)P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
7365 size = (uintptr_t)fps - mstate->dtms_scratch_ptr +
7368 if (!DTRACE_INSCRATCH(mstate, size)) {
7377 mstate->dtms_scratch_ptr += size;
7378 saved = mstate->dtms_scratch_ptr;
7398 mstate->dtms_scratch_ptr = saved;
7405 mstate, state, pcs[i], fps[i]);
7422 if (!dtrace_strcanload((uintptr_t)sym, strsize, &rem, mstate,
7458 mstate->dtms_scratch_ptr = old;
7530 dtrace_mstate_t mstate;
7579 now = mstate.dtms_timestamp = dtrace_gethrtime();
7580 mstate.dtms_present = DTRACE_MSTATE_TIMESTAMP;
7586 mstate.dtms_difo = NULL;
7587 mstate.dtms_probe = probe;
7588 mstate.dtms_strtok = 0;
7589 mstate.dtms_arg[0] = arg0;
7590 mstate.dtms_arg[1] = arg1;
7591 mstate.dtms_arg[2] = arg2;
7592 mstate.dtms_arg[3] = arg3;
7593 mstate.dtms_arg[4] = arg4;
7620 mstate.dtms_present = DTRACE_MSTATE_ARGS | DTRACE_MSTATE_PROBE;
7621 mstate.dtms_getf = NULL;
7747 ecb->dte_alignment, state, &mstate)) < 0)
7755 if (!(mstate.dtms_present & DTRACE_MSTATE_TIMESTAMP)) {
7756 mstate.dtms_timestamp = dtrace_gethrtime();
7757 mstate.dtms_present |= DTRACE_MSTATE_TIMESTAMP;
7762 mstate.dtms_timestamp);
7766 mstate.dtms_epid = ecb->dte_epid;
7767 mstate.dtms_present |= DTRACE_MSTATE_EPID;
7770 mstate.dtms_access = DTRACE_ACCESS_KERNEL;
7772 mstate.dtms_access = 0;
7778 rval = dtrace_dif_emulate(dp, &mstate, vstate, state);
7812 &mstate, vstate, state);
7864 if (DTRACE_ANCHORED(mstate.dtms_probe) &&
7885 dtrace_action_ustack(&mstate, state,
7905 val = dtrace_dif_emulate(dp, &mstate, vstate, state);
7992 dtrace_action_chill(&mstate, val);
8108 &dp->dtdo_rtype, NULL, &mstate, vstate))
8187 (mstate.dtms_present & DTRACE_MSTATE_FLTOFFS) ?
8188 mstate.dtms_fltoffs : -1, DTRACE_FLAGS2FLT(*flags),
12578 * in a buffer. If mstate is non-NULL, sets the scratch base and size in the
12579 * mstate. Returns the new offset in the buffer, or a negative value if an
12584 dtrace_state_t *state, dtrace_mstate_t *mstate)
12616 if (mstate == NULL)
12619 mstate->dtms_scratch_base = (uintptr_t)tomax + soffs;
12620 mstate->dtms_scratch_size = buf->dtb_size - soffs;
12621 mstate->dtms_scratch_ptr = mstate->dtms_scratch_base;
12801 if (mstate == NULL)
12808 mstate->dtms_scratch_base = (uintptr_t)buf->dtb_xamot;
12809 mstate->dtms_scratch_size = buf->dtb_size;
12810 mstate->dtms_scratch_ptr = mstate->dtms_scratch_base;
16036 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate, int where)
16080 ent->dtht_fltoffs = (mstate->dtms_present & DTRACE_MSTATE_FLTOFFS) ?
16081 mstate->dtms_fltoffs : -1;
16098 dtrace_helper(int which, dtrace_mstate_t *mstate,
16102 uint64_t sarg0 = mstate->dtms_arg[0];
16103 uint64_t sarg1 = mstate->dtms_arg[1];
16120 mstate->dtms_arg[0] = arg0;
16121 mstate->dtms_arg[1] = arg1;
16135 dtrace_helper_trace(helper, mstate, vstate, 0);
16137 if (!dtrace_dif_emulate(pred, mstate, vstate, state))
16147 mstate, vstate, i + 1);
16150 mstate, vstate, state);
16158 dtrace_helper_trace(helper, mstate, vstate,
16163 dtrace_helper_trace(helper, mstate, vstate,
16169 mstate->dtms_arg[0] = sarg0;
16170 mstate->dtms_arg[1] = sarg1;
16176 dtrace_helper_trace(helper, mstate, vstate,
16182 mstate->dtms_arg[0] = sarg0;
16183 mstate->dtms_arg[1] = sarg1;