tp.php 748 B

1234567891011121314151617181920212223242526272829303132
  1. <?php
  2. $bpf_text = <<<EOT
  3. #include <uapi/linux/ptrace.h>
  4. struct trace_event_raw_sys_enter_rw__stub {
  5. __u64 unused;
  6. long int id;
  7. __u64 fd;
  8. char* buf;
  9. __u64 size;
  10. };
  11. int test(struct trace_event_raw_sys_enter_rw__stub* ctx)
  12. {
  13. bpf_trace_printk("%s\\n",ctx->size);
  14. return 1;
  15. }
  16. EOT;
  17. $ebpf = new Bpf(["text" => $bpf_text]);
  18. $ebpf->attach_tracepoint("syscalls:sys_enter_write","test");
  19. # header
  20. printf("%-18s %-16s %-6s %s\n", "TIME(s)", "COMM", "PID", "MESSAGE");
  21. # format output
  22. while (true) {
  23. try {
  24. list($task, $pid, $cpu, $flags, $ts, $msg) =$ebpf->trace_fields();
  25. printf("%-18.9f %-16s %-6d %s\n", $ts, $task, $pid, $msg);
  26. flush();
  27. } catch (Exception $e) {
  28. continue;
  29. }
  30. }