Lines Matching refs:probe

412 #define	DTRACE_HASHSTR(hash, probe)	\  argument
413 dtrace_hash_str(*((char **)((uintptr_t)(probe) + (hash)->dth_stroffs)))
415 #define DTRACE_HASHNEXT(hash, probe) \ argument
416 (dtrace_probe_t **)((uintptr_t)(probe) + (hash)->dth_nextoffs)
418 #define DTRACE_HASHPREV(hash, probe) \ argument
419 (dtrace_probe_t **)((uintptr_t)(probe) + (hash)->dth_prevoffs)
574 #define DTRACE_ANCHORED(probe) ((probe)->dtpr_func[0] != '\0') argument
1637 dtrace_probe_t *probe = ecb->dte_probe; in dtrace_priv_probe() local
1638 dtrace_provider_t *prov = probe->dtpr_provider; in dtrace_priv_probe()
1647 probe->dtpr_id, probe->dtpr_arg); in dtrace_priv_probe()
6911 dtrace_probe_t *probe = ecb->dte_probe; local
6912 dtrace_provider_t *prov = probe->dtpr_provider;
6925 ASSERT(probe != NULL);
6941 for (str = probe->dtpr_mod; *str != '\0'; str++)
6945 for (str = probe->dtpr_func; *str != '\0'; str++)
6949 for (str = probe->dtpr_name; *str != '\0'; str++)
6976 dtrace_probe_t *probe = ecb->dte_probe; local
6981 ASSERT(probe != NULL);
6998 probe->dtpr_provider->dtpv_name, probe->dtpr_mod,
6999 probe->dtpr_func, probe->dtpr_name, (void *)ecb);
7326 dtrace_probe_t *probe; local
7350 probe = dtrace_probes[id - 1];
7354 if (!onintr && probe->dtpr_predcache != DTRACE_CACHEIDNONE &&
7355 probe->dtpr_predcache == curthread->t_predcache) {
7384 mstate.dtms_probe = probe;
7394 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
7400 dtrace_provider_t *prov = probe->dtpr_provider;
7449 if (probe->dtpr_id == dtrace_probeid_begin &&
7468 probe->dtpr_id, probe->dtpr_arg) == 0)
7578 dtrace_cacheid_t cid = probe->dtpr_predcache;
7648 size / sizeof (pc_t), probe->dtpr_aframes,
7649 DTRACE_ANCHORED(probe) ? NULL :
7965 if (probe->dtpr_id == dtrace_probeid_error) {
8089 dtrace_probe_t *probe = bucket->dthb_chain; local
8091 ASSERT(probe != NULL);
8092 ndx = DTRACE_HASHSTR(hash, probe) & new_mask;
8176 dtrace_hash_remove(dtrace_hash_t *hash, dtrace_probe_t *probe) argument
8178 int ndx = DTRACE_HASHSTR(hash, probe) & hash->dth_mask;
8181 dtrace_probe_t **prevp = DTRACE_HASHPREV(hash, probe);
8182 dtrace_probe_t **nextp = DTRACE_HASHNEXT(hash, probe);
8188 if (DTRACE_HASHEQ(hash, bucket->dthb_chain, probe))
8202 ASSERT(bucket->dthb_chain == probe);
8570 dtrace_probe_t template, *probe; local
8582 if ((probe = dtrace_probe_lookup_id(pkp->dtpk_id)) != NULL &&
8583 dtrace_match_probe(probe, pkp, priv, uid, zoneid) > 0) {
8584 (void) (*matched)(probe, arg);
8624 if ((probe = dtrace_probes[i]) == NULL ||
8625 dtrace_match_probe(probe, pkp, priv, uid,
8631 if ((*matched)(probe, arg) != DTRACE_MATCH_NEXT)
8643 for (probe = dtrace_hash_lookup(hash, &template); probe != NULL;
8644 probe = *(DTRACE_HASHNEXT(hash, probe))) {
8646 if (dtrace_match_probe(probe, pkp, priv, uid, zoneid) <= 0)
8651 if ((*matched)(probe, arg) != DTRACE_MATCH_NEXT)
8869 dtrace_probe_t *probe, *first = NULL; local
8921 if ((probe = dtrace_probes[i]) == NULL)
8924 if (probe->dtpr_provider != old)
8927 if (probe->dtpr_ecb == NULL)
8965 if ((probe = dtrace_probes[i]) == NULL)
8968 if (probe->dtpr_provider != old)
8973 dtrace_hash_remove(dtrace_bymod, probe);
8974 dtrace_hash_remove(dtrace_byfunc, probe);
8975 dtrace_hash_remove(dtrace_byname, probe);
8978 first = probe;
8979 probe->dtpr_nextmod = NULL;
8981 probe->dtpr_nextmod = first;
8982 first = probe;
8993 for (probe = first; probe != NULL; probe = first) {
8994 first = probe->dtpr_nextmod;
8996 old->dtpv_pops.dtps_destroy(old->dtpv_arg, probe->dtpr_id,
8997 probe->dtpr_arg);
8998 kmem_free(probe->dtpr_mod, strlen(probe->dtpr_mod) + 1);
8999 kmem_free(probe->dtpr_func, strlen(probe->dtpr_func) + 1);
9000 kmem_free(probe->dtpr_name, strlen(probe->dtpr_name) + 1);
9002 vmem_free(dtrace_arena, (void *)(uintptr_t)(probe->dtpr_id), 1);
9004 free_unr(dtrace_arena, probe->dtpr_id);
9006 kmem_free(probe, sizeof (dtrace_probe_t));
9086 dtrace_probe_t *probe; local
9101 if ((probe = dtrace_probes[i]) == NULL)
9104 if (probe->dtpr_provider != prov)
9107 if (probe->dtpr_ecb != NULL)
9112 dtrace_hash_remove(dtrace_bymod, probe);
9113 dtrace_hash_remove(dtrace_byfunc, probe);
9114 dtrace_hash_remove(dtrace_byname, probe);
9117 probe->dtpr_arg);
9118 kmem_free(probe->dtpr_mod, strlen(probe->dtpr_mod) + 1);
9119 kmem_free(probe->dtpr_func, strlen(probe->dtpr_func) + 1);
9120 kmem_free(probe->dtpr_name, strlen(probe->dtpr_name) + 1);
9121 kmem_free(probe, sizeof (dtrace_probe_t));
9152 dtrace_probe_t *probe, **probes; local
9168 probe = kmem_zalloc(sizeof (dtrace_probe_t), KM_SLEEP);
9170 probe->dtpr_id = id;
9171 probe->dtpr_gen = dtrace_probegen++;
9172 probe->dtpr_mod = dtrace_strdup(mod);
9173 probe->dtpr_func = dtrace_strdup(func);
9174 probe->dtpr_name = dtrace_strdup(name);
9175 probe->dtpr_arg = arg;
9176 probe->dtpr_aframes = aframes;
9177 probe->dtpr_provider = provider;
9179 dtrace_hash_add(dtrace_bymod, probe);
9180 dtrace_hash_add(dtrace_byfunc, probe);
9181 dtrace_hash_add(dtrace_byname, probe);
9220 dtrace_probes[id - 1] = probe;
9240 dtrace_probe_lookup_match(dtrace_probe_t *probe, void *arg) argument
9242 *((dtrace_id_t *)arg) = probe->dtpr_id;
9284 dtrace_probe_t *probe; local
9289 if ((probe = dtrace_probe_lookup_id(pid)) != NULL &&
9290 probe->dtpr_provider == (dtrace_provider_t *)id)
9291 rval = probe->dtpr_arg;
9384 dtrace_probe_t *probe; local
9396 if ((probe = dtrace_probes[i]) == NULL)
9399 if (probe->dtpr_ecb == NULL) {
9406 prov = probe->dtpr_provider;
9410 func(prov->dtpv_arg, i + 1, probe->dtpr_arg);
9480 dof_probe_t *probe; local
9532 probe = (dof_probe_t *)(uintptr_t)(daddr +
9536 if (strlen(strtab + probe->dofpr_func) >= DTRACE_FUNCNAMELEN)
9540 dhpb.dthpb_func = strtab + probe->dofpr_func;
9541 dhpb.dthpb_name = strtab + probe->dofpr_name;
9542 dhpb.dthpb_base = probe->dofpr_addr;
9543 dhpb.dthpb_offs = off + probe->dofpr_offidx;
9544 dhpb.dthpb_noffs = probe->dofpr_noffs;
9546 dhpb.dthpb_enoffs = enoff + probe->dofpr_enoffidx;
9547 dhpb.dthpb_nenoffs = probe->dofpr_nenoffs;
9552 dhpb.dthpb_args = arg + probe->dofpr_argidx;
9553 dhpb.dthpb_nargc = probe->dofpr_nargc;
9554 dhpb.dthpb_xargc = probe->dofpr_xargc;
9555 dhpb.dthpb_ntypes = strtab + probe->dofpr_nargv;
9556 dhpb.dthpb_xtypes = strtab + probe->dofpr_xargv;
11092 dtrace_ecb_add(dtrace_state_t *state, dtrace_probe_t *probe) argument
11101 ecb->dte_probe = probe;
11161 dtrace_probe_t *probe = ecb->dte_probe; local
11167 if (probe == NULL) {
11174 if (probe->dtpr_ecb == NULL) {
11175 dtrace_provider_t *prov = probe->dtpr_provider;
11180 probe->dtpr_ecb = probe->dtpr_ecb_last = ecb;
11183 probe->dtpr_predcache = ecb->dte_predicate->dtp_cacheid;
11186 probe->dtpr_id, probe->dtpr_arg);
11193 ASSERT(probe->dtpr_ecb_last != NULL);
11194 probe->dtpr_ecb_last->dte_next = ecb;
11195 probe->dtpr_ecb_last = ecb;
11196 probe->dtpr_predcache = 0;
11801 dtrace_probe_t *probe = ecb->dte_probe; local
11805 if (probe == NULL) {
11812 for (pecb = probe->dtpr_ecb; pecb != NULL; pecb = pecb->dte_next) {
11821 probe->dtpr_ecb = ecb->dte_next;
11826 if (ecb == probe->dtpr_ecb_last) {
11828 probe->dtpr_ecb_last = prev;
11837 if (probe->dtpr_ecb == NULL) {
11843 dtrace_provider_t *prov = probe->dtpr_provider;
11846 ASSERT(probe->dtpr_ecb_last == NULL);
11847 probe->dtpr_predcache = DTRACE_CACHEIDNONE;
11849 probe->dtpr_id, probe->dtpr_arg);
11857 ASSERT(probe->dtpr_ecb_last != NULL);
11858 ASSERT(probe->dtpr_predcache == DTRACE_CACHEIDNONE);
11860 if (probe->dtpr_ecb == probe->dtpr_ecb_last) {
11861 dtrace_predicate_t *p = probe->dtpr_ecb->dte_predicate;
11863 ASSERT(probe->dtpr_ecb->dte_next == NULL);
11866 probe->dtpr_predcache = p->dtp_cacheid;
11897 dtrace_ecb_create(dtrace_state_t *state, dtrace_probe_t *probe, argument
11909 ecb = dtrace_ecb_add(state, probe);
11917 if (probe != NULL) {
11929 prov = probe->dtpr_provider;
11985 dtrace_ecb_create_enable(dtrace_probe_t *probe, void *arg) argument
11993 if (probe != NULL && probe->dtpr_gen < enab->dten_probegen) {
12002 if ((ecb = dtrace_ecb_create(state, probe, enab)) == NULL)
13133 dtrace_probe_t *probe; local
13142 if ((probe = dtrace_probes[i]) == NULL)
13145 if (probe->dtpr_ecb == NULL)
13148 prov = probe->dtpr_provider;
13181 while ((ecb = probe->dtpr_ecb) != NULL) {
13196 ASSERT(probe->dtpr_ecb != ecb);
13574 dof_probedesc_t *probe; local
13595 probe = (dof_probedesc_t *)(uintptr_t)(daddr + sec->dofs_offset);
13596 strtab = dtrace_dof_sect(dof, DOF_SECT_STRTAB, probe->dofp_strtab);
13604 if (probe->dofp_provider >= strtab->dofs_size) {
13610 (char *)(str + probe->dofp_provider),
13611 MIN(DTRACE_PROVNAMELEN - 1, size - probe->dofp_provider));
13613 if (probe->dofp_mod >= strtab->dofs_size) {
13618 (void) strncpy(desc->dtpd_mod, (char *)(str + probe->dofp_mod),
13619 MIN(DTRACE_MODNAMELEN - 1, size - probe->dofp_mod));
13621 if (probe->dofp_func >= strtab->dofs_size) {
13626 (void) strncpy(desc->dtpd_func, (char *)(str + probe->dofp_func),
13627 MIN(DTRACE_FUNCNAMELEN - 1, size - probe->dofp_func));
13629 if (probe->dofp_name >= strtab->dofs_size) {
13634 (void) strncpy(desc->dtpd_name, (char *)(str + probe->dofp_name),
13635 MIN(DTRACE_NAMELEN - 1, size - probe->dofp_name));
14943 dtrace_probe_t *probe; local
14954 probe = dtrace_probes[dtrace_probeid_end - 1];
14955 ASSERT(probe != NULL);
14957 for (ecb = probe->dtpr_ecb; ecb != NULL; ecb = ecb->dte_next) {
15463 dtrace_probe_t *probe = ecb->dte_probe; local
15464 dtrace_provider_t *prov = probe->dtpr_provider;
16171 dof_probe_t *probe; local
16257 probe = (dof_probe_t *)(uintptr_t)(daddr +
16260 if (probe->dofpr_func >= str_sec->dofs_size) {
16265 if (strlen(strtab + probe->dofpr_func) >= DTRACE_FUNCNAMELEN) {
16276 if (probe->dofpr_name >= str_sec->dofs_size ||
16277 strlen(strtab + probe->dofpr_name) >= DTRACE_NAMELEN) {
16286 if (probe->dofpr_offidx + probe->dofpr_noffs <
16287 probe->dofpr_offidx ||
16288 (probe->dofpr_offidx + probe->dofpr_noffs) *
16302 if (probe->dofpr_enoffidx != 0 ||
16303 probe->dofpr_nenoffs != 0) {
16308 } else if (probe->dofpr_enoffidx +
16309 probe->dofpr_nenoffs < probe->dofpr_enoffidx ||
16310 (probe->dofpr_enoffidx + probe->dofpr_nenoffs) *
16317 if (probe->dofpr_noffs + probe->dofpr_nenoffs == 0) {
16322 } else if (probe->dofpr_noffs == 0) {
16327 if (probe->dofpr_argidx + probe->dofpr_xargc <
16328 probe->dofpr_argidx ||
16329 (probe->dofpr_argidx + probe->dofpr_xargc) *
16335 typeidx = probe->dofpr_nargv;
16336 typestr = strtab + probe->dofpr_nargv;
16337 for (k = 0; k < probe->dofpr_nargc; k++) {
16354 typeidx = probe->dofpr_xargv;
16355 typestr = strtab + probe->dofpr_xargv;
16356 for (k = 0; k < probe->dofpr_xargc; k++) {
16357 if (arg[probe->dofpr_argidx + k] > probe->dofpr_nargc) {
16756 dtrace_probe_t template, *probe, *first, *next; local
16805 for (probe = first = dtrace_hash_lookup(dtrace_bymod, &template);
16806 probe != NULL; probe = probe->dtpr_nextmod) {
16807 if (probe->dtpr_ecb != NULL) {
16838 probe = first;
16840 for (first = NULL; probe != NULL; probe = next) {
16841 ASSERT(dtrace_probes[probe->dtpr_id - 1] == probe);
16843 dtrace_probes[probe->dtpr_id - 1] = NULL;
16845 next = probe->dtpr_nextmod;
16846 dtrace_hash_remove(dtrace_bymod, probe);
16847 dtrace_hash_remove(dtrace_byfunc, probe);
16848 dtrace_hash_remove(dtrace_byname, probe);
16851 first = probe;
16852 probe->dtpr_nextmod = NULL;
16854 probe->dtpr_nextmod = first;
16855 first = probe;
16866 for (probe = first; probe != NULL; probe = first) {
16867 first = probe->dtpr_nextmod;
16868 prov = probe->dtpr_provider;
16869 prov->dtpv_pops.dtps_destroy(prov->dtpv_arg, probe->dtpr_id,
16870 probe->dtpr_arg);
16871 kmem_free(probe->dtpr_mod, strlen(probe->dtpr_mod) + 1);
16872 kmem_free(probe->dtpr_func, strlen(probe->dtpr_func) + 1);
16873 kmem_free(probe->dtpr_name, strlen(probe->dtpr_name) + 1);
16875 vmem_free(dtrace_arena, (void *)(uintptr_t)probe->dtpr_id, 1);
16877 free_unr(dtrace_arena, probe->dtpr_id);
16879 kmem_free(probe, sizeof (dtrace_probe_t));
17764 dtrace_probe_t *probe = NULL; local
17803 if ((probe = dtrace_probes[i - 1]) != NULL &&
17804 (m = dtrace_match_probe(probe, &pkey,
17816 if ((probe = dtrace_probes[i - 1]) != NULL &&
17817 dtrace_match_priv(probe, priv, uid, zoneid))
17822 if (probe == NULL) {
17827 dtrace_probe_description(probe, &desc);
17838 dtrace_probe_t *probe; local
17861 if ((probe = dtrace_probes[desc.dtargd_id - 1]) == NULL) {
17870 prov = probe->dtpr_provider;
17884 probe->dtpr_id, probe->dtpr_arg, &desc);