dbus-message-size : python shell script syntax error fix
[platform/upstream/bcc.git] / tools / dbus-message-size.py
1 #!/usr/bin/python
2
3 #old version
4
5 from bcc import BPF
6 from time import sleep
7 from ctypes import c_ushort, c_int, c_ulonglong
8 from sys import argv
9
10
11 def usage():
12         print("USAGE: %s [--histogram]" % argv[0])
13         exit()
14
15 mode = 0
16
17 if len(argv) > 2:
18         usage()
19         exit(1)
20 if len(argv) == 2:
21         if argv[1] == "--histogram":
22                 mode = 1
23         else:
24                 usage()
25
26 print("Hit Ctrl-C to end.")
27 count = 100
28 interval = 5
29 loop = 0
30
31 # load BPF program
32
33 b = BPF(src_file="dbus-message-size.c")
34 if mode == 1:
35         b.attach_uretprobe(name="dbus-1", sym="do_writing", fn_name="do_write_exit")
36         b.attach_uretprobe(name="dbus-1", sym="do_authentication", fn_name="do_write_exit")
37 b.attach_uretprobe(name="dbus-1", sym="_dbus_write_socket_with_unix_fds_two", fn_name="do_return")
38 b.attach_uretprobe(name="dbus-1", sym="_dbus_write_socket_two", fn_name="do_return")
39 b.attach_uretprobe(name="dbus-1", sym="_dbus_write_socket", fn_name="do_return")
40
41 while (1):
42         if count > 0:
43                 loop += 1
44                 if loop > count:
45                         exit()
46         sleep(interval)
47         print ("%d : \n" % loop)
48         stats_t = b["size_sent"]
49         if mode == 0:
50                 print ("%10s %20s %20s" % ("PID", "NAME", "BYTES SENT"))
51                 for v, p in sorted(stats_t.items(), key=lambda stats_t: stats_t[1].bytes, reverse=True):
52                         print("%10d %20s %20d \n" % (v.pid, v.comm.encode('string-escape'), p.bytes))
53         b["sizes"].print_log2_hist("bytes");