3 changed files with 85 additions and 2 deletions
@ -0,0 +1,51 @@
@@ -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