1*387f9dfdSAndroid Build Coastguard Worker#!/usr/bin/env bcc-lua 2*387f9dfdSAndroid Build Coastguard Worker--[[ 3*387f9dfdSAndroid Build Coastguard WorkerCopyright 2016 Marek Vavrusa <[email protected]> 4*387f9dfdSAndroid Build Coastguard Worker 5*387f9dfdSAndroid Build Coastguard WorkerLicensed under the Apache License, Version 2.0 (the "License"); 6*387f9dfdSAndroid Build Coastguard Workeryou may not use this file except in compliance with the License. 7*387f9dfdSAndroid Build Coastguard WorkerYou may obtain a copy of the License at 8*387f9dfdSAndroid Build Coastguard Worker 9*387f9dfdSAndroid Build Coastguard Workerhttp://www.apache.org/licenses/LICENSE-2.0 10*387f9dfdSAndroid Build Coastguard Worker 11*387f9dfdSAndroid Build Coastguard WorkerUnless required by applicable law or agreed to in writing, software 12*387f9dfdSAndroid Build Coastguard Workerdistributed under the License is distributed on an "AS IS" BASIS, 13*387f9dfdSAndroid Build Coastguard WorkerWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*387f9dfdSAndroid Build Coastguard WorkerSee the License for the specific language governing permissions and 15*387f9dfdSAndroid Build Coastguard Workerlimitations under the License. 16*387f9dfdSAndroid Build Coastguard Worker]] 17*387f9dfdSAndroid Build Coastguard Worker-- Simple tracing example that executes a program on 18*387f9dfdSAndroid Build Coastguard Worker-- return from sys_write() and tracks the number of hits 19*387f9dfdSAndroid Build Coastguard Workerlocal ffi = require('ffi') 20*387f9dfdSAndroid Build Coastguard Workerlocal bpf = require('bpf') 21*387f9dfdSAndroid Build Coastguard Workerlocal S = require('syscall') 22*387f9dfdSAndroid Build Coastguard Worker 23*387f9dfdSAndroid Build Coastguard Worker-- Shared part of the program 24*387f9dfdSAndroid Build Coastguard Workerlocal map = bpf.map('array', 1) 25*387f9dfdSAndroid Build Coastguard Worker-- Kernel-space part of the program 26*387f9dfdSAndroid Build Coastguard Workerlocal probe = bpf.kprobe('myprobe:sys_write', function (ptregs) 27*387f9dfdSAndroid Build Coastguard Worker xadd(map[0], 1) 28*387f9dfdSAndroid Build Coastguard Workerend, true) 29*387f9dfdSAndroid Build Coastguard Worker-- User-space part of the program 30*387f9dfdSAndroid Build Coastguard Workerpcall(function() 31*387f9dfdSAndroid Build Coastguard Worker for _ = 1, 10 do 32*387f9dfdSAndroid Build Coastguard Worker print('hits: ', tonumber(map[0])) 33*387f9dfdSAndroid Build Coastguard Worker S.sleep(1) 34*387f9dfdSAndroid Build Coastguard Worker end 35*387f9dfdSAndroid Build Coastguard Workerend) 36