Vicent Marti | 6d14b2f | 2016-04-30 13:22:42 +0200 | [diff] [blame] | 1 | #!/usr/bin/env bcc-lua |
Vicent Marti | df11f32 | 2016-03-30 17:31:19 +0200 | [diff] [blame] | 2 | --[[ |
| 3 | Copyright 2016 GitHub, Inc |
| 4 | |
| 5 | Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 | you may not use this file except in compliance with the License. |
| 7 | You may obtain a copy of the License at |
| 8 | |
| 9 | http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | |
| 11 | Unless required by applicable law or agreed to in writing, software |
| 12 | distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | See the License for the specific language governing permissions and |
| 15 | limitations under the License. |
| 16 | ]] |
| 17 | local ffi = require("ffi") |
| 18 | |
| 19 | return function(BPF) |
Vicent Marti | e789360 | 2016-03-30 17:31:19 +0200 | [diff] [blame] | 20 | local b = BPF:new{src_file="bashreadline.c", debug=0} |
Vicent Marti | df11f32 | 2016-03-30 17:31:19 +0200 | [diff] [blame] | 21 | b:attach_uprobe{name="/bin/bash", sym="readline", fn_name="printret", retprobe=true} |
| 22 | |
| 23 | local function print_readline(cpu, event) |
| 24 | print("%-9s %-6d %s" % {os.date("%H:%M:%S"), tonumber(event.pid), ffi.string(event.str)}) |
| 25 | end |
| 26 | |
Mark Drayton | 5f5687e | 2017-02-20 18:13:03 +0000 | [diff] [blame] | 27 | b:get_table("events"):open_perf_buffer(print_readline, "struct { uint64_t pid; char str[80]; }", nil) |
Vicent Marti | df11f32 | 2016-03-30 17:31:19 +0200 | [diff] [blame] | 28 | |
| 29 | print("%-9s %-6s %s" % {"TIME", "PID", "COMMAND"}) |
Teng Qin | dbf0029 | 2018-02-28 21:47:50 -0800 | [diff] [blame] | 30 | b:perf_buffer_poll_loop() |
Vicent Marti | df11f32 | 2016-03-30 17:31:19 +0200 | [diff] [blame] | 31 | end |