Lines Matching refs:fbt
81 fbt_probe_t *fbt = fbt_probetab[FBT_ADDR2NDX(addr)]; in fbt_invop() local
83 for (; fbt != NULL; fbt = fbt->fbtp_hashnext) { in fbt_invop()
84 if ((uintptr_t)fbt->fbtp_patchpoint == addr) { in fbt_invop()
85 if (fbt->fbtp_roffset == 0) { in fbt_invop()
111 dtrace_probe(fbt->fbtp_id, stack0, stack1, in fbt_invop()
127 dtrace_probe(fbt->fbtp_id, fbt->fbtp_roffset, in fbt_invop()
132 return (fbt->fbtp_rval); in fbt_invop()
149 fbt_probe_t *fbt, *retfbt; in fbt_provide_module() local
298 fbt = kmem_zalloc(sizeof (fbt_probe_t), KM_SLEEP); in fbt_provide_module()
299 fbt->fbtp_name = name; in fbt_provide_module()
300 fbt->fbtp_id = dtrace_probe_create(fbt_id, modname, in fbt_provide_module()
301 name, FBT_ENTRY, 3, fbt); in fbt_provide_module()
302 fbt->fbtp_patchpoint = instr; in fbt_provide_module()
303 fbt->fbtp_ctl = ctl; in fbt_provide_module()
304 fbt->fbtp_loadcnt = ctl->mod_loadcnt; in fbt_provide_module()
305 fbt->fbtp_rval = DTRACE_INVOP_PUSHL_EBP; in fbt_provide_module()
306 fbt->fbtp_savedval = *instr; in fbt_provide_module()
307 fbt->fbtp_patchval = FBT_PATCHVAL; in fbt_provide_module()
309 fbt->fbtp_hashnext = fbt_probetab[FBT_ADDR2NDX(instr)]; in fbt_provide_module()
310 fbt->fbtp_symndx = i; in fbt_provide_module()
311 fbt_probetab[FBT_ADDR2NDX(instr)] = fbt; in fbt_provide_module()
370 fbt = kmem_zalloc(sizeof (fbt_probe_t), KM_SLEEP); in fbt_provide_module()
371 fbt->fbtp_name = name; in fbt_provide_module()
374 fbt->fbtp_id = dtrace_probe_create(fbt_id, modname, in fbt_provide_module()
375 name, FBT_RETURN, 3, fbt); in fbt_provide_module()
377 retfbt->fbtp_next = fbt; in fbt_provide_module()
378 fbt->fbtp_id = retfbt->fbtp_id; in fbt_provide_module()
381 retfbt = fbt; in fbt_provide_module()
382 fbt->fbtp_patchpoint = instr; in fbt_provide_module()
383 fbt->fbtp_ctl = ctl; in fbt_provide_module()
384 fbt->fbtp_loadcnt = ctl->mod_loadcnt; in fbt_provide_module()
387 fbt->fbtp_rval = DTRACE_INVOP_RET; in fbt_provide_module()
388 fbt->fbtp_roffset = in fbt_provide_module()
391 fbt->fbtp_savedval = *instr; in fbt_provide_module()
392 fbt->fbtp_patchval = FBT_PATCHVAL; in fbt_provide_module()
393 fbt->fbtp_hashnext = fbt_probetab[FBT_ADDR2NDX(instr)]; in fbt_provide_module()
394 fbt->fbtp_symndx = i; in fbt_provide_module()
395 fbt_probetab[FBT_ADDR2NDX(instr)] = fbt; in fbt_provide_module()
408 fbt_probe_t *fbt = parg, *next, *hash, *last; in fbt_destroy() local
409 struct modctl *ctl = fbt->fbtp_ctl; in fbt_destroy()
413 if (ctl != NULL && ctl->mod_loadcnt == fbt->fbtp_loadcnt) { in fbt_destroy()
414 if ((ctl->mod_loadcnt == fbt->fbtp_loadcnt && in fbt_destroy()
424 ndx = FBT_ADDR2NDX(fbt->fbtp_patchpoint); in fbt_destroy()
428 while (hash != fbt) { in fbt_destroy()
435 last->fbtp_hashnext = fbt->fbtp_hashnext; in fbt_destroy()
437 fbt_probetab[ndx] = fbt->fbtp_hashnext; in fbt_destroy()
440 next = fbt->fbtp_next; in fbt_destroy()
441 kmem_free(fbt, sizeof (fbt_probe_t)); in fbt_destroy()
443 fbt = next; in fbt_destroy()
444 } while (fbt != NULL); in fbt_destroy()
451 fbt_probe_t *fbt = parg; in fbt_enable() local
452 struct modctl *ctl = fbt->fbtp_ctl; in fbt_enable()
460 fbt->fbtp_name, ctl->mod_modname); in fbt_enable()
471 if (ctl->mod_loadcnt != fbt->fbtp_loadcnt) { in fbt_enable()
475 fbt->fbtp_name, ctl->mod_modname); in fbt_enable()
481 for (; fbt != NULL; fbt = fbt->fbtp_next) in fbt_enable()
482 *fbt->fbtp_patchpoint = fbt->fbtp_patchval; in fbt_enable()
491 fbt_probe_t *fbt = parg; in fbt_disable() local
492 struct modctl *ctl = fbt->fbtp_ctl; in fbt_disable()
497 if (!ctl->mod_loaded || (ctl->mod_loadcnt != fbt->fbtp_loadcnt)) in fbt_disable()
500 for (; fbt != NULL; fbt = fbt->fbtp_next) in fbt_disable()
501 *fbt->fbtp_patchpoint = fbt->fbtp_savedval; in fbt_disable()
508 fbt_probe_t *fbt = parg; in fbt_suspend() local
509 struct modctl *ctl = fbt->fbtp_ctl; in fbt_suspend()
513 if (!ctl->mod_loaded || (ctl->mod_loadcnt != fbt->fbtp_loadcnt)) in fbt_suspend()
516 for (; fbt != NULL; fbt = fbt->fbtp_next) in fbt_suspend()
517 *fbt->fbtp_patchpoint = fbt->fbtp_savedval; in fbt_suspend()
524 fbt_probe_t *fbt = parg; in fbt_resume() local
525 struct modctl *ctl = fbt->fbtp_ctl; in fbt_resume()
529 if (!ctl->mod_loaded || (ctl->mod_loadcnt != fbt->fbtp_loadcnt)) in fbt_resume()
532 for (; fbt != NULL; fbt = fbt->fbtp_next) in fbt_resume()
533 *fbt->fbtp_patchpoint = fbt->fbtp_patchval; in fbt_resume()
540 fbt_probe_t *fbt = parg; in fbt_getargdesc() local
541 struct modctl *ctl = fbt->fbtp_ctl; in fbt_getargdesc()
550 if (!ctl->mod_loaded || (ctl->mod_loadcnt != fbt->fbtp_loadcnt)) in fbt_getargdesc()
553 if (fbt->fbtp_roffset != 0 && desc->dtargd_ndx == 0) { in fbt_getargdesc()
599 if (ctf_func_info(fp, fbt->fbtp_symndx, &f) == CTF_ERR) in fbt_getargdesc()
602 if (fbt->fbtp_roffset != 0) { in fbt_getargdesc()
612 if (ctf_func_args(fp, fbt->fbtp_symndx, argc, argv) == CTF_ERR) in fbt_getargdesc()