diff --git a/src/lua/bcc/table.lua b/src/lua/bcc/table.lua index af269d81eb7feddcba9e1ed8b550255dc5ec0c28..35d93edcd775331a72b97856bba6d8325714addb 100644 --- a/src/lua/bcc/table.lua +++ b/src/lua/bcc/table.lua @@ -254,9 +254,9 @@ function PerfEventArray:_open_perf_buffer(cpu, callback, ctype) self._callbacks[cpu] = _cb end -function PerfEventArray:open_perf_buffer(callback, data_type) +function PerfEventArray:open_perf_buffer(callback, data_type, ...) assert(data_type, "a data type is needed for callback conversion") - local ctype = ffi.typeof(data_type.."*") + local ctype = ffi.typeof(data_type.."*", ...) for i = 0, Posix.cpu_count() - 1 do self:_open_perf_buffer(i, callback, ctype) end diff --git a/tools/stacksnoop.lua b/tools/stacksnoop.lua index af9284e79fde54c8cf8b33fc09cf4116f813436b..8f5f5b4fa8857be8dc530947f255e7490d49a2c2 100755 --- a/tools/stacksnoop.lua +++ b/tools/stacksnoop.lua @@ -100,12 +100,8 @@ return function(BPF, utils) local TASK_COMM_LEN = 16 -- linux/sched.h - bpf:get_table("events"):open_perf_buffer(print_event, [[ - struct { - uint64_t stack_id; - uint32_t pid; - char comm[%d]; - } - ]] % {TASK_COMM_LEN}) + bpf:get_table("events"):open_perf_buffer(print_event, + "struct { uint64_t stack_id; uint32_t pid; char comm[$]; }", + TASK_COMM_LEN) bpf:kprobe_poll_loop() end