Lines Matching defs:ecb

5257 dtrace_action_breakpoint(dtrace_ecb_t *ecb)
5259 dtrace_probe_t *probe = ecb->dte_probe;
5263 char *ecbmsg = " (ecb ";
5265 uintptr_t val = (uintptr_t)ecb;
5319 dtrace_action_panic(dtrace_ecb_t *ecb)
5321 dtrace_probe_t *probe = ecb->dte_probe;
5342 dtrace_panic("dtrace: panic action at probe %s:%s:%s:%s (ecb %p)",
5344 probe->dtpr_func, probe->dtpr_name, (void *)ecb);
5553 dtrace_ecb_t *ecb;
5609 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
5610 dtrace_predicate_t *pred = ecb->dte_predicate;
5611 dtrace_state_t *state = ecb->dte_state;
5673 if (ecb->dte_cond) {
5682 if ((ecb->dte_cond & DTRACE_COND_USERMODE) &&
5699 if (ecb->dte_cond & DTRACE_COND_OWNER) {
5702 ecb->dte_state->dts_cred.dcr_cred;
5719 if (ecb->dte_cond & DTRACE_COND_ZONEOWNER) {
5722 ecb->dte_state->dts_cred.dcr_cred;
5757 if ((offs = dtrace_buffer_reserve(buf, ecb->dte_needed,
5758 ecb->dte_alignment, state, &mstate)) < 0)
5764 if (ecb->dte_size != 0)
5765 DTRACE_STORE(uint32_t, tomax, offs, ecb->dte_epid);
5767 mstate.dtms_epid = ecb->dte_epid;
5796 for (act = ecb->dte_action; !(*flags & CPU_DTRACE_ERROR) &&
5839 dtrace_action_breakpoint(ecb);
5844 dtrace_action_panic(ecb);
5924 ecb->dte_needed, ecb->dte_alignment,
5935 if (ecb->dte_size != 0)
5937 ecb->dte_epid);
5956 if (ecb->dte_size)
5957 buf->dtb_offset = offs + ecb->dte_size;
6135 * act is ecb->dte_action, the fault was in the
6136 * predicate, if it's ecb->dte_action->dta_next it's
6139 for (err = ecb->dte_action, ndx = 0;
6143 dtrace_probe_error(state, ecb->dte_epid, ndx,
6152 buf->dtb_offset = offs + ecb->dte_size;
9098 dtrace_ecb_t *ecb;
9103 ecb = kmem_zalloc(sizeof (dtrace_ecb_t), KM_SLEEP);
9104 ecb->dte_predicate = NULL;
9105 ecb->dte_probe = probe;
9111 ecb->dte_size = ecb->dte_needed = sizeof (dtrace_epid_t);
9112 ecb->dte_alignment = sizeof (dtrace_epid_t);
9153 ecb->dte_state = state;
9157 state->dts_ecbs[(ecb->dte_epid = epid) - 1] = ecb;
9159 return (ecb);
9163 dtrace_ecb_enable(dtrace_ecb_t *ecb)
9165 dtrace_probe_t *probe = ecb->dte_probe;
9169 ASSERT(ecb->dte_next == NULL);
9184 probe->dtpr_ecb = probe->dtpr_ecb_last = ecb;
9186 if (ecb->dte_predicate != NULL)
9187 probe->dtpr_predcache = ecb->dte_predicate->dtp_cacheid;
9198 probe->dtpr_ecb_last->dte_next = ecb;
9199 probe->dtpr_ecb_last = ecb;
9208 dtrace_ecb_resize(dtrace_ecb_t *ecb)
9215 dtrace_state_t *state = ecb->dte_state;
9222 ecb->dte_size = ecb->dte_needed = sizeof (dtrace_epid_t);
9224 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
9255 if (offs + rec->dtrd_size > ecb->dte_needed) {
9256 ecb->dte_needed = offs + rec->dtrd_size;
9258 if (ecb->dte_needed > state->dts_needed)
9259 state->dts_needed = ecb->dte_needed;
9287 ecb->dte_size = offs + rec->dtrd_size;
9295 if ((act = ecb->dte_action) != NULL &&
9297 ecb->dte_size == sizeof (dtrace_epid_t)) {
9302 ecb->dte_alignment = maxalign;
9303 ecb->dte_size = 0;
9310 if (ecb->dte_needed == sizeof (dtrace_epid_t))
9311 ecb->dte_needed = 0;
9320 ecb->dte_alignment = maxalign;
9321 ecb->dte_size = (ecb->dte_size + (sizeof (dtrace_epid_t) - 1)) &
9323 ecb->dte_needed = (ecb->dte_needed + (sizeof (dtrace_epid_t) - 1)) &
9325 ASSERT(ecb->dte_size <= ecb->dte_needed);
9329 dtrace_ecb_aggregation_create(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
9337 dtrace_state_t *state = ecb->dte_state;
9340 agg->dtag_ecb = ecb;
9405 for (act = ecb->dte_action_last; act != NULL; act = act->dta_prev) {
9431 ASSERT(ecb->dte_action_last != NULL);
9432 act = ecb->dte_action_last;
9487 dtrace_ecb_aggregation_destroy(dtrace_ecb_t *ecb, dtrace_action_t *act)
9490 dtrace_state_t *state = ecb->dte_state;
9503 dtrace_ecb_action_add(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
9510 dtrace_state_t *state = ecb->dte_state;
9515 ASSERT(ecb->dte_action == NULL || ecb->dte_action->dta_refcnt == 1);
9524 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
9532 action = dtrace_ecb_aggregation_create(ecb, desc);
9663 if (ecb->dte_size > sizeof (dtrace_epid_t))
9673 dtrace_action_t *act = ecb->dte_action;
9695 dtrace_action_t *act = ecb->dte_action;
9729 if ((last = ecb->dte_action_last) != NULL) {
9730 ASSERT(ecb->dte_action != NULL);
9734 ASSERT(ecb->dte_action == NULL);
9735 ecb->dte_action = action;
9738 ecb->dte_action_last = action;
9744 dtrace_ecb_action_remove(dtrace_ecb_t *ecb)
9746 dtrace_action_t *act = ecb->dte_action, *next;
9747 dtrace_vstate_t *vstate = &ecb->dte_state->dts_vstate;
9757 ASSERT(next != NULL || act == ecb->dte_action_last);
9761 dtrace_format_remove(ecb->dte_state, format);
9767 dtrace_ecb_aggregation_destroy(ecb, act);
9774 ecb->dte_action = NULL;
9775 ecb->dte_action_last = NULL;
9776 ecb->dte_size = sizeof (dtrace_epid_t);
9780 dtrace_ecb_disable(dtrace_ecb_t *ecb)
9786 dtrace_probe_t *probe = ecb->dte_probe;
9798 if (pecb == ecb)
9806 probe->dtpr_ecb = ecb->dte_next;
9808 prev->dte_next = ecb->dte_next;
9811 if (ecb == probe->dtpr_ecb_last) {
9812 ASSERT(ecb->dte_next == NULL);
9830 ASSERT(ecb->dte_next == NULL);
9854 ecb->dte_next = NULL;
9859 dtrace_ecb_destroy(dtrace_ecb_t *ecb)
9861 dtrace_state_t *state = ecb->dte_state;
9864 dtrace_epid_t epid = ecb->dte_epid;
9867 ASSERT(ecb->dte_next == NULL);
9868 ASSERT(ecb->dte_probe == NULL || ecb->dte_probe->dtpr_ecb != ecb);
9870 if ((pred = ecb->dte_predicate) != NULL)
9873 dtrace_ecb_action_remove(ecb);
9875 ASSERT(state->dts_ecbs[epid - 1] == ecb);
9878 kmem_free(ecb, sizeof (dtrace_ecb_t));
9885 dtrace_ecb_t *ecb;
9894 ecb = dtrace_ecb_add(state, probe);
9895 ecb->dte_uarg = desc->dted_uarg;
9899 ecb->dte_predicate = pred;
9906 * predicate bits to prevent the ecb from activating at
9917 ecb->dte_cond |= DTRACE_COND_OWNER;
9921 ecb->dte_cond |= DTRACE_COND_ZONEOWNER;
9930 ecb->dte_cond |= DTRACE_COND_USERMODE;
9935 * If we have a cached ecb, we'll use its action list instead
9944 ecb->dte_action = act;
9945 ecb->dte_action_last = cached->dte_action_last;
9946 ecb->dte_needed = cached->dte_needed;
9947 ecb->dte_size = cached->dte_size;
9948 ecb->dte_alignment = cached->dte_alignment;
9951 return (ecb);
9955 if ((enab->dten_error = dtrace_ecb_action_add(ecb, act)) != 0) {
9956 dtrace_ecb_destroy(ecb);
9961 dtrace_ecb_resize(ecb);
9963 return (dtrace_ecb_create_cache = ecb);
9969 dtrace_ecb_t *ecb;
9984 if ((ecb = dtrace_ecb_create(state, probe, enab)) == NULL)
9987 if (dtrace_ecb_enable(ecb) < 0)
9996 dtrace_ecb_t *ecb;
10004 ASSERT((ecb = state->dts_ecbs[id - 1]) == NULL || ecb->dte_epid == id);
10510 dtrace_enabling_add(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb)
10523 enab->dten_desc[enab->dten_ndesc++] = ecb;
10543 enab->dten_desc[enab->dten_ndesc++] = ecb;
10547 dtrace_enabling_addlike(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb,
10560 if ((pred = ecb->dted_pred.dtpdd_predicate) != NULL)
10563 for (act = ecb->dted_action; act != NULL; act = act->dtad_next)
10566 new->dted_action = ecb->dted_action;
10567 new->dted_pred = ecb->dted_pred;
10569 new->dted_uarg = ecb->dted_uarg;
11547 dof_ecbdesc_t *ecb;
11561 ecb = (dof_ecbdesc_t *)((uintptr_t)dof + (uintptr_t)sec->dofs_offset);
11562 sec = dtrace_dof_sect(dof, DOF_SECT_PROBEDESC, ecb->dofe_probes);
11568 ep->dted_uarg = ecb->dofe_uarg;
11574 if (ecb->dofe_pred != DOF_SECIDX_NONE) {
11576 DOF_SECT_DIFOHDR, ecb->dofe_pred)) == NULL)
11585 if (ecb->dofe_actions != DOF_SECIDX_NONE) {
11587 DOF_SECT_ACTDESC, ecb->dofe_actions)) == NULL)
12405 dtrace_ecb_t *ecb;
12420 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
12421 if (ecb->dte_state != state)
12424 state->dts_reserve += ecb->dte_needed + ecb->dte_alignment;
12811 dtrace_ecb_t *ecb;
12858 if ((ecb = state->dts_ecbs[i]) == NULL)
12861 if (match && ecb->dte_probe != NULL) {
12862 dtrace_probe_t *probe = ecb->dte_probe;
12869 dtrace_ecb_disable(ecb);
12870 dtrace_ecb_destroy(ecb);
14689 dtrace_ecb_t *ecb;
14701 if ((ecb = dtrace_epid2ecb(state, epdesc.dtepd_epid)) == NULL) {
14706 if (ecb->dte_probe == NULL) {
14711 epdesc.dtepd_probeid = ecb->dte_probe->dtpr_id;
14712 epdesc.dtepd_uarg = ecb->dte_uarg;
14713 epdesc.dtepd_size = ecb->dte_size;
14717 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
14739 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {