xref: /aosp_15_r20/external/bcc/examples/lua/kprobe-write.lua (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
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