Lines Matching defs:mstate

402 #define	DTRACE_INSCRATCH(mstate, alloc_sz) \
403 ((mstate)->dtms_scratch_base + (mstate)->dtms_scratch_size - \
404 (mstate)->dtms_scratch_ptr >= (alloc_sz))
590 dtrace_inscratch(uintptr_t dest, size_t size, dtrace_mstate_t *mstate)
592 if (dest < mstate->dtms_scratch_base)
598 if (dest + size > mstate->dtms_scratch_ptr)
654 dtrace_canstore(uint64_t addr, size_t sz, dtrace_mstate_t *mstate,
657 return (dtrace_canstore_remains(addr, sz, NULL, mstate, vstate));
666 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
671 if (DTRACE_INRANGE(addr, sz, mstate->dtms_scratch_base,
672 mstate->dtms_scratch_size)) {
673 DTRACE_RANGE_REMAIN(remain, addr, mstate->dtms_scratch_base,
674 mstate->dtms_scratch_size);
759 dtrace_canload(uint64_t addr, size_t sz, dtrace_mstate_t *mstate,
762 return (dtrace_canload_remains(addr, sz, NULL, mstate, vstate));
771 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
780 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0) {
788 if (dtrace_canstore_remains(addr, sz, remain, mstate, vstate))
794 if (DTRACE_INRANGE(addr, sz, mstate->dtms_difo->dtdo_strtab,
795 mstate->dtms_difo->dtdo_strlen)) {
797 mstate->dtms_difo->dtdo_strtab,
798 mstate->dtms_difo->dtdo_strlen);
803 dtrace_priv_proc(vstate->dtvs_state, mstate)) {
857 if ((fp = mstate->dtms_getf) != NULL) {
931 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
939 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0) {
951 if (dtrace_canload_remains(addr, 0, remain, mstate, vstate)) {
975 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
1006 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0) {
1012 return (dtrace_strcanload((uintptr_t)src, sz, remain, mstate,
1015 return (dtrace_canload_remains((uintptr_t)src, sz, remain, mstate,
1414 dtrace_priv_proc_destructive(dtrace_state_t *state, dtrace_mstate_t *mstate)
1418 if (!(mstate->dtms_access & DTRACE_ACCESS_PROC))
1442 dtrace_priv_proc_control(dtrace_state_t *state, dtrace_mstate_t *mstate)
1444 if (mstate->dtms_access & DTRACE_ACCESS_PROC) {
1460 dtrace_priv_proc(dtrace_state_t *state, dtrace_mstate_t *mstate)
1462 if ((mstate->dtms_access & DTRACE_ACCESS_PROC) &&
1496 * processing, but with access(es) stripped from the mstate's dtms_access
1500 dtrace_priv_probe(dtrace_state_t *state, dtrace_mstate_t *mstate,
1533 mstate->dtms_access &= ~DTRACE_ACCESS_ARGS;
1565 mstate->dtms_access &= ~DTRACE_ACCESS_PROC;
1586 mstate->dtms_access &=
1598 mstate->dtms_access &= ~DTRACE_ACCESS_ARGS;
1752 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
1804 if (!dtrace_canload(base, size, mstate, vstate))
3113 dtrace_mstate_t *mstate)
3123 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0)
3134 if (mstate->dtms_scratch_ptr + strsz >
3135 mstate->dtms_scratch_base + mstate->dtms_scratch_size) {
3140 dtrace_strcpy((const void *)addr, (void *)mstate->dtms_scratch_ptr,
3142 ret = mstate->dtms_scratch_ptr;
3143 mstate->dtms_scratch_ptr += strsz;
3152 dtrace_dif_variable(dtrace_mstate_t *mstate, dtrace_state_t *state, uint64_t v,
3166 if (!(mstate->dtms_access & DTRACE_ACCESS_ARGS)) {
3172 ASSERT(mstate->dtms_present & DTRACE_MSTATE_ARGS);
3173 if (ndx >= sizeof (mstate->dtms_arg) /
3174 sizeof (mstate->dtms_arg[0])) {
3175 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
3179 pv = mstate->dtms_probe->dtpr_provider;
3182 mstate->dtms_probe->dtpr_id,
3183 mstate->dtms_probe->dtpr_arg, ndx, aframes);
3196 if (mstate->dtms_probe != NULL)
3202 return (mstate->dtms_arg[ndx]);
3207 if (!dtrace_priv_proc(state, mstate))
3236 if (!dtrace_priv_proc(state, mstate))
3241 if (!(mstate->dtms_present & DTRACE_MSTATE_TIMESTAMP)) {
3242 mstate->dtms_timestamp = dtrace_gethrtime();
3243 mstate->dtms_present |= DTRACE_MSTATE_TIMESTAMP;
3245 return (mstate->dtms_timestamp);
3252 if (!(mstate->dtms_present & DTRACE_MSTATE_WALLTIMESTAMP)) {
3253 mstate->dtms_walltimestamp = dtrace_gethrestime();
3254 mstate->dtms_present |= DTRACE_MSTATE_WALLTIMESTAMP;
3256 return (mstate->dtms_walltimestamp);
3261 if (!(mstate->dtms_present & DTRACE_MSTATE_IPL)) {
3262 mstate->dtms_ipl = dtrace_getipl();
3263 mstate->dtms_present |= DTRACE_MSTATE_IPL;
3265 return (mstate->dtms_ipl);
3268 ASSERT(mstate->dtms_present & DTRACE_MSTATE_EPID);
3269 return (mstate->dtms_epid);
3272 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3273 return (mstate->dtms_probe->dtpr_id);
3278 if (!(mstate->dtms_present & DTRACE_MSTATE_STACKDEPTH)) {
3279 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
3281 mstate->dtms_stackdepth = dtrace_getstackdepth(aframes);
3282 mstate->dtms_present |= DTRACE_MSTATE_STACKDEPTH;
3284 return (mstate->dtms_stackdepth);
3287 if (!dtrace_priv_proc(state, mstate))
3289 if (!(mstate->dtms_present & DTRACE_MSTATE_USTACKDEPTH)) {
3293 if (DTRACE_ANCHORED(mstate->dtms_probe) &&
3295 mstate->dtms_ustackdepth = 0;
3298 mstate->dtms_ustackdepth =
3302 mstate->dtms_present |= DTRACE_MSTATE_USTACKDEPTH;
3304 return (mstate->dtms_ustackdepth);
3309 if (!(mstate->dtms_present & DTRACE_MSTATE_CALLER)) {
3310 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
3312 if (!DTRACE_ANCHORED(mstate->dtms_probe)) {
3322 (uint32_t *)(uintptr_t)mstate->dtms_arg[0]);
3323 mstate->dtms_caller = caller[1];
3324 } else if ((mstate->dtms_caller =
3334 mstate->dtms_caller = caller;
3337 mstate->dtms_present |= DTRACE_MSTATE_CALLER;
3339 return (mstate->dtms_caller);
3342 if (!dtrace_priv_proc(state, mstate))
3345 if (!(mstate->dtms_present & DTRACE_MSTATE_UCALLER)) {
3359 mstate->dtms_ucaller = ustack[2];
3360 mstate->dtms_present |= DTRACE_MSTATE_UCALLER;
3363 return (mstate->dtms_ucaller);
3366 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3368 (uintptr_t)mstate->dtms_probe->dtpr_provider->dtpv_name,
3369 state, mstate));
3372 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3374 (uintptr_t)mstate->dtms_probe->dtpr_mod,
3375 state, mstate));
3378 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3380 (uintptr_t)mstate->dtms_probe->dtpr_func,
3381 state, mstate));
3384 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3386 (uintptr_t)mstate->dtms_probe->dtpr_name,
3387 state, mstate));
3390 if (!dtrace_priv_proc(state, mstate))
3398 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3412 if (!dtrace_priv_proc(state, mstate))
3418 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3433 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3439 if (!dtrace_priv_proc(state, mstate))
3445 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3456 state, mstate));
3459 if (!dtrace_priv_proc(state, mstate))
3465 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3476 state, mstate));
3479 if (!dtrace_priv_proc(state, mstate))
3485 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3500 if (!dtrace_priv_proc(state, mstate))
3506 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3522 if (!dtrace_priv_proc(state, mstate))
3528 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
4015 dtrace_mstate_t *mstate, dtrace_state_t *state)
4038 mstate, vstate)) {
4052 mstate, vstate)) {
4067 mstate, vstate)) {
4078 mstate, vstate)) {
4091 mstate, vstate)) {
4103 mstate, vstate)) {
4114 mstate, vstate)) {
4132 if (!dtrace_inscratch(dest, size, mstate)) {
4138 if (!dtrace_canload(src, size, mstate, vstate)) {
4149 uintptr_t dest = P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
4152 size_t scratch_size = (dest - mstate->dtms_scratch_ptr) + size;
4165 !DTRACE_INSCRATCH(mstate, scratch_size)) {
4177 mstate->dtms_scratch_ptr += scratch_size;
4191 if (!dtrace_inscratch(dest, size, mstate)) {
4204 uintptr_t dest = mstate->dtms_scratch_ptr;
4215 if (!DTRACE_INSCRATCH(mstate, size)) {
4226 mstate->dtms_scratch_ptr += size;
4240 if (!dtrace_canload(baddr, sizeof (mblk_t), mstate,
4319 dtrace_priv_proc_control(state, mstate) &&
4321 dtrace_canload(kaddr, size, mstate, vstate)) {
4336 dtrace_priv_proc_control(state, mstate) &&
4338 dtrace_strcanload(kaddr, size, &lim, mstate, vstate)) {
4351 if (!dtrace_strcanload(addr, size, &lim, mstate, vstate)) {
4375 if (!dtrace_strcanload(addr, size, &lim, mstate, vstate)) {
4418 if (!dtrace_canload((uintptr_t)addr, len + 1, mstate, vstate)) {
4423 if (!dtrace_canload((uintptr_t)substr, sublen + 1, mstate,
4552 char *dest = (char *)mstate->dtms_scratch_ptr;
4559 if (!dtrace_strcanload(tokaddr, size, &clim, mstate, vstate)) {
4565 if (!DTRACE_INSCRATCH(mstate, size)) {
4574 * strtok pointer from the mstate. Note that this
4579 addr = mstate->dtms_strtok;
4580 limit = mstate->dtms_strtok_limit;
4587 * (when we fetch addr from mstate->dtms_strtok)
4590 if (!dtrace_strcanload(addr, size, &clim, mstate,
4634 mstate->dtms_strtok = NULL;
4635 mstate->dtms_strtok_limit = NULL;
4656 mstate->dtms_scratch_ptr += size;
4657 mstate->dtms_strtok = addr;
4658 mstate->dtms_strtok_limit = limit;
4665 char *d = (char *)mstate->dtms_scratch_ptr;
4671 if (!dtrace_canload(s, len + 1, mstate, vstate)) {
4676 if (!DTRACE_INSCRATCH(mstate, size)) {
4709 mstate->dtms_scratch_ptr += size;
4721 char *dest = (char *)mstate->dtms_scratch_ptr;
4722 char *elemlist = (char *)mstate->dtms_scratch_ptr + jsonlen + 1;
4727 if (!dtrace_canload(json, jsonlen + 1, mstate, vstate) ||
4728 !dtrace_canload(elem, elemlen + 1, mstate, vstate)) {
4733 if (!DTRACE_INSCRATCH(mstate, jsonlen + 1 + elemlen + 1)) {
4769 mstate->dtms_scratch_ptr += jsonlen + 1;
4777 char *dest = (char *)mstate->dtms_scratch_ptr, c;
4792 if (!dtrace_canload(s, len + 1, mstate, vstate)) {
4797 if (!DTRACE_INSCRATCH(mstate, size)) {
4816 mstate->dtms_scratch_ptr += size;
4843 uintptr_t dest = mstate->dtms_scratch_ptr;
4856 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) == 0) {
4862 if (!DTRACE_INSCRATCH(mstate, size)) {
5023 mstate->dtms_scratch_ptr += size;
5030 char *d = (char *)mstate->dtms_scratch_ptr;
5038 if (!dtrace_strcanload(s1, size, &lim1, mstate, vstate) ||
5039 !dtrace_strcanload(s2, size, &lim2, mstate, vstate)) {
5044 if (!DTRACE_INSCRATCH(mstate, size)) {
5076 mstate->dtms_scratch_ptr += i;
5097 if (!dtrace_strcanload(s, size, &lim, mstate, vstate)) {
5110 char *end = (char *)mstate->dtms_scratch_ptr + size - 1;
5123 if (!DTRACE_INSCRATCH(mstate, size)) {
5150 mstate->dtms_scratch_ptr += size;
5186 char *dest = (char *)mstate->dtms_scratch_ptr;
5193 if (!dtrace_canload(src, len + 1, mstate, vstate)) {
5198 if (!DTRACE_INSCRATCH(mstate, size)) {
5311 mstate->dtms_scratch_ptr += size;
5320 if (!dtrace_priv_proc(state, mstate)) {
5333 mstate->dtms_getf = fp;
5339 char *dest = (char *)mstate->dtms_scratch_ptr, c;
5346 if (!dtrace_strcanload(src, size, &lim, mstate, vstate)) {
5351 if (!DTRACE_INSCRATCH(mstate, size)) {
5444 if (mstate->dtms_getf != NULL &&
5445 !(mstate->dtms_access & DTRACE_ACCESS_KERNEL) &&
5461 mstate->dtms_scratch_ptr += size;
5485 sizeof (ipaddr_t), mstate, vstate)) {
5499 if (!DTRACE_INSCRATCH(mstate, size)) {
5504 base = (char *)mstate->dtms_scratch_ptr;
5505 end = (char *)mstate->dtms_scratch_ptr + size - 1;
5544 sizeof (struct in6_addr), mstate, vstate)) {
5560 if (!DTRACE_INSCRATCH(mstate, size)) {
5565 base = (char *)mstate->dtms_scratch_ptr;
5566 end = (char *)mstate->dtms_scratch_ptr + size - 1;
5677 mstate->dtms_scratch_ptr += size;
5690 dtrace_dif_emulate(dtrace_difo_t *difo, dtrace_mstate_t *mstate,
5720 mstate->dtms_difo = difo;
5864 if (!dtrace_canload(regs[r1], 1, mstate, vstate))
5871 if (!dtrace_canload(regs[r1], 2, mstate, vstate))
5878 if (!dtrace_canload(regs[r1], 4, mstate, vstate))
5885 if (!dtrace_canload(regs[r1], 1, mstate, vstate))
5892 if (!dtrace_canload(regs[r1], 2, mstate, vstate))
5899 if (!dtrace_canload(regs[r1], 4, mstate, vstate))
5906 if (!dtrace_canload(regs[r1], 8, mstate, vstate))
5974 !dtrace_strcanload(s1, sz, &lim1, mstate, vstate))
5977 !dtrace_strcanload(s2, sz, &lim2, mstate, vstate))
5989 regs[rd] = dtrace_dif_variable(mstate, state,
6024 regs[rd] = dtrace_dif_variable(mstate, state, id, 0);
6054 &lim, mstate, vstate))
6152 &lim, mstate, vstate))
6182 mstate, vstate);
6218 DTRACE_DYNVAR_DEALLOC, mstate, vstate);
6234 &v->dtdv_type, &lim, mstate, vstate))
6252 regs, tupregs, ttop, mstate, state);
6331 DTRACE_DYNVAR_NOALLOC, mstate, vstate);
6374 DTRACE_DYNVAR_DEALLOC, mstate, vstate);
6384 &lim, mstate, vstate))
6397 uintptr_t ptr = P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
6398 size_t size = ptr - mstate->dtms_scratch_ptr + regs[r1];
6406 !DTRACE_INSCRATCH(mstate, size)) {
6412 dtrace_bzero((void *) mstate->dtms_scratch_ptr, size);
6413 mstate->dtms_scratch_ptr += size;
6420 mstate, vstate)) {
6426 if (!dtrace_canload(regs[r1], regs[r2], mstate, vstate))
6434 if (!dtrace_canstore(regs[rd], 1, mstate, vstate)) {
6443 if (!dtrace_canstore(regs[rd], 2, mstate, vstate)) {
6457 if (!dtrace_canstore(regs[rd], 4, mstate, vstate)) {
6471 if (!dtrace_canstore(regs[rd], 8, mstate, vstate)) {
6489 mstate->dtms_fltoffs = opc * sizeof (dif_instr_t);
6490 mstate->dtms_present |= DTRACE_MSTATE_FLTOFFS;
6622 dtrace_action_chill(dtrace_mstate_t *mstate, hrtime_t val)
6662 mstate->dtms_present &= ~DTRACE_MSTATE_TIMESTAMP;
6667 dtrace_action_ustack(dtrace_mstate_t *mstate, dtrace_state_t *state,
6676 uintptr_t old = mstate->dtms_scratch_ptr, saved;
6689 fps = (uint64_t *)P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
6690 size = (uintptr_t)fps - mstate->dtms_scratch_ptr +
6693 if (!DTRACE_INSCRATCH(mstate, size)) {
6702 mstate->dtms_scratch_ptr += size;
6703 saved = mstate->dtms_scratch_ptr;
6723 mstate->dtms_scratch_ptr = saved;
6730 mstate, state, pcs[i], fps[i]);
6747 if (!dtrace_strcanload((uintptr_t)sym, strsize, &rem, mstate,
6783 mstate->dtms_scratch_ptr = old;
6855 dtrace_mstate_t mstate;
6897 now = mstate.dtms_timestamp = dtrace_gethrtime();
6898 mstate.dtms_present |= DTRACE_MSTATE_TIMESTAMP;
6904 mstate.dtms_difo = NULL;
6905 mstate.dtms_probe = probe;
6906 mstate.dtms_strtok = NULL;
6907 mstate.dtms_arg[0] = arg0;
6908 mstate.dtms_arg[1] = arg1;
6909 mstate.dtms_arg[2] = arg2;
6910 mstate.dtms_arg[3] = arg3;
6911 mstate.dtms_arg[4] = arg4;
6942 mstate.dtms_present = DTRACE_MSTATE_ARGS | DTRACE_MSTATE_PROBE;
6943 mstate.dtms_access = DTRACE_ACCESS_ARGS | DTRACE_ACCESS_PROC;
6944 mstate.dtms_getf = NULL;
6983 if (ecb->dte_cond && !dtrace_priv_probe(state, &mstate, ecb))
7011 ecb->dte_alignment, state, &mstate)) < 0)
7019 if (!(mstate.dtms_present & DTRACE_MSTATE_TIMESTAMP)) {
7020 mstate.dtms_timestamp = dtrace_gethrtime();
7021 mstate.dtms_present |= DTRACE_MSTATE_TIMESTAMP;
7026 mstate.dtms_timestamp);
7030 mstate.dtms_epid = ecb->dte_epid;
7031 mstate.dtms_present |= DTRACE_MSTATE_EPID;
7034 mstate.dtms_access |= DTRACE_ACCESS_KERNEL;
7040 rval = dtrace_dif_emulate(dp, &mstate, vstate, state);
7074 &mstate, vstate, state);
7095 &mstate))
7122 if (!dtrace_priv_proc(state, &mstate))
7128 if (DTRACE_ANCHORED(mstate.dtms_probe) &&
7149 dtrace_action_ustack(&mstate, state,
7186 val = dtrace_dif_emulate(dp, &mstate, vstate, state);
7236 dtrace_action_chill(&mstate, val);
7241 &mstate))
7286 if (!dtrace_priv_proc(state, &mstate))
7347 &dp->dtdo_rtype, NULL, &mstate, vstate))
7426 (mstate.dtms_present & DTRACE_MSTATE_FLTOFFS) ?
7427 mstate.dtms_fltoffs : -1, DTRACE_FLAGS2FLT(*flags),
11585 * in a buffer. If mstate is non-NULL, sets the scratch base and size in the
11586 * mstate. Returns the new offset in the buffer, or a negative value if an
11591 dtrace_state_t *state, dtrace_mstate_t *mstate)
11623 if (mstate == NULL)
11626 mstate->dtms_scratch_base = (uintptr_t)tomax + soffs;
11627 mstate->dtms_scratch_size = buf->dtb_size - soffs;
11628 mstate->dtms_scratch_ptr = mstate->dtms_scratch_base;
11808 if (mstate == NULL)
11815 mstate->dtms_scratch_base = (uintptr_t)buf->dtb_xamot;
11816 mstate->dtms_scratch_size = buf->dtb_size;
11817 mstate->dtms_scratch_ptr = mstate->dtms_scratch_base;
14614 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate, int where)
14658 ent->dtht_fltoffs = (mstate->dtms_present & DTRACE_MSTATE_FLTOFFS) ?
14659 mstate->dtms_fltoffs : -1;
14676 dtrace_helper(int which, dtrace_mstate_t *mstate,
14680 uint64_t sarg0 = mstate->dtms_arg[0];
14681 uint64_t sarg1 = mstate->dtms_arg[1];
14698 mstate->dtms_arg[0] = arg0;
14699 mstate->dtms_arg[1] = arg1;
14713 dtrace_helper_trace(helper, mstate, vstate, 0);
14715 if (!dtrace_dif_emulate(pred, mstate, vstate, state))
14725 mstate, vstate, i + 1);
14728 mstate, vstate, state);
14736 dtrace_helper_trace(helper, mstate, vstate,
14741 dtrace_helper_trace(helper, mstate, vstate,
14747 mstate->dtms_arg[0] = sarg0;
14748 mstate->dtms_arg[1] = sarg1;
14754 dtrace_helper_trace(helper, mstate, vstate,
14760 mstate->dtms_arg[0] = sarg0;
14761 mstate->dtms_arg[1] = sarg1;