Lines Matching refs:ecb

6067 dtrace_action_breakpoint(dtrace_ecb_t *ecb)
6069 dtrace_probe_t *probe = ecb->dte_probe;
6074 char *ecbmsg = " (ecb ";
6077 const char *ecbmsg = " (ecb ";
6080 uintptr_t val = (uintptr_t)ecb;
6134 dtrace_action_panic(dtrace_ecb_t *ecb)
6136 dtrace_probe_t *probe = ecb->dte_probe;
6162 panic("dtrace: panic action at probe %s:%s:%s:%s (ecb %p)",
6164 probe->dtpr_func, probe->dtpr_name, (void *)ecb);
6438 dtrace_ecb_t *ecb;
6552 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
6553 dtrace_predicate_t *pred = ecb->dte_predicate;
6554 dtrace_state_t *state = ecb->dte_state;
6616 if (ecb->dte_cond) {
6625 if ((ecb->dte_cond & DTRACE_COND_USERMODE) &&
6642 if (ecb->dte_cond & DTRACE_COND_OWNER) {
6645 ecb->dte_state->dts_cred.dcr_cred;
6675 if (ecb->dte_cond & DTRACE_COND_ZONEOWNER) {
6678 ecb->dte_state->dts_cred.dcr_cred;
6718 if ((offs = dtrace_buffer_reserve(buf, ecb->dte_needed,
6719 ecb->dte_alignment, state, &mstate)) < 0)
6725 if (ecb->dte_size != 0)
6726 DTRACE_STORE(uint32_t, tomax, offs, ecb->dte_epid);
6728 mstate.dtms_epid = ecb->dte_epid;
6761 for (act = ecb->dte_action; !(*flags & CPU_DTRACE_ERROR) &&
6804 dtrace_action_breakpoint(ecb);
6809 dtrace_action_panic(ecb);
6896 ecb->dte_needed, ecb->dte_alignment,
6907 if (ecb->dte_size != 0)
6909 ecb->dte_epid);
6935 if (ecb->dte_size)
6936 buf->dtb_offset = offs + ecb->dte_size;
7139 * act is ecb->dte_action, the fault was in the
7140 * predicate, if it's ecb->dte_action->dta_next it's
7143 for (err = ecb->dte_action, ndx = 0;
7147 dtrace_probe_error(state, ecb->dte_epid, ndx,
7156 buf->dtb_offset = offs + ecb->dte_size;
10339 dtrace_ecb_t *ecb;
10344 ecb = kmem_zalloc(sizeof (dtrace_ecb_t), KM_SLEEP);
10345 ecb->dte_predicate = NULL;
10346 ecb->dte_probe = probe;
10352 ecb->dte_size = ecb->dte_needed = sizeof (dtrace_epid_t);
10353 ecb->dte_alignment = sizeof (dtrace_epid_t);
10402 ecb->dte_state = state;
10406 state->dts_ecbs[(ecb->dte_epid = epid) - 1] = ecb;
10408 return (ecb);
10412 dtrace_ecb_enable(dtrace_ecb_t *ecb)
10414 dtrace_probe_t *probe = ecb->dte_probe;
10418 ASSERT(ecb->dte_next == NULL);
10433 probe->dtpr_ecb = probe->dtpr_ecb_last = ecb;
10435 if (ecb->dte_predicate != NULL)
10436 probe->dtpr_predcache = ecb->dte_predicate->dtp_cacheid;
10447 probe->dtpr_ecb_last->dte_next = ecb;
10448 probe->dtpr_ecb_last = ecb;
10457 dtrace_ecb_resize(dtrace_ecb_t *ecb)
10464 dtrace_state_t *state = ecb->dte_state;
10471 ecb->dte_size = ecb->dte_needed = sizeof (dtrace_epid_t);
10473 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
10504 if (offs + rec->dtrd_size > ecb->dte_needed) {
10505 ecb->dte_needed = offs + rec->dtrd_size;
10507 if (ecb->dte_needed > state->dts_needed)
10508 state->dts_needed = ecb->dte_needed;
10536 ecb->dte_size = offs + rec->dtrd_size;
10544 if ((act = ecb->dte_action) != NULL &&
10546 ecb->dte_size == sizeof (dtrace_epid_t)) {
10551 ecb->dte_alignment = maxalign;
10552 ecb->dte_size = 0;
10559 if (ecb->dte_needed == sizeof (dtrace_epid_t))
10560 ecb->dte_needed = 0;
10569 ecb->dte_alignment = maxalign;
10570 ecb->dte_size = (ecb->dte_size + (sizeof (dtrace_epid_t) - 1)) &
10572 ecb->dte_needed = (ecb->dte_needed + (sizeof (dtrace_epid_t) - 1)) &
10574 ASSERT(ecb->dte_size <= ecb->dte_needed);
10578 dtrace_ecb_aggregation_create(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
10586 dtrace_state_t *state = ecb->dte_state;
10589 agg->dtag_ecb = ecb;
10654 for (act = ecb->dte_action_last; act != NULL; act = act->dta_prev) {
10680 ASSERT(ecb->dte_action_last != NULL);
10681 act = ecb->dte_action_last;
10744 dtrace_ecb_aggregation_destroy(dtrace_ecb_t *ecb, dtrace_action_t *act)
10747 dtrace_state_t *state = ecb->dte_state;
10760 dtrace_ecb_action_add(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
10767 dtrace_state_t *state = ecb->dte_state;
10777 ASSERT(ecb->dte_action == NULL || ecb->dte_action->dta_refcnt == 1);
10786 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
10794 action = dtrace_ecb_aggregation_create(ecb, desc);
10931 if (ecb->dte_size > sizeof (dtrace_epid_t))
10941 dtrace_action_t *act = ecb->dte_action;
10963 dtrace_action_t *act = ecb->dte_action;
10997 if ((last = ecb->dte_action_last) != NULL) {
10998 ASSERT(ecb->dte_action != NULL);
11002 ASSERT(ecb->dte_action == NULL);
11003 ecb->dte_action = action;
11006 ecb->dte_action_last = action;
11012 dtrace_ecb_action_remove(dtrace_ecb_t *ecb)
11014 dtrace_action_t *act = ecb->dte_action, *next;
11015 dtrace_vstate_t *vstate = &ecb->dte_state->dts_vstate;
11025 ASSERT(next != NULL || act == ecb->dte_action_last);
11029 dtrace_format_remove(ecb->dte_state, format);
11035 dtrace_ecb_aggregation_destroy(ecb, act);
11042 ecb->dte_action = NULL;
11043 ecb->dte_action_last = NULL;
11044 ecb->dte_size = sizeof (dtrace_epid_t);
11048 dtrace_ecb_disable(dtrace_ecb_t *ecb)
11054 dtrace_probe_t *probe = ecb->dte_probe;
11066 if (pecb == ecb)
11074 probe->dtpr_ecb = ecb->dte_next;
11076 prev->dte_next = ecb->dte_next;
11079 if (ecb == probe->dtpr_ecb_last) {
11080 ASSERT(ecb->dte_next == NULL);
11098 ASSERT(ecb->dte_next == NULL);
11122 ecb->dte_next = NULL;
11127 dtrace_ecb_destroy(dtrace_ecb_t *ecb)
11129 dtrace_state_t *state = ecb->dte_state;
11132 dtrace_epid_t epid = ecb->dte_epid;
11135 ASSERT(ecb->dte_next == NULL);
11136 ASSERT(ecb->dte_probe == NULL || ecb->dte_probe->dtpr_ecb != ecb);
11138 if ((pred = ecb->dte_predicate) != NULL)
11141 dtrace_ecb_action_remove(ecb);
11143 ASSERT(state->dts_ecbs[epid - 1] == ecb);
11146 kmem_free(ecb, sizeof (dtrace_ecb_t));
11153 dtrace_ecb_t *ecb;
11162 ecb = dtrace_ecb_add(state, probe);
11163 ecb->dte_uarg = desc->dted_uarg;
11167 ecb->dte_predicate = pred;
11174 * predicate bits to prevent the ecb from activating at
11185 ecb->dte_cond |= DTRACE_COND_OWNER;
11189 ecb->dte_cond |= DTRACE_COND_ZONEOWNER;
11198 ecb->dte_cond |= DTRACE_COND_USERMODE;
11203 * If we have a cached ecb, we'll use its action list instead
11212 ecb->dte_action = act_if;
11213 ecb->dte_action_last = cached->dte_action_last;
11214 ecb->dte_needed = cached->dte_needed;
11215 ecb->dte_size = cached->dte_size;
11216 ecb->dte_alignment = cached->dte_alignment;
11219 return (ecb);
11223 if ((enab->dten_error = dtrace_ecb_action_add(ecb, act)) != 0) {
11224 dtrace_ecb_destroy(ecb);
11229 dtrace_ecb_resize(ecb);
11231 return (dtrace_ecb_create_cache = ecb);
11237 dtrace_ecb_t *ecb;
11252 if ((ecb = dtrace_ecb_create(state, probe, enab)) == NULL)
11255 if (dtrace_ecb_enable(ecb) < 0)
11264 dtrace_ecb_t *ecb;
11265 #pragma unused(ecb) /* __APPLE__ */
11277 ASSERT((ecb = state->dts_ecbs[id - 1]) == NULL || ecb->dte_epid == id);
11821 dtrace_enabling_add(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb)
11834 if (ecb == NULL) return; /* Note: protection against gcc 4.0 botch on x86 */
11838 enab->dten_desc[enab->dten_ndesc++] = ecb;
11858 enab->dten_desc[enab->dten_ndesc++] = ecb;
11862 dtrace_enabling_addlike(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb,
11875 if ((pred = ecb->dted_pred.dtpdd_predicate) != NULL)
11878 for (act = ecb->dted_action; act != NULL; act = act->dtad_next)
11881 new->dted_action = ecb->dted_action;
11882 new->dted_pred = ecb->dted_pred;
11884 new->dted_uarg = ecb->dted_uarg;
13015 dof_ecbdesc_t *ecb;
13029 ecb = (dof_ecbdesc_t *)((uintptr_t)dof + (uintptr_t)sec->dofs_offset);
13030 sec = dtrace_dof_sect(dof, DOF_SECT_PROBEDESC, ecb->dofe_probes);
13036 ep->dted_uarg = ecb->dofe_uarg;
13042 if (ecb->dofe_pred != DOF_SECIDX_NONE) {
13044 DOF_SECT_DIFOHDR, ecb->dofe_pred)) == NULL)
13053 if (ecb->dofe_actions != DOF_SECIDX_NONE) {
13055 DOF_SECT_ACTDESC, ecb->dofe_actions)) == NULL)
13977 dtrace_ecb_t *ecb;
13992 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
13993 if (ecb->dte_state != state)
13996 state->dts_reserve += ecb->dte_needed + ecb->dte_alignment;
14390 dtrace_ecb_t *ecb;
14437 if ((ecb = state->dts_ecbs[i]) == NULL)
14440 if (match && ecb->dte_probe != NULL) {
14441 dtrace_probe_t *probe = ecb->dte_probe;
14448 dtrace_ecb_disable(ecb);
14449 dtrace_ecb_destroy(ecb);
17372 dtrace_ecb_t *ecb;
17384 if ((ecb = dtrace_epid2ecb(state, epdesc.dtepd_epid)) == NULL) {
17389 if (ecb->dte_probe == NULL) {
17394 epdesc.dtepd_probeid = ecb->dte_probe->dtpr_id;
17395 epdesc.dtepd_uarg = ecb->dte_uarg;
17396 epdesc.dtepd_size = ecb->dte_size;
17400 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
17422 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
18278 dtrace_ecb_t *ecb;
18290 if ((ecb = dtrace_epid2ecb(state, epdesc.dtepd_epid)) == NULL) {
18295 if (ecb->dte_probe == NULL) {
18300 epdesc.dtepd_probeid = ecb->dte_probe->dtpr_id;
18301 epdesc.dtepd_uarg = ecb->dte_uarg;
18302 epdesc.dtepd_size = ecb->dte_size;
18306 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
18328 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {