Lines Matching defs:ecb

1501     dtrace_ecb_t *ecb)
1503 dtrace_probe_t *probe = ecb->dte_probe;
1508 ASSERT(ecb->dte_cond);
1526 if (ecb->dte_cond & DTRACE_COND_USERMODE) {
1546 if (ecb->dte_cond & DTRACE_COND_OWNER) {
1575 if (ecb->dte_cond & DTRACE_COND_ZONEOWNER) {
6496 dtrace_action_breakpoint(dtrace_ecb_t *ecb)
6498 dtrace_probe_t *probe = ecb->dte_probe;
6502 char *ecbmsg = " (ecb ";
6504 uintptr_t val = (uintptr_t)ecb;
6558 dtrace_action_panic(dtrace_ecb_t *ecb)
6560 dtrace_probe_t *probe = ecb->dte_probe;
6581 dtrace_panic("dtrace: panic action at probe %s:%s:%s:%s (ecb %p)",
6583 probe->dtpr_func, probe->dtpr_name, (void *)ecb);
6856 dtrace_ecb_t *ecb;
6915 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
6916 dtrace_predicate_t *pred = ecb->dte_predicate;
6917 dtrace_state_t *state = ecb->dte_state;
6983 if (ecb->dte_cond && !dtrace_priv_probe(state, &mstate, ecb))
7010 if ((offs = dtrace_buffer_reserve(buf, ecb->dte_needed,
7011 ecb->dte_alignment, state, &mstate)) < 0)
7017 if (ecb->dte_size != 0) {
7023 ASSERT3U(ecb->dte_size, >=, sizeof (dtrace_rechdr_t));
7024 dtrh.dtrh_epid = ecb->dte_epid;
7030 mstate.dtms_epid = ecb->dte_epid;
7057 for (act = ecb->dte_action; !(*flags & CPU_DTRACE_ERROR) &&
7101 dtrace_action_breakpoint(ecb);
7106 dtrace_action_panic(ecb);
7205 ecb->dte_needed, ecb->dte_alignment,
7216 if (ecb->dte_size == 0)
7219 ASSERT3U(ecb->dte_size, >=,
7222 dtrh->dtrh_epid = ecb->dte_epid;
7251 if (ecb->dte_size)
7252 buf->dtb_offset = offs + ecb->dte_size;
7417 * act is ecb->dte_action, the fault was in the
7418 * predicate, if it's ecb->dte_action->dta_next it's
7421 for (err = ecb->dte_action, ndx = 0;
7425 dtrace_probe_error(state, ecb->dte_epid, ndx,
7434 buf->dtb_offset = offs + ecb->dte_size;
10474 dtrace_ecb_t *ecb;
10479 ecb = kmem_zalloc(sizeof (dtrace_ecb_t), KM_SLEEP);
10480 ecb->dte_predicate = NULL;
10481 ecb->dte_probe = probe;
10487 ecb->dte_size = ecb->dte_needed = sizeof (dtrace_rechdr_t);
10488 ecb->dte_alignment = sizeof (dtrace_epid_t);
10529 ecb->dte_state = state;
10533 state->dts_ecbs[(ecb->dte_epid = epid) - 1] = ecb;
10535 return (ecb);
10539 dtrace_ecb_enable(dtrace_ecb_t *ecb)
10541 dtrace_probe_t *probe = ecb->dte_probe;
10545 ASSERT(ecb->dte_next == NULL);
10560 probe->dtpr_ecb = probe->dtpr_ecb_last = ecb;
10562 if (ecb->dte_predicate != NULL)
10563 probe->dtpr_predcache = ecb->dte_predicate->dtp_cacheid;
10574 probe->dtpr_ecb_last->dte_next = ecb;
10575 probe->dtpr_ecb_last = ecb;
10584 dtrace_ecb_resize(dtrace_ecb_t *ecb)
10594 ecb->dte_size = sizeof (dtrace_rechdr_t);
10595 ecb->dte_alignment = sizeof (dtrace_epid_t);
10597 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
10601 ecb->dte_alignment = MAX(ecb->dte_alignment,
10620 ecb->dte_needed = MAX(ecb->dte_needed, curneeded);
10634 curneeded = P2PHASEUP(ecb->dte_size,
10651 ecb->dte_size = P2ROUNDUP(ecb->dte_size,
10653 rec->dtrd_offset = ecb->dte_size;
10654 if (ecb->dte_size + rec->dtrd_size < ecb->dte_size)
10656 ecb->dte_size += rec->dtrd_size;
10657 ecb->dte_needed = MAX(ecb->dte_needed, ecb->dte_size);
10661 if ((act = ecb->dte_action) != NULL &&
10663 ecb->dte_size == sizeof (dtrace_rechdr_t)) {
10668 ecb->dte_size = 0;
10671 ecb->dte_size = P2ROUNDUP(ecb->dte_size, sizeof (dtrace_epid_t));
10672 ecb->dte_needed = P2ROUNDUP(ecb->dte_needed, (sizeof (dtrace_epid_t)));
10673 ecb->dte_state->dts_needed = MAX(ecb->dte_state->dts_needed,
10674 ecb->dte_needed);
10679 dtrace_ecb_aggregation_create(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
10687 dtrace_state_t *state = ecb->dte_state;
10690 agg->dtag_ecb = ecb;
10784 for (act = ecb->dte_action_last; act != NULL; act = act->dta_prev) {
10810 ASSERT(ecb->dte_action_last != NULL);
10811 act = ecb->dte_action_last;
10866 dtrace_ecb_aggregation_destroy(dtrace_ecb_t *ecb, dtrace_action_t *act)
10869 dtrace_state_t *state = ecb->dte_state;
10882 dtrace_ecb_action_add(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
10889 dtrace_state_t *state = ecb->dte_state;
10894 ASSERT(ecb->dte_action == NULL || ecb->dte_action->dta_refcnt == 1);
10903 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
10911 action = dtrace_ecb_aggregation_create(ecb, desc);
11045 if (ecb->dte_size > sizeof (dtrace_rechdr_t))
11055 dtrace_action_t *act = ecb->dte_action;
11077 dtrace_action_t *act = ecb->dte_action;
11111 if ((last = ecb->dte_action_last) != NULL) {
11112 ASSERT(ecb->dte_action != NULL);
11116 ASSERT(ecb->dte_action == NULL);
11117 ecb->dte_action = action;
11120 ecb->dte_action_last = action;
11126 dtrace_ecb_action_remove(dtrace_ecb_t *ecb)
11128 dtrace_action_t *act = ecb->dte_action, *next;
11129 dtrace_vstate_t *vstate = &ecb->dte_state->dts_vstate;
11139 ASSERT(next != NULL || act == ecb->dte_action_last);
11143 dtrace_format_remove(ecb->dte_state, format);
11149 dtrace_ecb_aggregation_destroy(ecb, act);
11156 ecb->dte_action = NULL;
11157 ecb->dte_action_last = NULL;
11158 ecb->dte_size = 0;
11162 dtrace_ecb_disable(dtrace_ecb_t *ecb)
11168 dtrace_probe_t *probe = ecb->dte_probe;
11180 if (pecb == ecb)
11188 probe->dtpr_ecb = ecb->dte_next;
11190 prev->dte_next = ecb->dte_next;
11193 if (ecb == probe->dtpr_ecb_last) {
11194 ASSERT(ecb->dte_next == NULL);
11212 ASSERT(ecb->dte_next == NULL);
11236 ecb->dte_next = NULL;
11241 dtrace_ecb_destroy(dtrace_ecb_t *ecb)
11243 dtrace_state_t *state = ecb->dte_state;
11246 dtrace_epid_t epid = ecb->dte_epid;
11249 ASSERT(ecb->dte_next == NULL);
11250 ASSERT(ecb->dte_probe == NULL || ecb->dte_probe->dtpr_ecb != ecb);
11252 if ((pred = ecb->dte_predicate) != NULL)
11255 dtrace_ecb_action_remove(ecb);
11257 ASSERT(state->dts_ecbs[epid - 1] == ecb);
11260 kmem_free(ecb, sizeof (dtrace_ecb_t));
11267 dtrace_ecb_t *ecb;
11276 ecb = dtrace_ecb_add(state, probe);
11277 ecb->dte_uarg = desc->dted_uarg;
11281 ecb->dte_predicate = pred;
11288 * predicate bits to prevent the ecb from activating at
11299 ecb->dte_cond |= DTRACE_COND_OWNER;
11303 ecb->dte_cond |= DTRACE_COND_ZONEOWNER;
11312 ecb->dte_cond |= DTRACE_COND_USERMODE;
11317 * If we have a cached ecb, we'll use its action list instead
11326 ecb->dte_action = act;
11327 ecb->dte_action_last = cached->dte_action_last;
11328 ecb->dte_needed = cached->dte_needed;
11329 ecb->dte_size = cached->dte_size;
11330 ecb->dte_alignment = cached->dte_alignment;
11333 return (ecb);
11337 if ((enab->dten_error = dtrace_ecb_action_add(ecb, act)) != 0) {
11338 dtrace_ecb_destroy(ecb);
11343 if ((enab->dten_error = dtrace_ecb_resize(ecb)) != 0) {
11344 dtrace_ecb_destroy(ecb);
11348 return (dtrace_ecb_create_cache = ecb);
11354 dtrace_ecb_t *ecb;
11369 if ((ecb = dtrace_ecb_create(state, probe, enab)) == NULL)
11372 if (dtrace_ecb_enable(ecb) < 0)
11381 dtrace_ecb_t *ecb;
11389 ASSERT((ecb = state->dts_ecbs[id - 1]) == NULL || ecb->dte_epid == id);
11939 dtrace_enabling_add(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb)
11952 enab->dten_desc[enab->dten_ndesc++] = ecb;
11972 enab->dten_desc[enab->dten_ndesc++] = ecb;
11976 dtrace_enabling_addlike(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb,
11989 if ((pred = ecb->dted_pred.dtpdd_predicate) != NULL)
11992 for (act = ecb->dted_action; act != NULL; act = act->dtad_next)
11995 new->dted_action = ecb->dted_action;
11996 new->dted_pred = ecb->dted_pred;
11998 new->dted_uarg = ecb->dted_uarg;
12395 dtrace_ecb_t *ecb;
12442 while ((ecb = probe->dtpr_ecb) != NULL) {
12443 dtrace_state_t *state = ecb->dte_state;
12456 dtrace_ecb_disable(ecb);
12457 ASSERT(probe->dtpr_ecb != ecb);
12458 dtrace_ecb_destroy(ecb);
13062 dof_ecbdesc_t *ecb;
13076 ecb = (dof_ecbdesc_t *)((uintptr_t)dof + (uintptr_t)sec->dofs_offset);
13077 sec = dtrace_dof_sect(dof, DOF_SECT_PROBEDESC, ecb->dofe_probes);
13083 ep->dted_uarg = ecb->dofe_uarg;
13089 if (ecb->dofe_pred != DOF_SECIDX_NONE) {
13091 DOF_SECT_DIFOHDR, ecb->dofe_pred)) == NULL)
13100 if (ecb->dofe_actions != DOF_SECIDX_NONE) {
13102 DOF_SECT_ACTDESC, ecb->dofe_actions)) == NULL)
13930 dtrace_ecb_t *ecb;
13945 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
13946 if (ecb->dte_state != state)
13949 state->dts_reserve += ecb->dte_needed + ecb->dte_alignment;
14372 dtrace_ecb_t *ecb;
14419 if ((ecb = state->dts_ecbs[i]) == NULL)
14422 if (match && ecb->dte_probe != NULL) {
14423 dtrace_probe_t *probe = ecb->dte_probe;
14430 dtrace_ecb_disable(ecb);
14431 dtrace_ecb_destroy(ecb);
16305 dtrace_ecb_t *ecb;
16317 if ((ecb = dtrace_epid2ecb(state, epdesc.dtepd_epid)) == NULL) {
16322 if (ecb->dte_probe == NULL) {
16327 epdesc.dtepd_probeid = ecb->dte_probe->dtpr_id;
16328 epdesc.dtepd_uarg = ecb->dte_uarg;
16329 epdesc.dtepd_size = ecb->dte_size;
16333 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
16355 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {