From: Evgeny Vereshchagin Date: Tue, 7 Jun 2016 20:33:54 +0000 (+1000) Subject: offcputime: add the -d option X-Git-Tag: v0.2.0~72^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4509f09cff508d47ccc2cd1c447254e4be6bcab1;p=platform%2Fupstream%2Fbcc.git offcputime: add the -d option Closes #559 --- diff --git a/tools/offcputime.py b/tools/offcputime.py index c76decb..3bb6210 100755 --- a/tools/offcputime.py +++ b/tools/offcputime.py @@ -61,6 +61,8 @@ stack_group.add_argument("-U", "--user-stacks-only", action="store_true", help="show stacks from user space only (no kernel space stacks)") stack_group.add_argument("-K", "--kernel-stacks-only", action="store_true", help="show stacks from kernel space only (no user space stacks)") +parser.add_argument("-d", "--delimited", action="store_true", + help="insert delimiter between kernel/user stacks") parser.add_argument("-f", "--folded", action="store_true", help="output folded format") parser.add_argument("--stack-storage-size", default=1024, @@ -170,6 +172,8 @@ else: bpf_text = bpf_text.replace('USER_STACK_GET', user_stack_get) bpf_text = bpf_text.replace('KERNEL_STACK_GET', kernel_stack_get) +need_delimiter = args.delimited and not (args.kernel_stacks_only or args.user_stacks_only) + # check for an edge case; the code below will handle this case correctly # but ultimately nothing will be displayed if args.kernel_threads_only and args.user_stacks_only: @@ -229,12 +233,15 @@ for k, v in sorted(counts.items(), key=lambda counts: counts[1].value): kernel_stack = list(kernel_stack) line = [k.name.decode()] + \ [b.sym(addr, k.pid) for addr in reversed(user_stack)] + \ + (need_delimiter and ["-"] or []) + \ [b.ksym(addr) for addr in reversed(kernel_stack)] print("%s %d" % (";".join(line), v.value)) else: # print default multi-line stack output for addr in kernel_stack: print(" %016x %s" % (addr, b.ksym(addr))) + if need_delimiter: + print(" --") for addr in user_stack: print(" %016x %s" % (addr, b.sym(addr, k.pid))) print(" %-16s %s (%d)" % ("-", k.name, k.pid))