From 3d981513c6347e939db8a05722d02ea3b90dec9f Mon Sep 17 00:00:00 2001 From: Rafael Fonseca Date: Fri, 10 Feb 2017 13:50:13 +0100 Subject: [PATCH 1/3] usdt: convert text from bytes to str This fixes a TypeError in python 3, e.g, when executing uobjnew Traceback (most recent call last): File "./uobjnew", line 134, in bpf = BPF(text=program, usdt_contexts=[usdt]) File "/usr/lib/python3.5/site-packages/bcc/__init__.py", line 224, in __init__ text = usdt_text + text TypeError: can't concat bytes to str --- src/python/bcc/usdt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/bcc/usdt.py b/src/python/bcc/usdt.py index 19a3a986c7de..a5278f3e1978 100644 --- a/src/python/bcc/usdt.py +++ b/src/python/bcc/usdt.py @@ -128,7 +128,7 @@ def enable_probe(self, probe, fn_name): probe) def get_text(self): - return lib.bcc_usdt_genargs(self.context) + return lib.bcc_usdt_genargs(self.context).decode() def get_probe_arg_ctype(self, probe_name, arg_index): return lib.bcc_usdt_get_probe_argctype( From 058c46faa90d3f1b58c7005a4deb8c0b91217b03 Mon Sep 17 00:00:00 2001 From: Rafael Fonseca Date: Fri, 10 Feb 2017 13:51:31 +0100 Subject: [PATCH 2/3] uobjnew: fix lambda syntax in python3 $ ./uobjnew File "./uobjnew", line 150 data = sorted(data.items(), key=lambda (k, v): v.num_allocs) ^ SyntaxError: invalid syntax --- tools/uobjnew.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/uobjnew.py b/tools/uobjnew.py index 993bca886f53..4845697181c5 100755 --- a/tools/uobjnew.py +++ b/tools/uobjnew.py @@ -147,13 +147,13 @@ print() data = bpf["allocs"] if args.top_count: - data = sorted(data.items(), key=lambda (k, v): v.num_allocs) + data = sorted(data.items(), key=lambda k, v: v.num_allocs) data = data[-args.top_count:] elif args.top_size: - data = sorted(data.items(), key=lambda (k, v): v.total_size) + data = sorted(data.items(), key=lambda k, v: v.total_size) data = data[-args.top_size:] else: - data = sorted(data.items(), key=lambda (k, v): v.total_size) + data = sorted(data.items(), key=lambda k, v: v.total_size) print("%-30s %8s %12s" % ("TYPE", "# ALLOCS", "# BYTES")) for key, value in data: if args.language == "c": From 573a5d4e3d84fe01a269c671da1f2ffd8a86de23 Mon Sep 17 00:00:00 2001 From: Rafael Fonseca Date: Fri, 10 Feb 2017 13:56:02 +0100 Subject: [PATCH 3/3] ustat: fix lambda syntax on python3. $ ./ustat File "./ustat", line 242 counts = sorted(counts.items(), key=lambda (_, v): ^ SyntaxError: invalid syntax --- tools/ustat.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/ustat.py b/tools/ustat.py index cc410df69b59..1c85ea096614 100755 --- a/tools/ustat.py +++ b/tools/ustat.py @@ -239,10 +239,10 @@ def _loop_iter(self): counts.update(probe.get_counts(self.bpf)) targets.update(probe.targets) if self.args.sort: - counts = sorted(counts.items(), key=lambda (_, v): + counts = sorted(counts.items(), key=lambda _, v: -v.get(self.args.sort.upper(), 0)) else: - counts = sorted(counts.items(), key=lambda (k, _): k) + counts = sorted(counts.items(), key=lambda k, _: k) for pid, stats in counts: print("%-6d %-20s %-10d %-6d %-10d %-8d %-6d %-6d" % ( pid, targets[pid][:20],