context_switch_logger.stp 932 B

12345678910111213141516171819202122232425262728293031323334353637
  1. global target_pid
  2. global target_name
  3. probe scheduler.ctxswitch {
  4. if (target_pid != 0
  5. && next_pid != target_pid
  6. && prev_pid != target_pid)
  7. next
  8. if (target_name != ""
  9. && prev_task_name != target_name
  10. && next_task_name != target_name)
  11. next
  12. //printf("Switch from %d(%s) to %d(%s) at %d\n",prev_tid, prev_task_name,next_tid,next_task_name, gettimeofday_ns())
  13. printf("%d %d %d %s %d\n",gettimeofday_ns(),prev_tid, next_tid, next_task_name,next_pid )
  14. //printf("%d %d %d\n",gettimeofday_ns(),prev_tid, next_tid )
  15. }
  16. probe begin
  17. {
  18. target_pid = 0
  19. target_name = ""
  20. %( $# == 1 || $# > 2 %?
  21. log("Wrong number of arguments, use none, 'pid nr' or 'name proc'")
  22. exit()
  23. %)
  24. %( $# == 2 %?
  25. if(@1 == "pid")
  26. target_pid = strtol(@2, 10)
  27. if(@1 == "name")
  28. target_name = @2
  29. %)
  30. }