Lines Matching defs:ecb

5513 dtrace_action_breakpoint(dtrace_ecb_t *ecb)
5515 dtrace_probe_t *probe = ecb->dte_probe;
5519 const char *ecbmsg = " (ecb ";
5521 uintptr_t val = (uintptr_t)ecb;
5575 dtrace_action_panic(dtrace_ecb_t *ecb)
5577 dtrace_probe_t *probe = ecb->dte_probe;
5598 panic("dtrace: panic action at probe %s:%s:%s:%s (ecb %p)",
5600 probe->dtpr_func, probe->dtpr_name, (void *)ecb);
5853 dtrace_ecb_t *ecb;
5952 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
5953 dtrace_predicate_t *pred = ecb->dte_predicate;
5954 dtrace_state_t *state = ecb->dte_state;
6017 if (ecb->dte_cond) {
6026 if ((ecb->dte_cond & DTRACE_COND_USERMODE) &&
6043 if (ecb->dte_cond & DTRACE_COND_OWNER) {
6046 ecb->dte_state->dts_cred.dcr_cred;
6072 if (ecb->dte_cond & DTRACE_COND_ZONEOWNER) {
6075 ecb->dte_state->dts_cred.dcr_cred;
6115 if ((offs = dtrace_buffer_reserve(buf, ecb->dte_needed,
6116 ecb->dte_alignment, state, &mstate)) < 0)
6122 if (ecb->dte_size != 0)
6123 DTRACE_STORE(uint32_t, tomax, offs, ecb->dte_epid);
6125 mstate.dtms_epid = ecb->dte_epid;
6155 for (act = ecb->dte_action; !(*flags & CPU_DTRACE_ERROR) &&
6198 dtrace_action_breakpoint(ecb);
6203 dtrace_action_panic(ecb);
6282 ecb->dte_needed, ecb->dte_alignment,
6293 if (ecb->dte_size != 0)
6295 ecb->dte_epid);
6319 if (ecb->dte_size)
6320 buf->dtb_offset = offs + ecb->dte_size;
6516 * act is ecb->dte_action, the fault was in the
6517 * predicate, if it's ecb->dte_action->dta_next it's
6520 for (err = ecb->dte_action, ndx = 0;
6524 dtrace_probe_error(state, ecb->dte_epid, ndx,
6533 buf->dtb_offset = offs + ecb->dte_size;
9551 dtrace_ecb_t *ecb;
9556 ecb = kmem_zalloc(sizeof (dtrace_ecb_t), KM_SLEEP);
9557 ecb->dte_predicate = NULL;
9558 ecb->dte_probe = probe;
9564 ecb->dte_size = ecb->dte_needed = sizeof (dtrace_epid_t);
9565 ecb->dte_alignment = sizeof (dtrace_epid_t);
9606 ecb->dte_state = state;
9610 state->dts_ecbs[(ecb->dte_epid = epid) - 1] = ecb;
9612 return (ecb);
9616 dtrace_ecb_enable(dtrace_ecb_t *ecb)
9618 dtrace_probe_t *probe = ecb->dte_probe;
9622 ASSERT(ecb->dte_next == NULL);
9638 probe->dtpr_ecb = probe->dtpr_ecb_last = ecb;
9640 if (ecb->dte_predicate != NULL)
9641 probe->dtpr_predcache = ecb->dte_predicate->dtp_cacheid;
9652 probe->dtpr_ecb_last->dte_next = ecb;
9653 probe->dtpr_ecb_last = ecb;
9662 dtrace_ecb_resize(dtrace_ecb_t *ecb)
9669 dtrace_state_t *state = ecb->dte_state;
9676 ecb->dte_size = ecb->dte_needed = sizeof (dtrace_epid_t);
9678 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
9709 if (offs + rec->dtrd_size > ecb->dte_needed) {
9710 ecb->dte_needed = offs + rec->dtrd_size;
9712 if (ecb->dte_needed > state->dts_needed)
9713 state->dts_needed = ecb->dte_needed;
9741 ecb->dte_size = offs + rec->dtrd_size;
9749 if ((act = ecb->dte_action) != NULL &&
9751 ecb->dte_size == sizeof (dtrace_epid_t)) {
9756 ecb->dte_alignment = maxalign;
9757 ecb->dte_size = 0;
9764 if (ecb->dte_needed == sizeof (dtrace_epid_t))
9765 ecb->dte_needed = 0;
9774 ecb->dte_alignment = maxalign;
9775 ecb->dte_size = (ecb->dte_size + (sizeof (dtrace_epid_t) - 1)) &
9777 ecb->dte_needed = (ecb->dte_needed + (sizeof (dtrace_epid_t) - 1)) &
9779 ASSERT(ecb->dte_size <= ecb->dte_needed);
9783 dtrace_ecb_aggregation_create(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
9791 dtrace_state_t *state = ecb->dte_state;
9794 agg->dtag_ecb = ecb;
9887 for (act = ecb->dte_action_last; act != NULL; act = act->dta_prev) {
9913 ASSERT(ecb->dte_action_last != NULL);
9914 act = ecb->dte_action_last;
9969 dtrace_ecb_aggregation_destroy(dtrace_ecb_t *ecb, dtrace_action_t *act)
9972 dtrace_state_t *state = ecb->dte_state;
9985 dtrace_ecb_action_add(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
9992 dtrace_state_t *state = ecb->dte_state;
9998 ASSERT(ecb->dte_action == NULL || ecb->dte_action->dta_refcnt == 1);
10007 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
10015 action = dtrace_ecb_aggregation_create(ecb, desc);
10150 if (ecb->dte_size > sizeof (dtrace_epid_t))
10160 dtrace_action_t *act = ecb->dte_action;
10182 dtrace_action_t *act = ecb->dte_action;
10216 if ((last = ecb->dte_action_last) != NULL) {
10217 ASSERT(ecb->dte_action != NULL);
10221 ASSERT(ecb->dte_action == NULL);
10222 ecb->dte_action = action;
10225 ecb->dte_action_last = action;
10231 dtrace_ecb_action_remove(dtrace_ecb_t *ecb)
10233 dtrace_action_t *act = ecb->dte_action, *next;
10234 dtrace_vstate_t *vstate = &ecb->dte_state->dts_vstate;
10244 ASSERT(next != NULL || act == ecb->dte_action_last);
10248 dtrace_format_remove(ecb->dte_state, format);
10254 dtrace_ecb_aggregation_destroy(ecb, act);
10261 ecb->dte_action = NULL;
10262 ecb->dte_action_last = NULL;
10263 ecb->dte_size = sizeof (dtrace_epid_t);
10267 dtrace_ecb_disable(dtrace_ecb_t *ecb)
10273 dtrace_probe_t *probe = ecb->dte_probe;
10285 if (pecb == ecb)
10293 probe->dtpr_ecb = ecb->dte_next;
10295 prev->dte_next = ecb->dte_next;
10298 if (ecb == probe->dtpr_ecb_last) {
10299 ASSERT(ecb->dte_next == NULL);
10318 ASSERT(ecb->dte_next == NULL);
10342 ecb->dte_next = NULL;
10347 dtrace_ecb_destroy(dtrace_ecb_t *ecb)
10349 dtrace_state_t *state = ecb->dte_state;
10352 dtrace_epid_t epid = ecb->dte_epid;
10355 ASSERT(ecb->dte_next == NULL);
10356 ASSERT(ecb->dte_probe == NULL || ecb->dte_probe->dtpr_ecb != ecb);
10358 if ((pred = ecb->dte_predicate) != NULL)
10361 dtrace_ecb_action_remove(ecb);
10363 ASSERT(state->dts_ecbs[epid - 1] == ecb);
10366 kmem_free(ecb, sizeof (dtrace_ecb_t));
10373 dtrace_ecb_t *ecb;
10382 ecb = dtrace_ecb_add(state, probe);
10383 ecb->dte_uarg = desc->dted_uarg;
10387 ecb->dte_predicate = pred;
10394 * predicate bits to prevent the ecb from activating at
10405 ecb->dte_cond |= DTRACE_COND_OWNER;
10409 ecb->dte_cond |= DTRACE_COND_ZONEOWNER;
10418 ecb->dte_cond |= DTRACE_COND_USERMODE;
10423 * If we have a cached ecb, we'll use its action list instead
10432 ecb->dte_action = act_if;
10433 ecb->dte_action_last = cached->dte_action_last;
10434 ecb->dte_needed = cached->dte_needed;
10435 ecb->dte_size = cached->dte_size;
10436 ecb->dte_alignment = cached->dte_alignment;
10439 return (ecb);
10443 if ((enab->dten_error = dtrace_ecb_action_add(ecb, act)) != 0) {
10444 dtrace_ecb_destroy(ecb);
10449 dtrace_ecb_resize(ecb);
10451 return (dtrace_ecb_create_cache = ecb);
10457 dtrace_ecb_t *ecb;
10472 if ((ecb = dtrace_ecb_create(state, probe, enab)) == NULL)
10475 if (dtrace_ecb_enable(ecb) < 0)
10484 dtrace_ecb_t *ecb;
10485 #pragma unused(ecb) /* __APPLE__ */
10493 ASSERT((ecb = state->dts_ecbs[id - 1]) == NULL || ecb->dte_epid == id);
11031 dtrace_enabling_add(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb)
11044 if (ecb == NULL) return;
11047 enab->dten_desc[enab->dten_ndesc++] = ecb;
11067 enab->dten_desc[enab->dten_ndesc++] = ecb;
11071 dtrace_enabling_addlike(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb,
11084 if ((pred = ecb->dted_pred.dtpdd_predicate) != NULL)
11087 for (act = ecb->dted_action; act != NULL; act = act->dtad_next)
11090 new->dted_action = ecb->dted_action;
11091 new->dted_pred = ecb->dted_pred;
11093 new->dted_uarg = ecb->dted_uarg;
12132 dof_ecbdesc_t *ecb;
12146 ecb = (dof_ecbdesc_t *)((uintptr_t)dof + (uintptr_t)sec->dofs_offset);
12147 sec = dtrace_dof_sect(dof, DOF_SECT_PROBEDESC, ecb->dofe_probes);
12153 ep->dted_uarg = ecb->dofe_uarg;
12159 if (ecb->dofe_pred != DOF_SECIDX_NONE) {
12161 DOF_SECT_DIFOHDR, ecb->dofe_pred)) == NULL)
12170 if (ecb->dofe_actions != DOF_SECIDX_NONE) {
12172 DOF_SECT_ACTDESC, ecb->dofe_actions)) == NULL)
12941 dtrace_ecb_t *ecb;
12956 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
12957 if (ecb->dte_state != state)
12960 state->dts_reserve += ecb->dte_needed + ecb->dte_alignment;
13352 dtrace_ecb_t *ecb;
13399 if ((ecb = state->dts_ecbs[i]) == NULL)
13402 if (match && ecb->dte_probe != NULL) {
13403 dtrace_probe_t *probe = ecb->dte_probe;
13410 dtrace_ecb_disable(ecb);
13411 dtrace_ecb_destroy(ecb);
16109 dtrace_ecb_t *ecb;
16121 if ((ecb = dtrace_epid2ecb(state, epdesc.dtepd_epid)) == NULL) {
16126 if (ecb->dte_probe == NULL) {
16131 epdesc.dtepd_probeid = ecb->dte_probe->dtpr_id;
16132 epdesc.dtepd_uarg = ecb->dte_uarg;
16133 epdesc.dtepd_size = ecb->dte_size;
16137 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
16159 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {