Lines Matching defs:ecb

1383     dtrace_ecb_t *ecb)
1385 dtrace_probe_t *probe = ecb->dte_probe;
1390 ASSERT(ecb->dte_cond);
1408 if (ecb->dte_cond & DTRACE_COND_USERMODE) {
1428 if (ecb->dte_cond & DTRACE_COND_OWNER) {
1457 if (ecb->dte_cond & DTRACE_COND_ZONEOWNER) {
6350 dtrace_action_breakpoint(dtrace_ecb_t *ecb)
6352 dtrace_probe_t *probe = ecb->dte_probe;
6356 char *ecbmsg = " (ecb ";
6358 uintptr_t val = (uintptr_t)ecb;
6412 dtrace_action_panic(dtrace_ecb_t *ecb)
6414 dtrace_probe_t *probe = ecb->dte_probe;
6435 dtrace_panic("dtrace: panic action at probe %s:%s:%s:%s (ecb %p)",
6437 probe->dtpr_func, probe->dtpr_name, (void *)ecb);
6703 dtrace_ecb_t *ecb;
6762 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
6763 dtrace_predicate_t *pred = ecb->dte_predicate;
6764 dtrace_state_t *state = ecb->dte_state;
6830 if (ecb->dte_cond && !dtrace_priv_probe(state, &mstate, ecb))
6857 if ((offs = dtrace_buffer_reserve(buf, ecb->dte_needed,
6858 ecb->dte_alignment, state, &mstate)) < 0)
6864 if (ecb->dte_size != 0) {
6870 ASSERT3U(ecb->dte_size, >=, sizeof (dtrace_rechdr_t));
6871 dtrh.dtrh_epid = ecb->dte_epid;
6877 mstate.dtms_epid = ecb->dte_epid;
6904 for (act = ecb->dte_action; !(*flags & CPU_DTRACE_ERROR) &&
6948 dtrace_action_breakpoint(ecb);
6953 dtrace_action_panic(ecb);
7052 ecb->dte_needed, ecb->dte_alignment,
7063 if (ecb->dte_size == 0)
7066 ASSERT3U(ecb->dte_size, >=,
7069 dtrh->dtrh_epid = ecb->dte_epid;
7098 if (ecb->dte_size)
7099 buf->dtb_offset = offs + ecb->dte_size;
7264 * act is ecb->dte_action, the fault was in the
7265 * predicate, if it's ecb->dte_action->dta_next it's
7268 for (err = ecb->dte_action, ndx = 0;
7272 dtrace_probe_error(state, ecb->dte_epid, ndx,
7281 buf->dtb_offset = offs + ecb->dte_size;
10321 dtrace_ecb_t *ecb;
10326 ecb = kmem_zalloc(sizeof (dtrace_ecb_t), KM_SLEEP);
10327 ecb->dte_predicate = NULL;
10328 ecb->dte_probe = probe;
10334 ecb->dte_size = ecb->dte_needed = sizeof (dtrace_rechdr_t);
10335 ecb->dte_alignment = sizeof (dtrace_epid_t);
10376 ecb->dte_state = state;
10380 state->dts_ecbs[(ecb->dte_epid = epid) - 1] = ecb;
10382 return (ecb);
10386 dtrace_ecb_enable(dtrace_ecb_t *ecb)
10388 dtrace_probe_t *probe = ecb->dte_probe;
10392 ASSERT(ecb->dte_next == NULL);
10407 probe->dtpr_ecb = probe->dtpr_ecb_last = ecb;
10409 if (ecb->dte_predicate != NULL)
10410 probe->dtpr_predcache = ecb->dte_predicate->dtp_cacheid;
10421 probe->dtpr_ecb_last->dte_next = ecb;
10422 probe->dtpr_ecb_last = ecb;
10431 dtrace_ecb_resize(dtrace_ecb_t *ecb)
10441 ecb->dte_size = sizeof (dtrace_rechdr_t);
10442 ecb->dte_alignment = sizeof (dtrace_epid_t);
10444 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
10448 ecb->dte_alignment = MAX(ecb->dte_alignment,
10465 ecb->dte_needed = MAX(ecb->dte_needed, curneeded);
10479 curneeded = P2PHASEUP(ecb->dte_size,
10494 ecb->dte_size = P2ROUNDUP(ecb->dte_size,
10496 rec->dtrd_offset = ecb->dte_size;
10497 ecb->dte_size += rec->dtrd_size;
10498 ecb->dte_needed = MAX(ecb->dte_needed, ecb->dte_size);
10502 if ((act = ecb->dte_action) != NULL &&
10504 ecb->dte_size == sizeof (dtrace_rechdr_t)) {
10509 ecb->dte_size = 0;
10512 ecb->dte_size = P2ROUNDUP(ecb->dte_size, sizeof (dtrace_epid_t));
10513 ecb->dte_needed = P2ROUNDUP(ecb->dte_needed, (sizeof (dtrace_epid_t)));
10514 ecb->dte_state->dts_needed = MAX(ecb->dte_state->dts_needed,
10515 ecb->dte_needed);
10519 dtrace_ecb_aggregation_create(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
10527 dtrace_state_t *state = ecb->dte_state;
10530 agg->dtag_ecb = ecb;
10624 for (act = ecb->dte_action_last; act != NULL; act = act->dta_prev) {
10650 ASSERT(ecb->dte_action_last != NULL);
10651 act = ecb->dte_action_last;
10706 dtrace_ecb_aggregation_destroy(dtrace_ecb_t *ecb, dtrace_action_t *act)
10709 dtrace_state_t *state = ecb->dte_state;
10722 dtrace_ecb_action_add(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
10729 dtrace_state_t *state = ecb->dte_state;
10734 ASSERT(ecb->dte_action == NULL || ecb->dte_action->dta_refcnt == 1);
10743 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
10751 action = dtrace_ecb_aggregation_create(ecb, desc);
10885 if (ecb->dte_size > sizeof (dtrace_rechdr_t))
10895 dtrace_action_t *act = ecb->dte_action;
10917 dtrace_action_t *act = ecb->dte_action;
10951 if ((last = ecb->dte_action_last) != NULL) {
10952 ASSERT(ecb->dte_action != NULL);
10956 ASSERT(ecb->dte_action == NULL);
10957 ecb->dte_action = action;
10960 ecb->dte_action_last = action;
10966 dtrace_ecb_action_remove(dtrace_ecb_t *ecb)
10968 dtrace_action_t *act = ecb->dte_action, *next;
10969 dtrace_vstate_t *vstate = &ecb->dte_state->dts_vstate;
10979 ASSERT(next != NULL || act == ecb->dte_action_last);
10983 dtrace_format_remove(ecb->dte_state, format);
10989 dtrace_ecb_aggregation_destroy(ecb, act);
10996 ecb->dte_action = NULL;
10997 ecb->dte_action_last = NULL;
10998 ecb->dte_size = 0;
11002 dtrace_ecb_disable(dtrace_ecb_t *ecb)
11008 dtrace_probe_t *probe = ecb->dte_probe;
11020 if (pecb == ecb)
11028 probe->dtpr_ecb = ecb->dte_next;
11030 prev->dte_next = ecb->dte_next;
11033 if (ecb == probe->dtpr_ecb_last) {
11034 ASSERT(ecb->dte_next == NULL);
11052 ASSERT(ecb->dte_next == NULL);
11076 ecb->dte_next = NULL;
11081 dtrace_ecb_destroy(dtrace_ecb_t *ecb)
11083 dtrace_state_t *state = ecb->dte_state;
11086 dtrace_epid_t epid = ecb->dte_epid;
11089 ASSERT(ecb->dte_next == NULL);
11090 ASSERT(ecb->dte_probe == NULL || ecb->dte_probe->dtpr_ecb != ecb);
11092 if ((pred = ecb->dte_predicate) != NULL)
11095 dtrace_ecb_action_remove(ecb);
11097 ASSERT(state->dts_ecbs[epid - 1] == ecb);
11100 kmem_free(ecb, sizeof (dtrace_ecb_t));
11107 dtrace_ecb_t *ecb;
11116 ecb = dtrace_ecb_add(state, probe);
11117 ecb->dte_uarg = desc->dted_uarg;
11121 ecb->dte_predicate = pred;
11128 * predicate bits to prevent the ecb from activating at
11139 ecb->dte_cond |= DTRACE_COND_OWNER;
11143 ecb->dte_cond |= DTRACE_COND_ZONEOWNER;
11152 ecb->dte_cond |= DTRACE_COND_USERMODE;
11157 * If we have a cached ecb, we'll use its action list instead
11166 ecb->dte_action = act;
11167 ecb->dte_action_last = cached->dte_action_last;
11168 ecb->dte_needed = cached->dte_needed;
11169 ecb->dte_size = cached->dte_size;
11170 ecb->dte_alignment = cached->dte_alignment;
11173 return (ecb);
11177 if ((enab->dten_error = dtrace_ecb_action_add(ecb, act)) != 0) {
11178 dtrace_ecb_destroy(ecb);
11183 dtrace_ecb_resize(ecb);
11185 return (dtrace_ecb_create_cache = ecb);
11191 dtrace_ecb_t *ecb;
11206 if ((ecb = dtrace_ecb_create(state, probe, enab)) == NULL)
11209 if (dtrace_ecb_enable(ecb) < 0)
11218 dtrace_ecb_t *ecb;
11226 ASSERT((ecb = state->dts_ecbs[id - 1]) == NULL || ecb->dte_epid == id);
11776 dtrace_enabling_add(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb)
11789 enab->dten_desc[enab->dten_ndesc++] = ecb;
11809 enab->dten_desc[enab->dten_ndesc++] = ecb;
11813 dtrace_enabling_addlike(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb,
11826 if ((pred = ecb->dted_pred.dtpdd_predicate) != NULL)
11829 for (act = ecb->dted_action; act != NULL; act = act->dtad_next)
11832 new->dted_action = ecb->dted_action;
11833 new->dted_pred = ecb->dted_pred;
11835 new->dted_uarg = ecb->dted_uarg;
12232 dtrace_ecb_t *ecb;
12279 while ((ecb = probe->dtpr_ecb) != NULL) {
12280 dtrace_state_t *state = ecb->dte_state;
12293 dtrace_ecb_disable(ecb);
12294 ASSERT(probe->dtpr_ecb != ecb);
12295 dtrace_ecb_destroy(ecb);
12899 dof_ecbdesc_t *ecb;
12913 ecb = (dof_ecbdesc_t *)((uintptr_t)dof + (uintptr_t)sec->dofs_offset);
12914 sec = dtrace_dof_sect(dof, DOF_SECT_PROBEDESC, ecb->dofe_probes);
12920 ep->dted_uarg = ecb->dofe_uarg;
12926 if (ecb->dofe_pred != DOF_SECIDX_NONE) {
12928 DOF_SECT_DIFOHDR, ecb->dofe_pred)) == NULL)
12937 if (ecb->dofe_actions != DOF_SECIDX_NONE) {
12939 DOF_SECT_ACTDESC, ecb->dofe_actions)) == NULL)
13767 dtrace_ecb_t *ecb;
13782 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
13783 if (ecb->dte_state != state)
13786 state->dts_reserve += ecb->dte_needed + ecb->dte_alignment;
14209 dtrace_ecb_t *ecb;
14256 if ((ecb = state->dts_ecbs[i]) == NULL)
14259 if (match && ecb->dte_probe != NULL) {
14260 dtrace_probe_t *probe = ecb->dte_probe;
14267 dtrace_ecb_disable(ecb);
14268 dtrace_ecb_destroy(ecb);
16132 dtrace_ecb_t *ecb;
16144 if ((ecb = dtrace_epid2ecb(state, epdesc.dtepd_epid)) == NULL) {
16149 if (ecb->dte_probe == NULL) {
16154 epdesc.dtepd_probeid = ecb->dte_probe->dtpr_id;
16155 epdesc.dtepd_uarg = ecb->dte_uarg;
16156 epdesc.dtepd_size = ecb->dte_size;
16160 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
16182 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {