Lines Matching defs:mstate

394 #define	DTRACE_INSCRATCH(mstate, alloc_sz) \
395 ((mstate)->dtms_scratch_base + (mstate)->dtms_scratch_size - \
396 (mstate)->dtms_scratch_ptr >= (alloc_sz))
578 dtrace_inscratch(uintptr_t dest, size_t size, dtrace_mstate_t *mstate)
580 if (dest < mstate->dtms_scratch_base)
586 if (dest + size > mstate->dtms_scratch_ptr)
638 dtrace_canstore(uint64_t addr, size_t sz, dtrace_mstate_t *mstate,
644 if (DTRACE_INRANGE(addr, sz, mstate->dtms_scratch_base,
645 mstate->dtms_scratch_size))
728 dtrace_canload(uint64_t addr, size_t sz, dtrace_mstate_t *mstate,
738 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0)
744 if (dtrace_canstore(addr, sz, mstate, vstate))
750 if (DTRACE_INRANGE(addr, sz, mstate->dtms_difo->dtdo_strtab,
751 mstate->dtms_difo->dtdo_strlen))
755 dtrace_priv_proc(vstate->dtvs_state, mstate)) {
798 if ((fp = mstate->dtms_getf) != NULL) {
855 dtrace_strcanload(uint64_t addr, size_t sz, dtrace_mstate_t *mstate,
864 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0)
868 if (dtrace_canload(addr, strsz, mstate, vstate))
879 dtrace_vcanload(void *src, dtrace_diftype_t *type, dtrace_mstate_t *mstate,
889 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0)
898 return (dtrace_canload((uintptr_t)src, sz, mstate, vstate));
1296 dtrace_priv_proc_destructive(dtrace_state_t *state, dtrace_mstate_t *mstate)
1300 if (!(mstate->dtms_access & DTRACE_ACCESS_PROC))
1324 dtrace_priv_proc_control(dtrace_state_t *state, dtrace_mstate_t *mstate)
1326 if (mstate->dtms_access & DTRACE_ACCESS_PROC) {
1342 dtrace_priv_proc(dtrace_state_t *state, dtrace_mstate_t *mstate)
1344 if ((mstate->dtms_access & DTRACE_ACCESS_PROC) &&
1378 * processing, but with access(es) stripped from the mstate's dtms_access
1382 dtrace_priv_probe(dtrace_state_t *state, dtrace_mstate_t *mstate,
1415 mstate->dtms_access &= ~DTRACE_ACCESS_ARGS;
1447 mstate->dtms_access &= ~DTRACE_ACCESS_PROC;
1468 mstate->dtms_access &=
1480 mstate->dtms_access &= ~DTRACE_ACCESS_ARGS;
1634 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
1686 if (!dtrace_canload(base, size, mstate, vstate))
2995 dtrace_mstate_t *mstate)
3005 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0)
3016 if (mstate->dtms_scratch_ptr + strsz >
3017 mstate->dtms_scratch_base + mstate->dtms_scratch_size) {
3022 dtrace_strcpy((const void *)addr, (void *)mstate->dtms_scratch_ptr,
3024 ret = mstate->dtms_scratch_ptr;
3025 mstate->dtms_scratch_ptr += strsz;
3034 dtrace_dif_variable(dtrace_mstate_t *mstate, dtrace_state_t *state, uint64_t v,
3048 if (!(mstate->dtms_access & DTRACE_ACCESS_ARGS)) {
3054 ASSERT(mstate->dtms_present & DTRACE_MSTATE_ARGS);
3055 if (ndx >= sizeof (mstate->dtms_arg) /
3056 sizeof (mstate->dtms_arg[0])) {
3057 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
3061 pv = mstate->dtms_probe->dtpr_provider;
3064 mstate->dtms_probe->dtpr_id,
3065 mstate->dtms_probe->dtpr_arg, ndx, aframes);
3078 if (mstate->dtms_probe != NULL)
3084 return (mstate->dtms_arg[ndx]);
3089 if (!dtrace_priv_proc(state, mstate))
3118 if (!dtrace_priv_proc(state, mstate))
3123 if (!(mstate->dtms_present & DTRACE_MSTATE_TIMESTAMP)) {
3124 mstate->dtms_timestamp = dtrace_gethrtime();
3125 mstate->dtms_present |= DTRACE_MSTATE_TIMESTAMP;
3127 return (mstate->dtms_timestamp);
3134 if (!(mstate->dtms_present & DTRACE_MSTATE_WALLTIMESTAMP)) {
3135 mstate->dtms_walltimestamp = dtrace_gethrestime();
3136 mstate->dtms_present |= DTRACE_MSTATE_WALLTIMESTAMP;
3138 return (mstate->dtms_walltimestamp);
3143 if (!(mstate->dtms_present & DTRACE_MSTATE_IPL)) {
3144 mstate->dtms_ipl = dtrace_getipl();
3145 mstate->dtms_present |= DTRACE_MSTATE_IPL;
3147 return (mstate->dtms_ipl);
3150 ASSERT(mstate->dtms_present & DTRACE_MSTATE_EPID);
3151 return (mstate->dtms_epid);
3154 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3155 return (mstate->dtms_probe->dtpr_id);
3160 if (!(mstate->dtms_present & DTRACE_MSTATE_STACKDEPTH)) {
3161 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
3163 mstate->dtms_stackdepth = dtrace_getstackdepth(aframes);
3164 mstate->dtms_present |= DTRACE_MSTATE_STACKDEPTH;
3166 return (mstate->dtms_stackdepth);
3169 if (!dtrace_priv_proc(state, mstate))
3171 if (!(mstate->dtms_present & DTRACE_MSTATE_USTACKDEPTH)) {
3175 if (DTRACE_ANCHORED(mstate->dtms_probe) &&
3177 mstate->dtms_ustackdepth = 0;
3180 mstate->dtms_ustackdepth =
3184 mstate->dtms_present |= DTRACE_MSTATE_USTACKDEPTH;
3186 return (mstate->dtms_ustackdepth);
3191 if (!(mstate->dtms_present & DTRACE_MSTATE_CALLER)) {
3192 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
3194 if (!DTRACE_ANCHORED(mstate->dtms_probe)) {
3204 (uint32_t *)(uintptr_t)mstate->dtms_arg[0]);
3205 mstate->dtms_caller = caller[1];
3206 } else if ((mstate->dtms_caller =
3216 mstate->dtms_caller = caller;
3219 mstate->dtms_present |= DTRACE_MSTATE_CALLER;
3221 return (mstate->dtms_caller);
3224 if (!dtrace_priv_proc(state, mstate))
3227 if (!(mstate->dtms_present & DTRACE_MSTATE_UCALLER)) {
3241 mstate->dtms_ucaller = ustack[2];
3242 mstate->dtms_present |= DTRACE_MSTATE_UCALLER;
3245 return (mstate->dtms_ucaller);
3248 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3250 (uintptr_t)mstate->dtms_probe->dtpr_provider->dtpv_name,
3251 state, mstate));
3254 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3256 (uintptr_t)mstate->dtms_probe->dtpr_mod,
3257 state, mstate));
3260 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3262 (uintptr_t)mstate->dtms_probe->dtpr_func,
3263 state, mstate));
3266 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3268 (uintptr_t)mstate->dtms_probe->dtpr_name,
3269 state, mstate));
3272 if (!dtrace_priv_proc(state, mstate))
3280 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3294 if (!dtrace_priv_proc(state, mstate))
3300 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3315 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3321 if (!dtrace_priv_proc(state, mstate))
3327 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3338 state, mstate));
3341 if (!dtrace_priv_proc(state, mstate))
3347 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3358 state, mstate));
3361 if (!dtrace_priv_proc(state, mstate))
3367 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3382 if (!dtrace_priv_proc(state, mstate))
3388 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3404 if (!dtrace_priv_proc(state, mstate))
3410 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3897 dtrace_mstate_t *mstate, dtrace_state_t *state)
3920 mstate, vstate)) {
3934 mstate, vstate)) {
3949 mstate, vstate)) {
3960 mstate, vstate)) {
3973 mstate, vstate)) {
3985 mstate, vstate)) {
3996 mstate, vstate)) {
4014 if (!dtrace_inscratch(dest, size, mstate)) {
4020 if (!dtrace_canload(src, size, mstate, vstate)) {
4031 uintptr_t dest = P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
4034 size_t scratch_size = (dest - mstate->dtms_scratch_ptr) + size;
4047 !DTRACE_INSCRATCH(mstate, scratch_size)) {
4059 mstate->dtms_scratch_ptr += scratch_size;
4073 if (!dtrace_inscratch(dest, size, mstate)) {
4086 uintptr_t dest = mstate->dtms_scratch_ptr;
4097 if (!DTRACE_INSCRATCH(mstate, size)) {
4108 mstate->dtms_scratch_ptr += size;
4122 if (!dtrace_canload(baddr, sizeof (mblk_t), mstate,
4201 dtrace_priv_proc_control(state, mstate) &&
4203 dtrace_canload(kaddr, size, mstate, vstate)) {
4217 dtrace_priv_proc_control(state, mstate) &&
4219 dtrace_strcanload(kaddr, size, mstate, vstate)) {
4233 if (!dtrace_canload(addr, sz + 1, mstate, vstate)) {
4269 if (!dtrace_canload(saddr, addr - saddr, mstate, vstate)) {
4300 if (!dtrace_canload((uintptr_t)addr, len + 1, mstate, vstate)) {
4305 if (!dtrace_canload((uintptr_t)substr, sublen + 1, mstate,
4433 char *dest = (char *)mstate->dtms_scratch_ptr;
4440 if (!dtrace_strcanload(tokaddr, size, mstate, vstate)) {
4445 if (!DTRACE_INSCRATCH(mstate, size)) {
4454 * strtok pointer from the mstate. Note that this
4459 addr = mstate->dtms_strtok;
4466 * (when we fetch addr from mstate->dtms_strtok)
4469 if (!dtrace_strcanload(addr, size, mstate, vstate)) {
4511 mstate->dtms_strtok = NULL;
4532 mstate->dtms_scratch_ptr += size;
4533 mstate->dtms_strtok = addr;
4540 char *d = (char *)mstate->dtms_scratch_ptr;
4546 if (!dtrace_canload(s, len + 1, mstate, vstate)) {
4551 if (!DTRACE_INSCRATCH(mstate, size)) {
4584 mstate->dtms_scratch_ptr += size;
4596 char *dest = (char *)mstate->dtms_scratch_ptr;
4597 char *elemlist = (char *)mstate->dtms_scratch_ptr + jsonlen + 1;
4602 if (!dtrace_canload(json, jsonlen + 1, mstate, vstate) ||
4603 !dtrace_canload(elem, elemlen + 1, mstate, vstate)) {
4608 if (!DTRACE_INSCRATCH(mstate, jsonlen + 1 + elemlen + 1)) {
4644 mstate->dtms_scratch_ptr += jsonlen + 1;
4652 char *dest = (char *)mstate->dtms_scratch_ptr, c;
4667 if (!dtrace_canload(s, len + 1, mstate, vstate)) {
4672 if (!DTRACE_INSCRATCH(mstate, size)) {
4691 mstate->dtms_scratch_ptr += size;
4718 uintptr_t dest = mstate->dtms_scratch_ptr;
4731 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) == 0) {
4737 if (!DTRACE_INSCRATCH(mstate, size)) {
4898 mstate->dtms_scratch_ptr += size;
4905 char *d = (char *)mstate->dtms_scratch_ptr;
4911 if (!dtrace_strcanload(s1, size, mstate, vstate) ||
4912 !dtrace_strcanload(s2, size, mstate, vstate)) {
4917 if (!DTRACE_INSCRATCH(mstate, size)) {
4948 mstate->dtms_scratch_ptr += i;
4968 if (!dtrace_strcanload(s, size, mstate, vstate)) {
4981 char *end = (char *)mstate->dtms_scratch_ptr + size - 1;
4994 if (!DTRACE_INSCRATCH(mstate, size)) {
5021 mstate->dtms_scratch_ptr += size;
5057 char *dest = (char *)mstate->dtms_scratch_ptr;
5064 if (!dtrace_canload(src, len + 1, mstate, vstate)) {
5069 if (!DTRACE_INSCRATCH(mstate, size)) {
5182 mstate->dtms_scratch_ptr += size;
5191 if (!dtrace_priv_proc(state, mstate)) {
5204 mstate->dtms_getf = fp;
5210 char *dest = (char *)mstate->dtms_scratch_ptr, c;
5216 if (!dtrace_strcanload(src, size, mstate, vstate)) {
5221 if (!DTRACE_INSCRATCH(mstate, size)) {
5314 if (mstate->dtms_getf != NULL &&
5315 !(mstate->dtms_access & DTRACE_ACCESS_KERNEL) &&
5331 mstate->dtms_scratch_ptr += size;
5355 sizeof (ipaddr_t), mstate, vstate)) {
5369 if (!DTRACE_INSCRATCH(mstate, size)) {
5374 base = (char *)mstate->dtms_scratch_ptr;
5375 end = (char *)mstate->dtms_scratch_ptr + size - 1;
5414 sizeof (struct in6_addr), mstate, vstate)) {
5430 if (!DTRACE_INSCRATCH(mstate, size)) {
5435 base = (char *)mstate->dtms_scratch_ptr;
5436 end = (char *)mstate->dtms_scratch_ptr + size - 1;
5547 mstate->dtms_scratch_ptr += size;
5560 dtrace_dif_emulate(dtrace_difo_t *difo, dtrace_mstate_t *mstate,
5590 mstate->dtms_difo = difo;
5726 if (!dtrace_canload(regs[r1], 1, mstate, vstate))
5733 if (!dtrace_canload(regs[r1], 2, mstate, vstate))
5740 if (!dtrace_canload(regs[r1], 4, mstate, vstate))
5747 if (!dtrace_canload(regs[r1], 1, mstate, vstate))
5754 if (!dtrace_canload(regs[r1], 2, mstate, vstate))
5761 if (!dtrace_canload(regs[r1], 4, mstate, vstate))
5768 if (!dtrace_canload(regs[r1], 8, mstate, vstate))
5835 !dtrace_strcanload(s1, sz, mstate, vstate))
5838 !dtrace_strcanload(s2, sz, mstate, vstate))
5849 regs[rd] = dtrace_dif_variable(mstate, state,
5884 regs[rd] = dtrace_dif_variable(mstate, state, id, 0);
5913 mstate, vstate))
6010 mstate, vstate))
6040 mstate, vstate);
6076 DTRACE_DYNVAR_DEALLOC, mstate, vstate);
6090 &v->dtdv_type, mstate, vstate))
6108 regs, tupregs, ttop, mstate, state);
6187 DTRACE_DYNVAR_NOALLOC, mstate, vstate);
6230 DTRACE_DYNVAR_DEALLOC, mstate, vstate);
6238 mstate, vstate))
6251 uintptr_t ptr = P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
6252 size_t size = ptr - mstate->dtms_scratch_ptr + regs[r1];
6260 !DTRACE_INSCRATCH(mstate, size)) {
6266 dtrace_bzero((void *) mstate->dtms_scratch_ptr, size);
6267 mstate->dtms_scratch_ptr += size;
6274 mstate, vstate)) {
6280 if (!dtrace_canload(regs[r1], regs[r2], mstate, vstate))
6288 if (!dtrace_canstore(regs[rd], 1, mstate, vstate)) {
6297 if (!dtrace_canstore(regs[rd], 2, mstate, vstate)) {
6311 if (!dtrace_canstore(regs[rd], 4, mstate, vstate)) {
6325 if (!dtrace_canstore(regs[rd], 8, mstate, vstate)) {
6343 mstate->dtms_fltoffs = opc * sizeof (dif_instr_t);
6344 mstate->dtms_present |= DTRACE_MSTATE_FLTOFFS;
6476 dtrace_action_chill(dtrace_mstate_t *mstate, hrtime_t val)
6516 mstate->dtms_present &= ~DTRACE_MSTATE_TIMESTAMP;
6521 dtrace_action_ustack(dtrace_mstate_t *mstate, dtrace_state_t *state,
6529 uintptr_t old = mstate->dtms_scratch_ptr, saved;
6542 fps = (uint64_t *)P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
6543 size = (uintptr_t)fps - mstate->dtms_scratch_ptr +
6546 if (!DTRACE_INSCRATCH(mstate, size)) {
6555 mstate->dtms_scratch_ptr += size;
6556 saved = mstate->dtms_scratch_ptr;
6576 mstate->dtms_scratch_ptr = saved;
6583 mstate, state, pcs[i], fps[i]);
6630 mstate->dtms_scratch_ptr = old;
6702 dtrace_mstate_t mstate;
6744 now = mstate.dtms_timestamp = dtrace_gethrtime();
6745 mstate.dtms_present |= DTRACE_MSTATE_TIMESTAMP;
6751 mstate.dtms_difo = NULL;
6752 mstate.dtms_probe = probe;
6753 mstate.dtms_strtok = NULL;
6754 mstate.dtms_arg[0] = arg0;
6755 mstate.dtms_arg[1] = arg1;
6756 mstate.dtms_arg[2] = arg2;
6757 mstate.dtms_arg[3] = arg3;
6758 mstate.dtms_arg[4] = arg4;
6789 mstate.dtms_present = DTRACE_MSTATE_ARGS | DTRACE_MSTATE_PROBE;
6790 mstate.dtms_access = DTRACE_ACCESS_ARGS | DTRACE_ACCESS_PROC;
6791 mstate.dtms_getf = NULL;
6830 if (ecb->dte_cond && !dtrace_priv_probe(state, &mstate, ecb))
6858 ecb->dte_alignment, state, &mstate)) < 0)
6866 if (!(mstate.dtms_present & DTRACE_MSTATE_TIMESTAMP)) {
6867 mstate.dtms_timestamp = dtrace_gethrtime();
6868 mstate.dtms_present |= DTRACE_MSTATE_TIMESTAMP;
6873 mstate.dtms_timestamp);
6877 mstate.dtms_epid = ecb->dte_epid;
6878 mstate.dtms_present |= DTRACE_MSTATE_EPID;
6881 mstate.dtms_access |= DTRACE_ACCESS_KERNEL;
6887 rval = dtrace_dif_emulate(dp, &mstate, vstate, state);
6921 &mstate, vstate, state);
6942 &mstate))
6969 if (!dtrace_priv_proc(state, &mstate))
6975 if (DTRACE_ANCHORED(mstate.dtms_probe) &&
6996 dtrace_action_ustack(&mstate, state,
7033 val = dtrace_dif_emulate(dp, &mstate, vstate, state);
7083 dtrace_action_chill(&mstate, val);
7088 &mstate))
7133 if (!dtrace_priv_proc(state, &mstate))
7194 &dp->dtdo_rtype, &mstate, vstate))
7273 (mstate.dtms_present & DTRACE_MSTATE_FLTOFFS) ?
7274 mstate.dtms_fltoffs : -1, DTRACE_FLAGS2FLT(*flags),
11422 * in a buffer. If mstate is non-NULL, sets the scratch base and size in the
11423 * mstate. Returns the new offset in the buffer, or a negative value if an
11428 dtrace_state_t *state, dtrace_mstate_t *mstate)
11460 if (mstate == NULL)
11463 mstate->dtms_scratch_base = (uintptr_t)tomax + soffs;
11464 mstate->dtms_scratch_size = buf->dtb_size - soffs;
11465 mstate->dtms_scratch_ptr = mstate->dtms_scratch_base;
11645 if (mstate == NULL)
11652 mstate->dtms_scratch_base = (uintptr_t)buf->dtb_xamot;
11653 mstate->dtms_scratch_size = buf->dtb_size;
11654 mstate->dtms_scratch_ptr = mstate->dtms_scratch_base;
14451 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate, int where)
14495 ent->dtht_fltoffs = (mstate->dtms_present & DTRACE_MSTATE_FLTOFFS) ?
14496 mstate->dtms_fltoffs : -1;
14513 dtrace_helper(int which, dtrace_mstate_t *mstate,
14517 uint64_t sarg0 = mstate->dtms_arg[0];
14518 uint64_t sarg1 = mstate->dtms_arg[1];
14535 mstate->dtms_arg[0] = arg0;
14536 mstate->dtms_arg[1] = arg1;
14550 dtrace_helper_trace(helper, mstate, vstate, 0);
14552 if (!dtrace_dif_emulate(pred, mstate, vstate, state))
14562 mstate, vstate, i + 1);
14565 mstate, vstate, state);
14573 dtrace_helper_trace(helper, mstate, vstate,
14578 dtrace_helper_trace(helper, mstate, vstate,
14584 mstate->dtms_arg[0] = sarg0;
14585 mstate->dtms_arg[1] = sarg1;
14591 dtrace_helper_trace(helper, mstate, vstate,
14597 mstate->dtms_arg[0] = sarg0;
14598 mstate->dtms_arg[1] = sarg1;