urandomread.php 550 B

123456789101112131415161718192021
  1. <?php
  2. $bpf_text = <<<EOT
  3. TRACEPOINT_PROBE(random, urandom_read) {
  4. // args is from /sys/kernel/debug/tracing/events/random/urandom_read/format
  5. bpf_trace_printk("%d\\n", args->got_bits);
  6. return 0;
  7. }
  8. EOT;
  9. $b = new Bpf(["text" => $bpf_text]);
  10. echo sprintf("%-18s %-16s %-6s %s\n", "TIME(s)", "COMM", "PID", "GOTBITS");
  11. while (true) {
  12. try {
  13. list($task, $pid, $cpu, $flags, $ts, $msg) = $ebpf->trace_fields();
  14. printf("%-18.9f %-16s %-6d %s\n", $ts, $task, $pid, $msg);
  15. } catch (Exception $e) {
  16. break;
  17. }
  18. }