Lines Matching refs:fbt
85 fbt_probe_t *fbt = fbt_probetab[FBT_ADDR2NDX(addr)]; in fbt_invop() local
87 for (; fbt != NULL; fbt = fbt->fbtp_hashnext) { in fbt_invop()
88 if ((uintptr_t)fbt->fbtp_patchpoint == addr) { in fbt_invop()
89 if (fbt->fbtp_roffset == 0) { in fbt_invop()
117 dtrace_probe(fbt->fbtp_id, stack0, stack1, in fbt_invop()
135 dtrace_probe(fbt->fbtp_id, fbt->fbtp_roffset, in fbt_invop()
140 return (fbt->fbtp_rval); in fbt_invop()
157 fbt_probe_t *fbt, *retfbt; in fbt_provide_module() local
317 fbt = kmem_zalloc(sizeof (fbt_probe_t), KM_SLEEP); in fbt_provide_module()
318 fbt->fbtp_name = name; in fbt_provide_module()
319 fbt->fbtp_id = dtrace_probe_create(fbt_id, modname, in fbt_provide_module()
320 name, FBT_ENTRY, 3, fbt); in fbt_provide_module()
321 fbt->fbtp_patchpoint = instr; in fbt_provide_module()
322 fbt->fbtp_ctl = ctl; in fbt_provide_module()
323 fbt->fbtp_loadcnt = ctl->mod_loadcnt; in fbt_provide_module()
324 fbt->fbtp_rval = DTRACE_INVOP_PUSHL_EBP; in fbt_provide_module()
325 fbt->fbtp_savedval = *instr; in fbt_provide_module()
326 fbt->fbtp_patchval = FBT_PATCHVAL; in fbt_provide_module()
328 fbt->fbtp_hashnext = fbt_probetab[FBT_ADDR2NDX(instr)]; in fbt_provide_module()
329 fbt->fbtp_symndx = i; in fbt_provide_module()
330 fbt_probetab[FBT_ADDR2NDX(instr)] = fbt; in fbt_provide_module()
399 fbt = kmem_zalloc(sizeof (fbt_probe_t), KM_SLEEP); in fbt_provide_module()
400 fbt->fbtp_name = name; in fbt_provide_module()
403 fbt->fbtp_id = dtrace_probe_create(fbt_id, modname, in fbt_provide_module()
404 name, FBT_RETURN, 3, fbt); in fbt_provide_module()
406 retfbt->fbtp_next = fbt; in fbt_provide_module()
407 fbt->fbtp_id = retfbt->fbtp_id; in fbt_provide_module()
410 retfbt = fbt; in fbt_provide_module()
411 fbt->fbtp_patchpoint = instr; in fbt_provide_module()
412 fbt->fbtp_ctl = ctl; in fbt_provide_module()
413 fbt->fbtp_loadcnt = ctl->mod_loadcnt; in fbt_provide_module()
417 fbt->fbtp_rval = DTRACE_INVOP_POPL_EBP; in fbt_provide_module()
420 fbt->fbtp_rval = DTRACE_INVOP_LEAVE; in fbt_provide_module()
422 fbt->fbtp_roffset = in fbt_provide_module()
427 fbt->fbtp_rval = DTRACE_INVOP_RET; in fbt_provide_module()
428 fbt->fbtp_roffset = in fbt_provide_module()
432 fbt->fbtp_savedval = *instr; in fbt_provide_module()
433 fbt->fbtp_patchval = FBT_PATCHVAL; in fbt_provide_module()
434 fbt->fbtp_hashnext = fbt_probetab[FBT_ADDR2NDX(instr)]; in fbt_provide_module()
435 fbt->fbtp_symndx = i; in fbt_provide_module()
436 fbt_probetab[FBT_ADDR2NDX(instr)] = fbt; in fbt_provide_module()
449 fbt_probe_t *fbt = parg, *next, *hash, *last; in fbt_destroy() local
450 struct modctl *ctl = fbt->fbtp_ctl; in fbt_destroy()
454 if (ctl != NULL && ctl->mod_loadcnt == fbt->fbtp_loadcnt) { in fbt_destroy()
455 if ((ctl->mod_loadcnt == fbt->fbtp_loadcnt && in fbt_destroy()
465 ndx = FBT_ADDR2NDX(fbt->fbtp_patchpoint); in fbt_destroy()
469 while (hash != fbt) { in fbt_destroy()
476 last->fbtp_hashnext = fbt->fbtp_hashnext; in fbt_destroy()
478 fbt_probetab[ndx] = fbt->fbtp_hashnext; in fbt_destroy()
481 next = fbt->fbtp_next; in fbt_destroy()
482 kmem_free(fbt, sizeof (fbt_probe_t)); in fbt_destroy()
484 fbt = next; in fbt_destroy()
485 } while (fbt != NULL); in fbt_destroy()
492 fbt_probe_t *fbt = parg; in fbt_enable() local
493 struct modctl *ctl = fbt->fbtp_ctl; in fbt_enable()
501 fbt->fbtp_name, ctl->mod_modname); in fbt_enable()
512 if (ctl->mod_loadcnt != fbt->fbtp_loadcnt) { in fbt_enable()
516 fbt->fbtp_name, ctl->mod_modname); in fbt_enable()
522 for (; fbt != NULL; fbt = fbt->fbtp_next) in fbt_enable()
523 *fbt->fbtp_patchpoint = fbt->fbtp_patchval; in fbt_enable()
532 fbt_probe_t *fbt = parg; in fbt_disable() local
533 struct modctl *ctl = fbt->fbtp_ctl; in fbt_disable()
538 if (!ctl->mod_loaded || (ctl->mod_loadcnt != fbt->fbtp_loadcnt)) in fbt_disable()
541 for (; fbt != NULL; fbt = fbt->fbtp_next) in fbt_disable()
542 *fbt->fbtp_patchpoint = fbt->fbtp_savedval; in fbt_disable()
549 fbt_probe_t *fbt = parg; in fbt_suspend() local
550 struct modctl *ctl = fbt->fbtp_ctl; in fbt_suspend()
554 if (!ctl->mod_loaded || (ctl->mod_loadcnt != fbt->fbtp_loadcnt)) in fbt_suspend()
557 for (; fbt != NULL; fbt = fbt->fbtp_next) in fbt_suspend()
558 *fbt->fbtp_patchpoint = fbt->fbtp_savedval; in fbt_suspend()
565 fbt_probe_t *fbt = parg; in fbt_resume() local
566 struct modctl *ctl = fbt->fbtp_ctl; in fbt_resume()
570 if (!ctl->mod_loaded || (ctl->mod_loadcnt != fbt->fbtp_loadcnt)) in fbt_resume()
573 for (; fbt != NULL; fbt = fbt->fbtp_next) in fbt_resume()
574 *fbt->fbtp_patchpoint = fbt->fbtp_patchval; in fbt_resume()
581 fbt_probe_t *fbt = parg; in fbt_getargdesc() local
582 struct modctl *ctl = fbt->fbtp_ctl; in fbt_getargdesc()
591 if (!ctl->mod_loaded || (ctl->mod_loadcnt != fbt->fbtp_loadcnt)) in fbt_getargdesc()
594 if (fbt->fbtp_roffset != 0 && desc->dtargd_ndx == 0) { in fbt_getargdesc()
640 if (ctf_func_info(fp, fbt->fbtp_symndx, &f) == CTF_ERR) in fbt_getargdesc()
643 if (fbt->fbtp_roffset != 0) { in fbt_getargdesc()
653 if (ctf_func_args(fp, fbt->fbtp_symndx, argc, argv) == CTF_ERR) in fbt_getargdesc()