Lines Matching refs:mstate

508 #define	DTRACE_INSCRATCH(mstate, alloc_sz) \
509 ((mstate)->dtms_scratch_base + (mstate)->dtms_scratch_size - \
510 (mstate)->dtms_scratch_ptr >= (alloc_sz))
699 dtrace_inscratch(uintptr_t dest, size_t size, dtrace_mstate_t *mstate)
701 if (dest < mstate->dtms_scratch_base)
707 if (dest + size > mstate->dtms_scratch_ptr)
739 dtrace_canstore(uint64_t addr, size_t sz, dtrace_mstate_t *mstate,
745 if (DTRACE_INRANGE(addr, sz, mstate->dtms_scratch_base,
746 mstate->dtms_scratch_size))
817 dtrace_canload(uint64_t addr, size_t sz, dtrace_mstate_t *mstate,
826 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0)
832 if (dtrace_canstore(addr, sz, mstate, vstate))
838 if (DTRACE_INRANGE(addr, sz, (uintptr_t)mstate->dtms_difo->dtdo_strtab,
839 mstate->dtms_difo->dtdo_strlen))
854 dtrace_strcanload(uint64_t addr, size_t sz, dtrace_mstate_t *mstate,
863 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0)
867 if (dtrace_canload(addr, strsz, mstate, vstate))
878 dtrace_vcanload(void *src, dtrace_diftype_t *type, dtrace_mstate_t *mstate,
888 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0)
897 return (dtrace_canload((uintptr_t)src, sz, mstate, vstate));
1441 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate)
1493 if (!dtrace_canload(base, size, mstate, vstate))
1893 return (dtrace_dynvar(dstate, nkeys, key, dsize, op, mstate, vstate));
2701 dtrace_mstate_t *mstate)
2711 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) != 0)
2722 if (mstate->dtms_scratch_ptr + strsz >
2723 mstate->dtms_scratch_base + mstate->dtms_scratch_size) {
2728 dtrace_strcpy((const void *)addr, (void *)mstate->dtms_scratch_ptr,
2730 ret = mstate->dtms_scratch_ptr;
2731 mstate->dtms_scratch_ptr += strsz;
2748 dtrace_mstate_t *mstate)
2754 if (mstate->dtms_scratch_ptr + strsz >
2755 mstate->dtms_scratch_base + mstate->dtms_scratch_size) {
2760 dtrace_bcopy((const void *)addr, (void *)mstate->dtms_scratch_ptr,
2764 for (p = (char *) mstate->dtms_scratch_ptr, i = 0; i < strsz - 1;
2769 ret = mstate->dtms_scratch_ptr;
2770 mstate->dtms_scratch_ptr += strsz;
2780 dtrace_dif_variable(dtrace_mstate_t *mstate, dtrace_state_t *state, uint64_t v,
2794 ASSERT(mstate->dtms_present & DTRACE_MSTATE_ARGS);
2795 if (ndx >= sizeof (mstate->dtms_arg) /
2796 sizeof (mstate->dtms_arg[0])) {
2797 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
2801 pv = mstate->dtms_probe->dtpr_provider;
2804 mstate->dtms_probe->dtpr_id,
2805 mstate->dtms_probe->dtpr_arg, ndx, aframes);
2818 if (mstate->dtms_probe != NULL)
2824 return (mstate->dtms_arg[ndx]);
2850 if (!(mstate->dtms_present & DTRACE_MSTATE_TIMESTAMP)) {
2851 mstate->dtms_timestamp = dtrace_gethrtime();
2852 mstate->dtms_present |= DTRACE_MSTATE_TIMESTAMP;
2854 return (mstate->dtms_timestamp);
2861 if (!(mstate->dtms_present & DTRACE_MSTATE_WALLTIMESTAMP)) {
2862 mstate->dtms_walltimestamp = dtrace_gethrestime();
2863 mstate->dtms_present |= DTRACE_MSTATE_WALLTIMESTAMP;
2865 return (mstate->dtms_walltimestamp);
2871 if (!(mstate->dtms_present & DTRACE_MSTATE_IPL)) {
2872 mstate->dtms_ipl = dtrace_getipl();
2873 mstate->dtms_present |= DTRACE_MSTATE_IPL;
2875 return (mstate->dtms_ipl);
2879 ASSERT(mstate->dtms_present & DTRACE_MSTATE_EPID);
2880 return (mstate->dtms_epid);
2883 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
2884 return (mstate->dtms_probe->dtpr_id);
2889 if (!(mstate->dtms_present & DTRACE_MSTATE_STACKDEPTH)) {
2890 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
2892 mstate->dtms_stackdepth = dtrace_getstackdepth(aframes);
2893 mstate->dtms_present |= DTRACE_MSTATE_STACKDEPTH;
2895 return (mstate->dtms_stackdepth);
2901 if (!(mstate->dtms_present & DTRACE_MSTATE_USTACKDEPTH)) {
2905 if (DTRACE_ANCHORED(mstate->dtms_probe) &&
2907 mstate->dtms_ustackdepth = 0;
2910 mstate->dtms_ustackdepth =
2914 mstate->dtms_present |= DTRACE_MSTATE_USTACKDEPTH;
2916 return (mstate->dtms_ustackdepth);
2922 if (!(mstate->dtms_present & DTRACE_MSTATE_CALLER)) {
2923 int aframes = mstate->dtms_probe->dtpr_aframes + 2;
2925 if (!DTRACE_ANCHORED(mstate->dtms_probe)) {
2935 (uint32_t *)(uintptr_t)mstate->dtms_arg[0]);
2936 mstate->dtms_caller = caller[1];
2937 } else if ((mstate->dtms_caller =
2947 mstate->dtms_caller = caller;
2950 mstate->dtms_present |= DTRACE_MSTATE_CALLER;
2952 return (mstate->dtms_caller);
2959 if (!(mstate->dtms_present & DTRACE_MSTATE_UCALLER)) {
2973 mstate->dtms_ucaller = ustack[2];
2974 mstate->dtms_present |= DTRACE_MSTATE_UCALLER;
2977 return (mstate->dtms_ucaller);
2981 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
2983 (uintptr_t)mstate->dtms_probe->dtpr_provider->dtpv_name,
2984 state, mstate));
2987 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
2989 (uintptr_t)mstate->dtms_probe->dtpr_mod,
2990 state, mstate));
2993 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
2995 (uintptr_t)mstate->dtms_probe->dtpr_func,
2996 state, mstate));
2999 ASSERT(mstate->dtms_present & DTRACE_MSTATE_PROBE);
3001 (uintptr_t)mstate->dtms_probe->dtpr_name,
3002 state, mstate));
3014 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3038 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3057 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3071 (uintptr_t) p_args->ar_args, p_args->ar_length, state, mstate));
3085 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3096 state, mstate));
3099 (uintptr_t) curthread->l_proc->p_comm, state, mstate));
3110 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3121 state, mstate));
3134 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3159 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3185 if (DTRACE_ANCHORED(mstate->dtms_probe) && CPU_ON_INTR(CPU))
3222 dtrace_mstate_t *mstate, dtrace_state_t *state)
3258 mstate, vstate)) {
3272 mstate, vstate)) {
3287 mstate, vstate)) {
3298 mstate, vstate)) {
3311 mstate, vstate)) {
3323 mstate, vstate)) {
3334 mstate, vstate)) {
3346 mstate, vstate)) {
3360 mstate, vstate)) {
3375 mstate, vstate)) {
3386 mstate, vstate)) {
3397 mstate, vstate)) {
3409 mstate, vstate)) {
3420 mstate, vstate)) {
3440 if (!dtrace_inscratch(dest, size, mstate)) {
3446 if (!dtrace_canload(src, size, mstate, vstate)) {
3457 uintptr_t dest = P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
3460 size_t scratch_size = (dest - mstate->dtms_scratch_ptr) + size;
3473 !DTRACE_INSCRATCH(mstate, scratch_size)) {
3485 mstate->dtms_scratch_ptr += scratch_size;
3499 if (!dtrace_inscratch(dest, size, mstate)) {
3512 uintptr_t dest = mstate->dtms_scratch_ptr;
3523 if (!DTRACE_INSCRATCH(mstate, size)) {
3534 mstate->dtms_scratch_ptr += size;
3549 if (!dtrace_canload(baddr, sizeof (mblk_t), mstate,
3663 if (!dtrace_canload(addr, sz + 1, mstate, vstate)) {
3699 if (!dtrace_canload(saddr, addr - saddr, mstate, vstate)) {
3730 if (!dtrace_canload((uintptr_t)addr, len + 1, mstate, vstate)) {
3735 if (!dtrace_canload((uintptr_t)substr, sublen + 1, mstate,
3863 char *dest = (char *)mstate->dtms_scratch_ptr;
3870 if (!dtrace_strcanload(tokaddr, size, mstate, vstate)) {
3875 if (!DTRACE_INSCRATCH(mstate, size)) {
3884 * strtok pointer from the mstate. Note that this
3889 addr = mstate->dtms_strtok;
3896 * (when we fetch addr from mstate->dtms_strtok)
3899 if (!dtrace_strcanload(addr, size, mstate, vstate)) {
3941 mstate->dtms_strtok = 0;
3962 mstate->dtms_scratch_ptr += size;
3963 mstate->dtms_strtok = addr;
3970 char *d = (char *)mstate->dtms_scratch_ptr;
3976 if (!dtrace_canload(s, len + 1, mstate, vstate)) {
3981 if (!DTRACE_INSCRATCH(mstate, size)) {
4014 mstate->dtms_scratch_ptr += size;
4043 uintptr_t dest = mstate->dtms_scratch_ptr;
4056 if ((mstate->dtms_access & DTRACE_ACCESS_KERNEL) == 0) {
4062 if (!DTRACE_INSCRATCH(mstate, size)) {
4223 mstate->dtms_scratch_ptr += size;
4231 char *d = (char *)mstate->dtms_scratch_ptr;
4237 if (!dtrace_strcanload(s1, size, mstate, vstate) ||
4238 !dtrace_strcanload(s2, size, mstate, vstate)) {
4243 if (!DTRACE_INSCRATCH(mstate, size)) {
4274 mstate->dtms_scratch_ptr += i;
4285 char *end = (char *)mstate->dtms_scratch_ptr + size - 1;
4287 if (!DTRACE_INSCRATCH(mstate, size)) {
4303 mstate->dtms_scratch_ptr += size;
4339 char *dest = (char *)mstate->dtms_scratch_ptr;
4346 if (!dtrace_canload(src, len + 1, mstate, vstate)) {
4351 if (!DTRACE_INSCRATCH(mstate, size)) {
4464 mstate->dtms_scratch_ptr += size;
4469 char *dest = (char *)mstate->dtms_scratch_ptr, c;
4474 if (!dtrace_strcanload(src, size, mstate, vstate)) {
4479 if (!DTRACE_INSCRATCH(mstate, size)) {
4572 mstate->dtms_scratch_ptr += size;
4604 if (!DTRACE_INSCRATCH(mstate, size)) {
4609 base = (char *)mstate->dtms_scratch_ptr;
4610 end = (char *)mstate->dtms_scratch_ptr + size - 1;
4659 if (!DTRACE_INSCRATCH(mstate, size)) {
4664 base = (char *)mstate->dtms_scratch_ptr;
4665 end = (char *)mstate->dtms_scratch_ptr + size - 1;
4797 mstate->dtms_scratch_ptr += size;
4803 uintptr_t *memref = (uintptr_t *) P2ROUNDUP(mstate->dtms_scratch_ptr, sizeof(uintptr_t));
4804 size_t scratch_size = ((uintptr_t) memref - mstate->dtms_scratch_ptr) + size;
4811 mstate->dtms_scratch_ptr += scratch_size;
4817 uintptr_t *typeref = (uintptr_t *) P2ROUNDUP(mstate->dtms_scratch_ptr, sizeof(uintptr_t));
4818 size_t scratch_size = ((uintptr_t) typeref - mstate->dtms_scratch_ptr) + size;
4827 mstate->dtms_scratch_ptr += scratch_size;
4839 dtrace_dif_emulate(dtrace_difo_t *difo, dtrace_mstate_t *mstate,
4869 mstate->dtms_difo = difo;
5005 if (!dtrace_canstore(regs[r1], 1, mstate, vstate)) {
5015 if (!dtrace_canstore(regs[r1], 2, mstate, vstate)) {
5025 if (!dtrace_canstore(regs[r1], 4, mstate, vstate)) {
5035 if (!dtrace_canstore(regs[r1], 1, mstate, vstate)) {
5045 if (!dtrace_canstore(regs[r1], 2, mstate, vstate)) {
5055 if (!dtrace_canstore(regs[r1], 4, mstate, vstate)) {
5065 if (!dtrace_canstore(regs[r1], 8, mstate, vstate)) {
5121 !dtrace_strcanload(s1, sz, mstate, vstate))
5124 !dtrace_strcanload(s2, sz, mstate, vstate))
5135 regs[rd] = dtrace_dif_variable(mstate, state,
5170 regs[rd] = dtrace_dif_variable(mstate, state, id, 0);
5198 mstate, vstate))
5295 mstate, vstate))
5325 mstate, vstate);
5360 DTRACE_DYNVAR_DEALLOC, mstate, vstate);
5374 &v->dtdv_type, mstate, vstate))
5392 regs, tupregs, ttop, mstate, state);
5464 DTRACE_DYNVAR_NOALLOC, mstate, vstate);
5505 DTRACE_DYNVAR_DEALLOC, mstate, vstate);
5513 mstate, vstate))
5526 uintptr_t ptr = P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
5527 size_t size = ptr - mstate->dtms_scratch_ptr + regs[r1];
5535 !DTRACE_INSCRATCH(mstate, size)) {
5541 dtrace_bzero((void *) mstate->dtms_scratch_ptr, size);
5542 mstate->dtms_scratch_ptr += size;
5549 mstate, vstate)) {
5554 if (!dtrace_canload(regs[r1], regs[r2], mstate, vstate))
5562 if (!dtrace_canstore(regs[rd], 1, mstate, vstate)) {
5571 if (!dtrace_canstore(regs[rd], 2, mstate, vstate)) {
5585 if (!dtrace_canstore(regs[rd], 4, mstate, vstate)) {
5599 if (!dtrace_canstore(regs[rd], 8, mstate, vstate)) {
5617 mstate->dtms_fltoffs = opc * sizeof (dif_instr_t);
5618 mstate->dtms_present |= DTRACE_MSTATE_FLTOFFS;
5773 dtrace_action_chill(dtrace_mstate_t *mstate, hrtime_t val)
5818 mstate->dtms_present &= ~DTRACE_MSTATE_TIMESTAMP;
5825 dtrace_action_ustack(dtrace_mstate_t *mstate, dtrace_state_t *state,
5833 uintptr_t old = mstate->dtms_scratch_ptr, saved;
5846 fps = (uint64_t *)P2ROUNDUP(mstate->dtms_scratch_ptr, 8);
5847 size = (uintptr_t)fps - mstate->dtms_scratch_ptr +
5850 if (!DTRACE_INSCRATCH(mstate, size)) {
5859 mstate->dtms_scratch_ptr += size;
5860 saved = mstate->dtms_scratch_ptr;
5880 mstate->dtms_scratch_ptr = saved;
5887 mstate, state, pcs[i], fps[i]);
5934 mstate->dtms_scratch_ptr = old;
5950 dtrace_mstate_t mstate;
6002 mstate.dtms_difo = NULL;
6003 mstate.dtms_probe = probe;
6004 mstate.dtms_strtok = 0;
6005 mstate.dtms_arg[0] = arg0;
6006 mstate.dtms_arg[1] = arg1;
6007 mstate.dtms_arg[2] = arg2;
6008 mstate.dtms_arg[3] = arg3;
6009 mstate.dtms_arg[4] = arg4;
6035 mstate.dtms_present = DTRACE_MSTATE_ARGS | DTRACE_MSTATE_PROBE;
6160 ecb->dte_alignment, state, &mstate)) < 0)
6169 mstate.dtms_epid = ecb->dte_epid;
6170 mstate.dtms_present |= DTRACE_MSTATE_EPID;
6173 mstate.dtms_access = DTRACE_ACCESS_KERNEL;
6175 mstate.dtms_access = 0;
6181 rval = dtrace_dif_emulate(dp, &mstate, vstate, state);
6215 &mstate, vstate, state);
6268 if (DTRACE_ANCHORED(mstate.dtms_probe) &&
6289 dtrace_action_ustack(&mstate, state,
6310 val = dtrace_dif_emulate(dp, &mstate, vstate, state);
6442 dtrace_action_chill(&mstate, val);
6544 &dp->dtdo_rtype, &mstate, vstate))
6649 (mstate.dtms_present & DTRACE_MSTATE_FLTOFFS) ?
6650 mstate.dtms_fltoffs : -1, DTRACE_FLAGS2FLT(*flags),
10879 * in a buffer. If mstate is non-NULL, sets the scratch base and size in the
10880 * mstate. Returns the new offset in the buffer, or a negative value if an
10885 dtrace_state_t *state, dtrace_mstate_t *mstate)
10917 if (mstate == NULL)
10920 mstate->dtms_scratch_base = (uintptr_t)tomax + soffs;
10921 mstate->dtms_scratch_size = buf->dtb_size - soffs;
10922 mstate->dtms_scratch_ptr = mstate->dtms_scratch_base;
11102 if (mstate == NULL)
11109 mstate->dtms_scratch_base = (uintptr_t)buf->dtb_xamot;
11110 mstate->dtms_scratch_size = buf->dtb_size;
11111 mstate->dtms_scratch_ptr = mstate->dtms_scratch_base;
13896 dtrace_mstate_t *mstate, dtrace_vstate_t *vstate, int where)
13938 ent->dtht_fltoffs = (mstate->dtms_present & DTRACE_MSTATE_FLTOFFS) ?
13939 mstate->dtms_fltoffs : -1;
13958 dtrace_helper(int which, dtrace_mstate_t *mstate,
13962 uint64_t sarg0 = mstate->dtms_arg[0];
13963 uint64_t sarg1 = mstate->dtms_arg[1];
13980 mstate->dtms_arg[0] = arg0;
13981 mstate->dtms_arg[1] = arg1;
13995 dtrace_helper_trace(helper, mstate, vstate, 0);
13997 if (!dtrace_dif_emulate(pred, mstate, vstate, state))
14007 mstate, vstate, i + 1);
14010 mstate, vstate, state);
14018 dtrace_helper_trace(helper, mstate, vstate,
14023 dtrace_helper_trace(helper, mstate, vstate,
14029 mstate->dtms_arg[0] = sarg0;
14030 mstate->dtms_arg[1] = sarg1;
14036 dtrace_helper_trace(helper, mstate, vstate,
14042 mstate->dtms_arg[0] = sarg0;
14043 mstate->dtms_arg[1] = sarg1;