xref: /aosp_15_r20/external/perfetto/docs/data-sources/syscalls.md (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker# System calls
2*6dbdd20aSAndroid Build Coastguard Worker
3*6dbdd20aSAndroid Build Coastguard WorkerOn Linux and Android (userdebug builds only) Perfetto can keep track of system
4*6dbdd20aSAndroid Build Coastguard Workercalls.
5*6dbdd20aSAndroid Build Coastguard Worker
6*6dbdd20aSAndroid Build Coastguard WorkerRight now only the syscall number is recorded in the trace, the arguments are
7*6dbdd20aSAndroid Build Coastguard Workernot stored to limit the trace size overhead.
8*6dbdd20aSAndroid Build Coastguard Worker
9*6dbdd20aSAndroid Build Coastguard WorkerAt import time, the Trace Processor uses an internal syscall mapping table,
10*6dbdd20aSAndroid Build Coastguard Workercurrently supporting x86, x86_64, ArmEabi, aarch32 and aarch64. These tables are
11*6dbdd20aSAndroid Build Coastguard Workergenerated through the
12*6dbdd20aSAndroid Build Coastguard Worker[`extract_linux_syscall_tables`](/tools/extract_linux_syscall_tables) script.
13*6dbdd20aSAndroid Build Coastguard Worker
14*6dbdd20aSAndroid Build Coastguard Worker## UI
15*6dbdd20aSAndroid Build Coastguard Worker
16*6dbdd20aSAndroid Build Coastguard WorkerAt the UI level system calls are shown inlined with the per-thread slice tracks:
17*6dbdd20aSAndroid Build Coastguard Worker
18*6dbdd20aSAndroid Build Coastguard Worker![](/docs/images/syscalls.png 'System calls in the thread tracks')
19*6dbdd20aSAndroid Build Coastguard Worker
20*6dbdd20aSAndroid Build Coastguard Worker## SQL
21*6dbdd20aSAndroid Build Coastguard Worker
22*6dbdd20aSAndroid Build Coastguard WorkerAt the SQL level, syscalls are no different than any other userspace slice
23*6dbdd20aSAndroid Build Coastguard Workerevent. They get interleaved in the per-thread slice stack and can be easily
24*6dbdd20aSAndroid Build Coastguard Workerfiltered by looking for the 'sys\_' prefix:
25*6dbdd20aSAndroid Build Coastguard Worker
26*6dbdd20aSAndroid Build Coastguard Worker```sql
27*6dbdd20aSAndroid Build Coastguard Workerselect ts, dur, t.name as thread, s.name, depth from slices as s
28*6dbdd20aSAndroid Build Coastguard Workerleft join thread_track as tt on s.track_id = tt.id
29*6dbdd20aSAndroid Build Coastguard Workerleft join thread as t on tt.utid = t.utid
30*6dbdd20aSAndroid Build Coastguard Workerwhere s.name like 'sys_%'
31*6dbdd20aSAndroid Build Coastguard Worker```
32*6dbdd20aSAndroid Build Coastguard Worker
33*6dbdd20aSAndroid Build Coastguard Worker| ts              | dur       | thread          | name            |
34*6dbdd20aSAndroid Build Coastguard Worker| --------------- | --------- | --------------- | --------------- |
35*6dbdd20aSAndroid Build Coastguard Worker| 856325324372751 | 439867648 | s.nexuslauncher | sys_epoll_pwait |
36*6dbdd20aSAndroid Build Coastguard Worker| 856325324376970 | 990       | FpsThrottlerThr | sys_recvfrom    |
37*6dbdd20aSAndroid Build Coastguard Worker| 856325324378376 | 2657      | surfaceflinger  | sys_ioctl       |
38*6dbdd20aSAndroid Build Coastguard Worker| 856325324419574 | 1250      | android.anim.lf | sys_recvfrom    |
39*6dbdd20aSAndroid Build Coastguard Worker| 856325324428168 | 27344     | android.anim.lf | sys_ioctl       |
40*6dbdd20aSAndroid Build Coastguard Worker| 856325324451345 | 573       | FpsThrottlerThr | sys_getuid      |
41*6dbdd20aSAndroid Build Coastguard Worker
42*6dbdd20aSAndroid Build Coastguard Worker## TraceConfig
43*6dbdd20aSAndroid Build Coastguard Worker
44*6dbdd20aSAndroid Build Coastguard Worker```protobuf
45*6dbdd20aSAndroid Build Coastguard Workerdata_sources: {
46*6dbdd20aSAndroid Build Coastguard Worker    config {
47*6dbdd20aSAndroid Build Coastguard Worker        name: "linux.ftrace"
48*6dbdd20aSAndroid Build Coastguard Worker        ftrace_config {
49*6dbdd20aSAndroid Build Coastguard Worker            ftrace_events: "raw_syscalls/sys_enter"
50*6dbdd20aSAndroid Build Coastguard Worker            ftrace_events: "raw_syscalls/sys_exit"
51*6dbdd20aSAndroid Build Coastguard Worker        }
52*6dbdd20aSAndroid Build Coastguard Worker    }
53*6dbdd20aSAndroid Build Coastguard Worker}
54*6dbdd20aSAndroid Build Coastguard Worker```
55