1*387f9dfdSAndroid Build Coastguard Worker#!/usr/bin/python 2*387f9dfdSAndroid Build Coastguard Worker# @lint-avoid-python-3-compatibility-imports 3*387f9dfdSAndroid Build Coastguard Worker# 4*387f9dfdSAndroid Build Coastguard Worker# syncsnoop Trace sync() syscall. 5*387f9dfdSAndroid Build Coastguard Worker# For Linux, uses BCC, eBPF. Embedded C. 6*387f9dfdSAndroid Build Coastguard Worker# 7*387f9dfdSAndroid Build Coastguard Worker# Written as a basic example of BCC trace & reformat. See 8*387f9dfdSAndroid Build Coastguard Worker# examples/hello_world.py for a BCC trace with default output example. 9*387f9dfdSAndroid Build Coastguard Worker# 10*387f9dfdSAndroid Build Coastguard Worker# Copyright (c) 2015 Brendan Gregg. 11*387f9dfdSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License") 12*387f9dfdSAndroid Build Coastguard Worker# 13*387f9dfdSAndroid Build Coastguard Worker# 13-Aug-2015 Brendan Gregg Created this. 14*387f9dfdSAndroid Build Coastguard Worker 15*387f9dfdSAndroid Build Coastguard Workerfrom __future__ import print_function 16*387f9dfdSAndroid Build Coastguard Workerfrom bcc import BPF 17*387f9dfdSAndroid Build Coastguard Worker 18*387f9dfdSAndroid Build Coastguard Worker# load BPF program 19*387f9dfdSAndroid Build Coastguard Workerb = BPF(text=""" 20*387f9dfdSAndroid Build Coastguard Workervoid kprobe__sys_sync(void *ctx) { 21*387f9dfdSAndroid Build Coastguard Worker bpf_trace_printk("sync()\\n"); 22*387f9dfdSAndroid Build Coastguard Worker}; 23*387f9dfdSAndroid Build Coastguard Worker""") 24*387f9dfdSAndroid Build Coastguard Worker 25*387f9dfdSAndroid Build Coastguard Worker# header 26*387f9dfdSAndroid Build Coastguard Workerprint("%-18s %s" % ("TIME(s)", "CALL")) 27*387f9dfdSAndroid Build Coastguard Worker 28*387f9dfdSAndroid Build Coastguard Worker# format output 29*387f9dfdSAndroid Build Coastguard Workerwhile 1: 30*387f9dfdSAndroid Build Coastguard Worker (task, pid, cpu, flags, ts, msg) = b.trace_fields() 31*387f9dfdSAndroid Build Coastguard Worker print("%-18.9f %s" % (ts, msg)) 32