3 changed files with 85 additions and 2 deletions
@ -0,0 +1,51 @@ |
|||||||
|
(import (scheme base)) |
||||||
|
(import (srfi 16)) |
||||||
|
|
||||||
|
(define (mapping-str key) |
||||||
|
(let ((pair (assoc key *ftt-mappings*))) |
||||||
|
(if pair |
||||||
|
(cdr pair) |
||||||
|
(raise (string-append "No mapping: " key))))) |
||||||
|
|
||||||
|
(define (mapping-int key) |
||||||
|
(let ((value (mapping-str key))) |
||||||
|
(when value |
||||||
|
(string->number value)))) |
||||||
|
|
||||||
|
(define-record-type probe |
||||||
|
(make-probe |
||||||
|
install-handler |
||||||
|
remove-handler |
||||||
|
process-handler) |
||||||
|
probe? |
||||||
|
(install-handler probe-install-handler) |
||||||
|
(remove-handler probe-remove-handler) |
||||||
|
(process-handler probe-process-handler)) |
||||||
|
|
||||||
|
(define define-probes |
||||||
|
(case-lambda |
||||||
|
(() (display "Do waiting\n")) |
||||||
|
((probe . rest) |
||||||
|
(display "Got probe: ") |
||||||
|
(display probe) |
||||||
|
(newline) |
||||||
|
(let ((token ((probe-install-handler probe)))) |
||||||
|
(guard (x |
||||||
|
(else |
||||||
|
(display "Error:") |
||||||
|
(display x) |
||||||
|
(newline))) |
||||||
|
(apply define-probes rest) |
||||||
|
((probe-process-handler probe))) |
||||||
|
((probe-remove-handler probe) token)) |
||||||
|
)) |
||||||
|
) |
||||||
|
|
||||||
|
(define (ftrace-uprobe probe-name binary-path symbol args handler) |
||||||
|
(list 'uprobe probe-name binary-path symbol args handler)) |
||||||
|
|
||||||
|
(define (tracing-probe ctx install remove process) |
||||||
|
(make-probe (lambda () (install ctx)) |
||||||
|
(lambda (_) (remove ctx)) |
||||||
|
(lambda () (process ctx)))) |
||||||
|
|
||||||
Loading…
Reference in new issue