Lines Matching defs:pp

100 dt_pid_per_sym(dt_pid_probe_t *pp, const GElf_Sym *symp, const char *func)
102 dtrace_hdl_t *dtp = pp->dpp_dtp;
103 dt_pcb_t *pcb = pp->dpp_pcb;
104 dt_proc_t *dpr = pp->dpp_dpr;
114 pid = Pstatus(pp->dpp_pr)->pr_pid;
116 dt_dprintf("creating probe pid%d:%s:%s:%s\n", (int)pid, pp->dpp_obj,
117 func, pp->dpp_name);
130 dt_pid_objname(ftp->ftps_mod, sizeof (ftp->ftps_mod), pp->dpp_lmid,
131 pp->dpp_obj);
133 if (!isdash && gmatch("return", pp->dpp_name)) {
134 if (dt_pid_create_return_probe(pp->dpp_pr, dtp, ftp, symp,
135 pp->dpp_stret) < 0) {
145 if (!isdash && gmatch("entry", pp->dpp_name)) {
146 if (dt_pid_create_entry_probe(pp->dpp_pr, dtp, ftp, symp) < 0) {
156 glob = strisglob(pp->dpp_name);
158 off = strtoull(pp->dpp_name, &end, 16);
161 "'%s' is an invalid probe name", pp->dpp_name));
170 err = dt_pid_create_offset_probe(pp->dpp_pr, pp->dpp_dtp, ftp,
189 if (dt_pid_create_glob_offset_probes(pp->dpp_pr,
190 pp->dpp_dtp, ftp, symp, pp->dpp_name) < 0) {
200 pp->dpp_nmatches += nmatches;
210 dt_pid_probe_t *pp = arg;
220 if (pp->dpp_last_taken == 0 ||
221 symp->st_value != pp->dpp_last.st_value ||
222 symp->st_size != pp->dpp_last.st_size) {
233 if ((pp->dpp_last_taken = gmatch(func, pp->dpp_func)) != 0) {
234 pp->dpp_last = *symp;
235 return (dt_pid_per_sym(pp, symp, func));
245 dt_pid_probe_t *pp = arg;
246 dtrace_hdl_t *dtp = pp->dpp_dtp;
247 dt_pcb_t *pcb = pp->dpp_pcb;
248 dt_proc_t *dpr = pp->dpp_dpr;
254 (void) Plmid(pp->dpp_pr, pmp->pr_vaddr, &pp->dpp_lmid);
256 if ((pp->dpp_obj = strrchr(obj, '/')) == NULL)
257 pp->dpp_obj = obj;
259 pp->dpp_obj++;
261 if (Pxlookup_by_name(pp->dpp_pr, pp->dpp_lmid, obj, ".stret1", &sym,
263 pp->dpp_stret[0] = sym.st_value;
265 pp->dpp_stret[0] = 0;
267 if (Pxlookup_by_name(pp->dpp_pr, pp->dpp_lmid, obj, ".stret2", &sym,
269 pp->dpp_stret[1] = sym.st_value;
271 pp->dpp_stret[1] = 0;
273 if (Pxlookup_by_name(pp->dpp_pr, pp->dpp_lmid, obj, ".stret4", &sym,
275 pp->dpp_stret[2] = sym.st_value;
277 pp->dpp_stret[2] = 0;
279 if (Pxlookup_by_name(pp->dpp_pr, pp->dpp_lmid, obj, ".stret8", &sym,
281 pp->dpp_stret[3] = sym.st_value;
283 pp->dpp_stret[3] = 0;
286 (u_longlong_t)pp->dpp_stret[0], (u_longlong_t)pp->dpp_stret[1],
287 (u_longlong_t)pp->dpp_stret[2], (u_longlong_t)pp->dpp_stret[3]);
290 * If pp->dpp_func contains any globbing meta-characters, we need
294 if (!strisglob(pp->dpp_func)) {
304 if (Pxlookup_by_name(pp->dpp_pr, pp->dpp_lmid, obj,
305 pp->dpp_func, &sym, NULL) != 0) {
306 if (strcmp("-", pp->dpp_func) == 0) {
313 sym.st_size = Pstatus(pp->dpp_pr)->pr_dmodel ==
316 } else if (!strisglob(pp->dpp_mod)) {
320 pp->dpp_func, pp->dpp_mod));
337 if (Ppltdest(pp->dpp_pr, sym.st_value) != NULL)
340 (void) Plookup_by_addr(pp->dpp_pr, sym.st_value, pp->dpp_func,
343 return (dt_pid_per_sym(pp, &sym, pp->dpp_func));
345 uint_t nmatches = pp->dpp_nmatches;
347 if (Psymbol_iter_by_addr(pp->dpp_pr, obj, PR_SYMTAB,
348 BIND_ANY | TYPE_FUNC, dt_pid_sym_filt, pp) == 1)
351 if (nmatches == pp->dpp_nmatches) {
356 if (Psymbol_iter_by_addr(pp->dpp_pr, obj, PR_DYNSYM,
357 BIND_ANY | TYPE_FUNC, dt_pid_sym_filt, pp) == 1)
369 dt_pid_probe_t *pp = arg;
371 if ((pp->dpp_obj = strrchr(obj, '/')) == NULL)
372 pp->dpp_obj = obj;
374 pp->dpp_obj++;
376 if (gmatch(pp->dpp_obj, pp->dpp_mod))
377 return (dt_pid_per_mod(pp, pmp, obj));
379 (void) Plmid(pp->dpp_pr, pmp->pr_vaddr, &pp->dpp_lmid);
381 dt_pid_objname(name, sizeof (name), pp->dpp_lmid, pp->dpp_obj);
383 if (gmatch(name, pp->dpp_mod))
384 return (dt_pid_per_mod(pp, pmp, obj));
438 dt_pid_probe_t pp;
441 pp.dpp_dtp = dtp;
442 pp.dpp_dpr = dpr;
443 pp.dpp_pr = dpr->dpr_proc;
444 pp.dpp_pcb = pcb;
450 if (Pname_to_map(pp.dpp_pr, PR_OBJ_LDSO) == NULL) {
456 pp.dpp_mod = pdp->dtpd_mod[0] != '\0' ? pdp->dtpd_mod : "*";
457 pp.dpp_func = pdp->dtpd_func[0] != '\0' ? pdp->dtpd_func : "*";
458 pp.dpp_name = pdp->dtpd_name[0] != '\0' ? pdp->dtpd_name : "*";
459 pp.dpp_last_taken = 0;
461 if (strcmp(pp.dpp_func, "-") == 0) {
465 pp.dpp_mod = pdp->dtpd_mod;
467 } else if (strisglob(pp.dpp_mod) ||
468 (aout = Pname_to_map(pp.dpp_pr, "a.out")) == NULL ||
469 (pmp = Pname_to_map(pp.dpp_pr, pp.dpp_mod)) == NULL ||
476 if (strisglob(pp.dpp_name)) {
484 * If pp.dpp_mod contains any globbing meta-characters, we need
488 if (strisglob(pp.dpp_mod)) {
489 ret = Pobject_iter(pp.dpp_pr, dt_pid_mod_filt, &pp);
499 if ((pmp = dt_pid_fix_mod(pdp, pp.dpp_pr)) != NULL) {
505 ret = dt_pid_per_mod(&pp, pmp, obj);