From: Vicent Marti Date: Wed, 30 Mar 2016 15:41:56 +0000 (+0200) Subject: bpf.lua: Implement `dump_func` X-Git-Tag: v0.2.0~128^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=81990c32a31c35d3cb87b91940f8b33ced3a53f4;p=platform%2Fupstream%2Fbcc.git bpf.lua: Implement `dump_func` --- diff --git a/src/lua/bcc/bpf.lua b/src/lua/bcc/bpf.lua index 3284aa4..461b1b7 100644 --- a/src/lua/bcc/bpf.lua +++ b/src/lua/bcc/bpf.lua @@ -157,7 +157,8 @@ function Bpf:load_func(fn_name, prog_type) return self.funcs[fn_name] end - assert(libbcc.bpf_function_start(self.module, fn_name), "unknown program: "..fn_name) + assert(libbcc.bpf_function_start(self.module, fn_name) ~= nil, + "unknown program: "..fn_name) local fd = libbcc.bpf_prog_load(prog_type, libbcc.bpf_function_start(self.module, fn_name), @@ -173,6 +174,14 @@ function Bpf:load_func(fn_name, prog_type) return fn end +function Bpf:dump_func(fn_name) + local start = libbcc.bpf_function_start(self.module, fn_name) + assert(start ~= nil, "unknown program") + + local len = libbcc.bpf_function_size(self.module, fn_name) + return ffi.string(start, tonumber(len)) +end + function Bpf:attach_uprobe(args) Bpf.check_probe_quota(1) diff --git a/tests/lua/test_dump.lua b/tests/lua/test_dump.lua new file mode 100644 index 0000000..f235e80 --- /dev/null +++ b/tests/lua/test_dump.lua @@ -0,0 +1,9 @@ +require("test_helper") + +function test_dump_func() + local raw = "\xb7\x00\x00\x00\x01\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00" + local b = BPF:new{text=[[int entry(void) { return 1; }]]} + assert_equals(b:dump_func("entry"), raw) +end + +os.exit(LuaUnit.run())