Lines Matching defs:ecb
1632 dtrace_ecb_t *ecb)
1634 dtrace_probe_t *probe = ecb->dte_probe;
1639 ASSERT(ecb->dte_cond);
1660 if (ecb->dte_cond & DTRACE_COND_USERMODE) {
1681 if (ecb->dte_cond & DTRACE_COND_OWNER) {
1713 if (ecb->dte_cond & DTRACE_COND_ZONEOWNER) {
6906 dtrace_action_breakpoint(dtrace_ecb_t *ecb)
6908 dtrace_probe_t *probe = ecb->dte_probe;
6912 char *ecbmsg = " (ecb ";
6913 uintptr_t val = (uintptr_t)ecb;
6971 dtrace_action_panic(dtrace_ecb_t *ecb)
6973 dtrace_probe_t *probe = ecb->dte_probe;
6994 dtrace_panic("dtrace: panic action at probe %s:%s:%s:%s (ecb %p)",
6996 probe->dtpr_func, probe->dtpr_name, (void *)ecb);
7325 dtrace_ecb_t *ecb;
7391 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
7392 dtrace_predicate_t *pred = ecb->dte_predicate;
7393 dtrace_state_t *state = ecb->dte_state;
7454 if (ecb->dte_cond) {
7463 if ((ecb->dte_cond & DTRACE_COND_USERMODE) &&
7481 if (ecb->dte_cond & DTRACE_COND_OWNER) {
7484 ecb->dte_state->dts_cred.dcr_cred;
7501 if (ecb->dte_cond & DTRACE_COND_ZONEOWNER) {
7504 ecb->dte_state->dts_cred.dcr_cred;
7540 if ((offs = dtrace_buffer_reserve(buf, ecb->dte_needed,
7541 ecb->dte_alignment, state, &mstate)) < 0)
7547 if (ecb->dte_size != 0) {
7553 ASSERT3U(ecb->dte_size, >=, sizeof (dtrace_rechdr_t));
7554 dtrh.dtrh_epid = ecb->dte_epid;
7560 mstate.dtms_epid = ecb->dte_epid;
7589 for (act = ecb->dte_action; !(*flags & CPU_DTRACE_ERROR) &&
7632 dtrace_action_breakpoint(ecb);
7637 dtrace_action_panic(ecb);
7718 ecb->dte_needed, ecb->dte_alignment,
7729 if (ecb->dte_size == 0)
7732 ASSERT3U(ecb->dte_size, >=,
7735 dtrh->dtrh_epid = ecb->dte_epid;
7815 if (ecb->dte_size)
7816 buf->dtb_offset = offs + ecb->dte_size;
7987 * act is ecb->dte_action, the fault was in the
7988 * predicate, if it's ecb->dte_action->dta_next it's
7991 for (err = ecb->dte_action, ndx = 0;
7995 dtrace_probe_error(state, ecb->dte_epid, ndx,
8004 buf->dtb_offset = offs + ecb->dte_size;
11091 dtrace_ecb_t *ecb;
11096 ecb = kmem_zalloc(sizeof (dtrace_ecb_t), KM_SLEEP);
11097 ecb->dte_predicate = NULL;
11098 ecb->dte_probe = probe;
11104 ecb->dte_size = ecb->dte_needed = sizeof (dtrace_rechdr_t);
11105 ecb->dte_alignment = sizeof (dtrace_epid_t);
11146 ecb->dte_state = state;
11150 state->dts_ecbs[(ecb->dte_epid = epid) - 1] = ecb;
11152 return (ecb);
11156 dtrace_ecb_enable(dtrace_ecb_t *ecb)
11158 dtrace_probe_t *probe = ecb->dte_probe;
11162 ASSERT(ecb->dte_next == NULL);
11177 probe->dtpr_ecb = probe->dtpr_ecb_last = ecb;
11179 if (ecb->dte_predicate != NULL)
11180 probe->dtpr_predcache = ecb->dte_predicate->dtp_cacheid;
11191 probe->dtpr_ecb_last->dte_next = ecb;
11192 probe->dtpr_ecb_last = ecb;
11200 dtrace_ecb_resize(dtrace_ecb_t *ecb)
11210 ecb->dte_size = sizeof (dtrace_rechdr_t);
11211 ecb->dte_alignment = sizeof (dtrace_epid_t);
11213 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
11217 ecb->dte_alignment = MAX(ecb->dte_alignment,
11236 ecb->dte_needed = MAX(ecb->dte_needed, curneeded);
11250 curneeded = P2PHASEUP(ecb->dte_size,
11267 ecb->dte_size = P2ROUNDUP(ecb->dte_size,
11269 rec->dtrd_offset = ecb->dte_size;
11270 if (ecb->dte_size + rec->dtrd_size < ecb->dte_size)
11272 ecb->dte_size += rec->dtrd_size;
11273 ecb->dte_needed = MAX(ecb->dte_needed, ecb->dte_size);
11277 if ((act = ecb->dte_action) != NULL &&
11279 ecb->dte_size == sizeof (dtrace_rechdr_t)) {
11284 ecb->dte_size = 0;
11287 ecb->dte_size = P2ROUNDUP(ecb->dte_size, sizeof (dtrace_epid_t));
11288 ecb->dte_needed = P2ROUNDUP(ecb->dte_needed, (sizeof (dtrace_epid_t)));
11289 ecb->dte_state->dts_needed = MAX(ecb->dte_state->dts_needed,
11290 ecb->dte_needed);
11295 dtrace_ecb_aggregation_create(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
11303 dtrace_state_t *state = ecb->dte_state;
11306 agg->dtag_ecb = ecb;
11400 for (act = ecb->dte_action_last; act != NULL; act = act->dta_prev) {
11426 ASSERT(ecb->dte_action_last != NULL);
11427 act = ecb->dte_action_last;
11486 dtrace_ecb_aggregation_destroy(dtrace_ecb_t *ecb, dtrace_action_t *act)
11489 dtrace_state_t *state = ecb->dte_state;
11506 dtrace_ecb_action_add(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc)
11513 dtrace_state_t *state = ecb->dte_state;
11518 ASSERT(ecb->dte_action == NULL || ecb->dte_action->dta_refcnt == 1);
11527 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
11535 action = dtrace_ecb_aggregation_create(ecb, desc);
11671 if (ecb->dte_size > sizeof (dtrace_rechdr_t))
11685 dtrace_action_t *act = ecb->dte_action;
11707 dtrace_action_t *act = ecb->dte_action;
11741 if ((last = ecb->dte_action_last) != NULL) {
11742 ASSERT(ecb->dte_action != NULL);
11746 ASSERT(ecb->dte_action == NULL);
11747 ecb->dte_action = action;
11750 ecb->dte_action_last = action;
11756 dtrace_ecb_action_remove(dtrace_ecb_t *ecb)
11758 dtrace_action_t *act = ecb->dte_action, *next;
11759 dtrace_vstate_t *vstate = &ecb->dte_state->dts_vstate;
11769 ASSERT(next != NULL || act == ecb->dte_action_last);
11773 dtrace_format_remove(ecb->dte_state, format);
11779 dtrace_ecb_aggregation_destroy(ecb, act);
11786 ecb->dte_action = NULL;
11787 ecb->dte_action_last = NULL;
11788 ecb->dte_size = 0;
11792 dtrace_ecb_disable(dtrace_ecb_t *ecb)
11798 dtrace_probe_t *probe = ecb->dte_probe;
11810 if (pecb == ecb)
11818 probe->dtpr_ecb = ecb->dte_next;
11820 prev->dte_next = ecb->dte_next;
11823 if (ecb == probe->dtpr_ecb_last) {
11824 ASSERT(ecb->dte_next == NULL);
11842 ASSERT(ecb->dte_next == NULL);
11866 ecb->dte_next = NULL;
11871 dtrace_ecb_destroy(dtrace_ecb_t *ecb)
11873 dtrace_state_t *state = ecb->dte_state;
11876 dtrace_epid_t epid = ecb->dte_epid;
11879 ASSERT(ecb->dte_next == NULL);
11880 ASSERT(ecb->dte_probe == NULL || ecb->dte_probe->dtpr_ecb != ecb);
11882 if ((pred = ecb->dte_predicate) != NULL)
11885 dtrace_ecb_action_remove(ecb);
11887 ASSERT(state->dts_ecbs[epid - 1] == ecb);
11890 kmem_free(ecb, sizeof (dtrace_ecb_t));
11897 dtrace_ecb_t *ecb;
11906 ecb = dtrace_ecb_add(state, probe);
11907 ecb->dte_uarg = desc->dted_uarg;
11911 ecb->dte_predicate = pred;
11918 * predicate bits to prevent the ecb from activating at
11929 ecb->dte_cond |= DTRACE_COND_OWNER;
11933 ecb->dte_cond |= DTRACE_COND_ZONEOWNER;
11942 ecb->dte_cond |= DTRACE_COND_USERMODE;
11947 * If we have a cached ecb, we'll use its action list instead
11956 ecb->dte_action = act;
11957 ecb->dte_action_last = cached->dte_action_last;
11958 ecb->dte_needed = cached->dte_needed;
11959 ecb->dte_size = cached->dte_size;
11960 ecb->dte_alignment = cached->dte_alignment;
11963 return (ecb);
11967 if ((enab->dten_error = dtrace_ecb_action_add(ecb, act)) != 0) {
11968 dtrace_ecb_destroy(ecb);
11973 if ((enab->dten_error = dtrace_ecb_resize(ecb)) != 0) {
11974 dtrace_ecb_destroy(ecb);
11978 return (dtrace_ecb_create_cache = ecb);
11984 dtrace_ecb_t *ecb;
11999 if ((ecb = dtrace_ecb_create(state, probe, enab)) == NULL)
12002 dtrace_ecb_enable(ecb);
12009 dtrace_ecb_t *ecb;
12017 ASSERT((ecb = state->dts_ecbs[id - 1]) == NULL || ecb->dte_epid == id);
12668 dtrace_enabling_add(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb)
12681 enab->dten_desc[enab->dten_ndesc++] = ecb;
12702 enab->dten_desc[enab->dten_ndesc++] = ecb;
12706 dtrace_enabling_addlike(dtrace_enabling_t *enab, dtrace_ecbdesc_t *ecb,
12719 if ((pred = ecb->dted_pred.dtpdd_predicate) != NULL)
12722 for (act = ecb->dted_action; act != NULL; act = act->dtad_next)
12725 new->dted_action = ecb->dted_action;
12726 new->dted_pred = ecb->dted_pred;
12728 new->dted_uarg = ecb->dted_uarg;
13125 dtrace_ecb_t *ecb;
13172 while ((ecb = probe->dtpr_ecb) != NULL) {
13173 dtrace_state_t *state = ecb->dte_state;
13186 dtrace_ecb_disable(ecb);
13187 ASSERT(probe->dtpr_ecb != ecb);
13188 dtrace_ecb_destroy(ecb);
13955 dof_ecbdesc_t *ecb;
13969 ecb = (dof_ecbdesc_t *)((uintptr_t)dof + (uintptr_t)sec->dofs_offset);
13970 sec = dtrace_dof_sect(dof, DOF_SECT_PROBEDESC, ecb->dofe_probes);
13976 ep->dted_uarg = ecb->dofe_uarg;
13982 if (ecb->dofe_pred != DOF_SECIDX_NONE) {
13984 DOF_SECT_DIFOHDR, ecb->dofe_pred)) == NULL)
13993 if (ecb->dofe_actions != DOF_SECIDX_NONE) {
13995 DOF_SECT_ACTDESC, ecb->dofe_actions)) == NULL)
14933 dtrace_ecb_t *ecb;
14948 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
14949 if (ecb->dte_state != state)
14952 state->dts_reserve += ecb->dte_needed + ecb->dte_alignment;
15401 dtrace_ecb_t *ecb;
15450 if ((ecb = state->dts_ecbs[i]) == NULL)
15453 if (match && ecb->dte_probe != NULL) {
15454 dtrace_probe_t *probe = ecb->dte_probe;
15461 dtrace_ecb_disable(ecb);
15462 dtrace_ecb_destroy(ecb);
17492 dtrace_ecb_t *ecb;
17504 if ((ecb = dtrace_epid2ecb(state, epdesc.dtepd_epid)) == NULL) {
17509 if (ecb->dte_probe == NULL) {
17514 epdesc.dtepd_probeid = ecb->dte_probe->dtpr_id;
17515 epdesc.dtepd_uarg = ecb->dte_uarg;
17516 epdesc.dtepd_size = ecb->dte_size;
17520 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {
17542 for (act = ecb->dte_action; act != NULL; act = act->dta_next) {