Util.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # Util.py - Python extension for perf trace, miscellaneous utility code
  2. #
  3. # Copyright (C) 2010 by Tom Zanussi <tzanussi@gmail.com>
  4. #
  5. # This software may be distributed under the terms of the GNU General
  6. # Public License ("GPL") version 2 as published by the Free Software
  7. # Foundation.
  8. import errno, os
  9. NSECS_PER_SEC = 1000000000
  10. def avg(total, n):
  11. return total / n
  12. def nsecs(secs, nsecs):
  13. return secs * NSECS_PER_SEC + nsecs
  14. def nsecs_secs(nsecs):
  15. return nsecs / NSECS_PER_SEC
  16. def nsecs_nsecs(nsecs):
  17. return nsecs % NSECS_PER_SEC
  18. def nsecs_str(nsecs):
  19. str = "%5u.%09u" % (nsecs_secs(nsecs), nsecs_nsecs(nsecs)),
  20. return str
  21. def clear_term():
  22. print("\x1b[H\x1b[2J")
  23. audit_package_warned = False
  24. try:
  25. import audit
  26. machine_to_id = {
  27. 'x86_64': audit.MACH_86_64,
  28. 'alpha' : audit.MACH_ALPHA,
  29. 'armeb' : audit.MACH_ARMEB,
  30. 'ia64' : audit.MACH_IA64,
  31. 'ppc' : audit.MACH_PPC,
  32. 'ppc64' : audit.MACH_PPC64,
  33. 's390' : audit.MACH_S390,
  34. 's390x' : audit.MACH_S390X,
  35. 'i386' : audit.MACH_X86,
  36. 'i586' : audit.MACH_X86,
  37. 'i686' : audit.MACH_X86,
  38. }
  39. machine_id = machine_to_id[os.uname()[4]]
  40. except:
  41. if not audit_package_warned:
  42. audit_package_warned = True
  43. print "Install the audit-libs-python package to get syscall names"
  44. def syscall_name(id):
  45. try:
  46. return audit.audit_syscall_to_name(id, machine_id)
  47. except:
  48. return str(id)
  49. def strerror(nr):
  50. try:
  51. return errno.errorcode[abs(nr)]
  52. except:
  53. return "Unknown %d errno" % nr