/
usr
/
src
/
linux-headers-5.15.0-181
/
include
/
uapi
/
linux
/
/usr/src/linux-headers-5.15.0-181/include/uapi/linux
mkdir
upload
Name
Size
Mode
Actions
android/
-
0755
rm
byteorder/
-
0755
rm
caif/
-
0755
rm
can/
-
0755
rm
cifs/
-
0755
rm
dvb/
-
0755
rm
genwqe/
-
0755
rm
hdlc/
-
0755
rm
hsi/
-
0755
rm
iio/
-
0755
rm
isdn/
-
0755
rm
misc/
-
0755
rm
mmc/
-
0755
rm
netfilter/
-
0755
rm
netfilter_arp/
-
0755
rm
netfilter_bridge/
-
0755
rm
netfilter_ipv4/
-
0755
rm
netfilter_ipv6/
-
0755
rm
nfsd/
-
0755
rm
raid/
-
0755
rm
sched/
-
0755
rm
spi/
-
0755
rm
sunrpc/
-
0755
rm
surface_aggregator/
-
0755
rm
tc_act/
-
0755
rm
tc_ematch/
-
0755
rm
usb/
-
0755
rm
a.out.h
6959
0644
edit
dl
rm
acct.h
4013
0644
edit
dl
rm
acrn.h
16705
0644
edit
dl
rm
adb.h
1155
0644
edit
dl
rm
adfs_fs.h
1008
0644
edit
dl
rm
affs_hardblocks.h
1578
0644
edit
dl
rm
agpgart.h
4001
0644
edit
dl
rm
aio_abi.h
3398
0644
edit
dl
rm
am437x-vpfe.h
3681
0644
edit
dl
rm
apm_bios.h
3698
0644
edit
dl
rm
arcfb.h
213
0644
edit
dl
rm
arm_sdei.h
2766
0644
edit
dl
rm
aspeed-lpc-ctrl.h
1795
0644
edit
dl
rm
aspeed-p2a-ctrl.h
1921
0644
edit
dl
rm
atalk.h
1038
0644
edit
dl
rm
atm.h
7937
0644
edit
dl
rm
atmapi.h
952
0644
edit
dl
rm
atmarp.h
1296
0644
edit
dl
rm
atmbr2684.h
3271
0644
edit
dl
rm
atmclip.h
576
0644
edit
dl
rm
atmdev.h
7699
0644
edit
dl
rm
atmioc.h
1647
0644
edit
dl
rm
atmlec.h
2381
0644
edit
dl
rm
atmmpc.h
4226
0644
edit
dl
rm
atmppp.h
639
0644
edit
dl
rm
atmsap.h
4970
0644
edit
dl
rm
atmsvc.h
1853
0644
edit
dl
rm
atm_eni.h
648
0644
edit
dl
rm
atm_he.h
406
0644
edit
dl
rm
atm_idt77105.h
955
0644
edit
dl
rm
atm_nicstar.h
1278
0644
edit
dl
rm
atm_tcp.h
1637
0644
edit
dl
rm
atm_zatm.h
1540
0644
edit
dl
rm
audit.h
21267
0644
edit
dl
rm
aufs_type.h
12641
0644
edit
dl
rm
auto_dev-ioctl.h
4996
0644
edit
dl
rm
auto_fs.h
6450
0644
edit
dl
rm
auto_fs4.h
466
0644
edit
dl
rm
auxvec.h
1612
0644
edit
dl
rm
ax25.h
2824
0644
edit
dl
rm
batadv_packet.h
20360
0644
edit
dl
rm
batman_adv.h
16902
0644
edit
dl
rm
baycom.h
883
0644
edit
dl
rm
bcache.h
9910
0644
edit
dl
rm
bcm933xx_hcs.h
419
0644
edit
dl
rm
bfs_fs.h
1905
0644
edit
dl
rm
binfmts.h
791
0644
edit
dl
rm
blkpg.h
953
0644
edit
dl
rm
blktrace_api.h
4716
0644
edit
dl
rm
blkzoned.h
6508
0644
edit
dl
rm
bpf.h
235084
0644
edit
dl
rm
bpfilter.h
480
0644
edit
dl
rm
bpf_common.h
1382
0644
edit
dl
rm
bpf_perf_event.h
544
0644
edit
dl
rm
bpqether.h
981
0644
edit
dl
rm
bsg.h
2509
0644
edit
dl
rm
bt-bmc.h
587
0644
edit
dl
rm
btf.h
4811
0644
edit
dl
rm
btrfs.h
30904
0644
edit
dl
rm
btrfs_tree.h
27392
0644
edit
dl
rm
can.h
9268
0644
edit
dl
rm
capability.h
13547
0644
edit
dl
rm
capi.h
3157
0644
edit
dl
rm
cciss_defs.h
3281
0644
edit
dl
rm
cciss_ioctl.h
2790
0644
edit
dl
rm
ccs.h
767
0644
edit
dl
rm
cdrom.h
28949
0644
edit
dl
rm
cec-funcs.h
53453
0644
edit
dl
rm
cec.h
41334
0644
edit
dl
rm
cfm_bridge.h
1466
0644
edit
dl
rm
cgroupstats.h
2219
0644
edit
dl
rm
chio.h
5304
0644
edit
dl
rm
close_range.h
392
0644
edit
dl
rm
cm4000_cs.h
1821
0644
edit
dl
rm
cn_proc.h
3471
0644
edit
dl
rm
coda.h
18393
0644
edit
dl
rm
coff.h
12564
0644
edit
dl
rm
connector.h
2268
0644
edit
dl
rm
const.h
1006
0644
edit
dl
rm
coresight-stm.h
747
0644
edit
dl
rm
cramfs_fs.h
3570
0644
edit
dl
rm
cryptouser.h
5336
0644
edit
dl
rm
cuda.h
920
0644
edit
dl
rm
cxl_mem.h
6489
0644
edit
dl
rm
cyclades.h
984
0644
edit
dl
rm
cycx_cfm.h
2990
0644
edit
dl
rm
dcbnl.h
25292
0644
edit
dl
rm
dccp.h
6447
0644
edit
dl
rm
devlink.h
20207
0644
edit
dl
rm
dlm.h
2568
0644
edit
dl
rm
dlmconstants.h
5080
0644
edit
dl
rm
dlm_device.h
2599
0644
edit
dl
rm
dlm_netlink.h
1159
0644
edit
dl
rm
dlm_plock.h
909
0644
edit
dl
rm
dm-ioctl.h
11602
0644
edit
dl
rm
dm-log-userspace.h
15191
0644
edit
dl
rm
dma-buf.h
3779
0644
edit
dl
rm
dma-heap.h
1409
0644
edit
dl
rm
dns_resolver.h
3904
0644
edit
dl
rm
dqblk_xfs.h
9388
0644
edit
dl
rm
edd.h
5619
0644
edit
dl
rm
efs_fs_sb.h
2227
0644
edit
dl
rm
elf-em.h
2586
0644
edit
dl
rm
elf-fdpic.h
1139
0644
edit
dl
rm
elf.h
14180
0644
edit
dl
rm
errno.h
23
0644
edit
dl
rm
errqueue.h
2066
0644
edit
dl
rm
erspan.h
1074
0644
edit
dl
rm
ethtool.h
82554
0644
edit
dl
rm
ethtool_netlink.h
23088
0644
edit
dl
rm
eventpoll.h
3056
0644
edit
dl
rm
f2fs.h
3316
0644
edit
dl
rm
fadvise.h
842
0644
edit
dl
rm
falloc.h
3599
0644
edit
dl
rm
fanotify.h
7495
0644
edit
dl
rm
fb.h
16518
0644
edit
dl
rm
fcntl.h
4266
0644
edit
dl
rm
fd.h
12166
0644
edit
dl
rm
fdreg.h
5364
0644
edit
dl
rm
fib_rules.h
2036
0644
edit
dl
rm
fiemap.h
2790
0644
edit
dl
rm
filter.h
2265
0644
edit
dl
rm
firewire-cdev.h
44240
0644
edit
dl
rm
firewire-constants.h
3231
0644
edit
dl
rm
fou.h
909
0644
edit
dl
rm
fpga-dfl.h
8743
0644
edit
dl
rm
fs.h
12411
0644
edit
dl
rm
fscrypt.h
6638
0644
edit
dl
rm
fsi.h
2270
0644
edit
dl
rm
fsl_hypervisor.h
7316
0644
edit
dl
rm
fsl_mc.h
749
0644
edit
dl
rm
fsmap.h
4385
0644
edit
dl
rm
fsverity.h
3293
0644
edit
dl
rm
fuse.h
23048
0644
edit
dl
rm
futex.h
5145
0644
edit
dl
rm
gameport.h
912
0644
edit
dl
rm
genetlink.h
2190
0644
edit
dl
rm
gen_stats.h
1526
0644
edit
dl
rm
gfs2_ondisk.h
14769
0644
edit
dl
rm
gpio.h
19783
0644
edit
dl
rm
gsmmux.h
1144
0644
edit
dl
rm
gtp.h
731
0644
edit
dl
rm
hash_info.h
986
0644
edit
dl
rm
hdlc.h
652
0644
edit
dl
rm
hdlcdrv.h
2923
0644
edit
dl
rm
hdreg.h
22945
0644
edit
dl
rm
hid.h
1916
0644
edit
dl
rm
hiddev.h
6360
0644
edit
dl
rm
hidraw.h
2008
0644
edit
dl
rm
hpet.h
785
0644
edit
dl
rm
hsr_netlink.h
1101
0644
edit
dl
rm
hw_breakpoint.h
757
0644
edit
dl
rm
hyperv.h
10583
0644
edit
dl
rm
i2c-dev.h
1931
0644
edit
dl
rm
i2c.h
6905
0644
edit
dl
rm
i2o-dev.h
11646
0644
edit
dl
rm
i8k.h
1528
0644
edit
dl
rm
icmp.h
4800
0644
edit
dl
rm
icmpv6.h
4284
0644
edit
dl
rm
idxd.h
7624
0644
edit
dl
rm
if.h
11015
0644
edit
dl
rm
ife.h
351
0644
edit
dl
rm
if_addr.h
1912
0644
edit
dl
rm
if_addrlabel.h
721
0644
edit
dl
rm
if_alg.h
1566
0644
edit
dl
rm
if_arcnet.h
3717
0644
edit
dl
rm
if_arp.h
6604
0644
edit
dl
rm
if_bonding.h
5145
0644
edit
dl
rm
if_bridge.h
19121
0644
edit
dl
rm
if_cablemodem.h
986
0644
edit
dl
rm
if_eql.h
1364
0644
edit
dl
rm
if_ether.h
8457
0644
edit
dl
rm
if_fc.h
1738
0644
edit
dl
rm
if_fddi.h
4384
0644
edit
dl
rm
if_hippi.h
4235
0644
edit
dl
rm
if_infiniband.h
1245
0644
edit
dl
rm
if_link.h
31760
0644
edit
dl
rm
if_ltalk.h
225
0644
edit
dl
rm
if_macsec.h
6490
0644
edit
dl
rm
if_packet.h
8147
0644
edit
dl
rm
if_phonet.h
439
0644
edit
dl
rm
if_plip.h
660
0644
edit
dl
rm
if_ppp.h
29
0644
edit
dl
rm
if_pppol2tp.h
3318
0644
edit
dl
rm
if_pppox.h
4804
0644
edit
dl
rm
if_slip.h
872
0644
edit
dl
rm
if_team.h
2615
0644
edit
dl
rm
if_tun.h
4113
0644
edit
dl
rm
if_tunnel.h
4858
0644
edit
dl
rm
if_vlan.h
1846
0644
edit
dl
rm
if_x25.h
881
0644
edit
dl
rm
if_xdp.h
3011
0644
edit
dl
rm
igmp.h
3079
0644
edit
dl
rm
ila.h
1261
0644
edit
dl
rm
in.h
10897
0644
edit
dl
rm
in6.h
7593
0644
edit
dl
rm
inet_diag.h
5032
0644
edit
dl
rm
inotify.h
3307
0644
edit
dl
rm
input-event-codes.h
28894
0644
edit
dl
rm
input.h
16030
0644
edit
dl
rm
in_route.h
936
0644
edit
dl
rm
ioam6.h
2399
0644
edit
dl
rm
ioam6_genl.h
960
0644
edit
dl
rm
ioam6_iptunnel.h
451
0644
edit
dl
rm
ioctl.h
163
0644
edit
dl
rm
iommu.h
12031
0644
edit
dl
rm
ioprio.h
1471
0644
edit
dl
rm
io_uring.h
9795
0644
edit
dl
rm
ip.h
4828
0644
edit
dl
rm
ip6_tunnel.h
1953
0644
edit
dl
rm
ipc.h
2123
0644
edit
dl
rm
ipmi.h
15112
0644
edit
dl
rm
ipmi_bmc.h
503
0644
edit
dl
rm
ipmi_msgdefs.h
3430
0644
edit
dl
rm
ipsec.h
947
0644
edit
dl
rm
ipu-isys.h
481
0644
edit
dl
rm
ipu-psys.h
3663
0644
edit
dl
rm
ipv6.h
4341
0644
edit
dl
rm
ipv6_route.h
1923
0644
edit
dl
rm
ip_vs.h
14135
0644
edit
dl
rm
irqnr.h
104
0644
edit
dl
rm
iso_fs.h
6485
0644
edit
dl
rm
isst_if.h
5404
0644
edit
dl
rm
ivtv.h
3063
0644
edit
dl
rm
ivtvfb.h
1241
0644
edit
dl
rm
jffs2.h
6815
0644
edit
dl
rm
joystick.h
3449
0644
edit
dl
rm
kcm.h
822
0644
edit
dl
rm
kcmp.h
537
0644
edit
dl
rm
kcov.h
1959
0644
edit
dl
rm
kd.h
6311
0644
edit
dl
rm
kdev_t.h
441
0644
edit
dl
rm
kernel-page-flags.h
915
0644
edit
dl
rm
kernel.h
209
0644
edit
dl
rm
kernelcapi.h
1034
0644
edit
dl
rm
kexec.h
1970
0644
edit
dl
rm
keyboard.h
13474
0644
edit
dl
rm
keyctl.h
6010
0644
edit
dl
rm
kfd_ioctl.h
24151
0644
edit
dl
rm
kvm.h
60796
0644
edit
dl
rm
kvm_para.h
1016
0644
edit
dl
rm
l2tp.h
5788
0644
edit
dl
rm
landlock.h
4915
0644
edit
dl
rm
libc-compat.h
8304
0644
edit
dl
rm
limits.h
947
0644
edit
dl
rm
lirc.h
8144
0644
edit
dl
rm
llc.h
3179
0644
edit
dl
rm
loop.h
3512
0644
edit
dl
rm
lp.h
4205
0644
edit
dl
rm
lwtunnel.h
2238
0644
edit
dl
rm
magic.h
3801
0644
edit
dl
rm
major.h
4657
0644
edit
dl
rm
map_to_7segment.h
6608
0644
edit
dl
rm
matroxfb.h
1464
0644
edit
dl
rm
max2175.h
1035
0644
edit
dl
rm
mctp.h
736
0644
edit
dl
rm
mdio.h
17283
0644
edit
dl
rm
media-bus-format.h
6909
0644
edit
dl
rm
media.h
13223
0644
edit
dl
rm
mei.h
3475
0644
edit
dl
rm
membarrier.h
9377
0644
edit
dl
rm
memfd.h
1339
0644
edit
dl
rm
mempolicy.h
2583
0644
edit
dl
rm
meye.h
2529
0644
edit
dl
rm
mii.h
9511
0644
edit
dl
rm
minix_fs.h
2122
0644
edit
dl
rm
mman.h
1599
0644
edit
dl
rm
mmtimer.h
2117
0644
edit
dl
rm
module.h
270
0644
edit
dl
rm
mount.h
5107
0644
edit
dl
rm
mpls.h
2317
0644
edit
dl
rm
mpls_iptunnel.h
776
0644
edit
dl
rm
mptcp.h
5750
0644
edit
dl
rm
mqueue.h
2201
0644
edit
dl
rm
mroute.h
5937
0644
edit
dl
rm
mroute6.h
4945
0644
edit
dl
rm
mrp_bridge.h
1718
0644
edit
dl
rm
msdos_fs.h
6746
0644
edit
dl
rm
msg.h
3401
0644
edit
dl
rm
mtio.h
8175
0644
edit
dl
rm
nbd-netlink.h
2423
0644
edit
dl
rm
nbd.h
3039
0644
edit
dl
rm
ncsi.h
4828
0644
edit
dl
rm
ndctl.h
6793
0644
edit
dl
rm
neighbour.h
5124
0644
edit
dl
rm
net.h
2100
0644
edit
dl
rm
netconf.h
629
0644
edit
dl
rm
netdevice.h
2268
0644
edit
dl
rm
netfilter.h
1780
0644
edit
dl
rm
netfilter_arp.h
471
0644
edit
dl
rm
netfilter_bridge.h
1209
0644
edit
dl
rm
netfilter_ipv4.h
1548
0644
edit
dl
rm
netfilter_ipv6.h
1443
0644
edit
dl
rm
netlink.h
11717
0644
edit
dl
rm
netlink_diag.h
1550
0644
edit
dl
rm
netrom.h
807
0644
edit
dl
rm
net_dropmon.h
2886
0644
edit
dl
rm
net_namespace.h
730
0644
edit
dl
rm
net_tstamp.h
5571
0644
edit
dl
rm
nexthop.h
2835
0644
edit
dl
rm
nfc.h
11236
0644
edit
dl
rm
nfs.h
4481
0644
edit
dl
rm
nfs2.h
1468
0644
edit
dl
rm
nfs3.h
2468
0644
edit
dl
rm
nfs4.h
6506
0644
edit
dl
rm
nfs4_mount.h
1953
0644
edit
dl
rm
nfsacl.h
733
0644
edit
dl
rm
nfs_fs.h
1656
0644
edit
dl
rm
nfs_idmap.h
2258
0644
edit
dl
rm
nfs_mount.h
2142
0644
edit
dl
rm
nilfs2_api.h
7565
0644
edit
dl
rm
nilfs2_ondisk.h
18053
0644
edit
dl
rm
nitro_enclaves.h
13167
0644
edit
dl
rm
nl80211-vnd-intel.h
2937
0644
edit
dl
rm
nl80211.h
314008
0644
edit
dl
rm
nsfs.h
639
0644
edit
dl
rm
nubus.h
8206
0644
edit
dl
rm
nvme_ioctl.h
1676
0644
edit
dl
rm
nvram.h
547
0644
edit
dl
rm
omap3isp.h
21423
0644
edit
dl
rm
omapfb.h
5940
0644
edit
dl
rm
oom.h
526
0644
edit
dl
rm
openat2.h
1465
0644
edit
dl
rm
openvswitch.h
40695
0644
edit
dl
rm
packet_diag.h
1672
0644
edit
dl
rm
param.h
141
0644
edit
dl
rm
parport.h
3659
0644
edit
dl
rm
patchkey.h
965
0644
edit
dl
rm
pci.h
1395
0644
edit
dl
rm
pcitest.h
878
0644
edit
dl
rm
pci_regs.h
58656
0644
edit
dl
rm
perf_event.h
39781
0644
edit
dl
rm
personality.h
2112
0644
edit
dl
rm
pfkeyv2.h
10569
0644
edit
dl
rm
pg.h
2409
0644
edit
dl
rm
phantom.h
1654
0644
edit
dl
rm
phonet.h
4640
0644
edit
dl
rm
pidfd.h
271
0644
edit
dl
rm
pktcdvd.h
2702
0644
edit
dl
rm
pkt_cls.h
18171
0644
edit
dl
rm
pkt_sched.h
30106
0644
edit
dl
rm
pmu.h
5459
0644
edit
dl
rm
poll.h
22
0644
edit
dl
rm
posix_acl.h
1254
0644
edit
dl
rm
posix_acl_xattr.h
1115
0644
edit
dl
rm
posix_types.h
1098
0644
edit
dl
rm
ppdev.h
3300
0644
edit
dl
rm
ppp-comp.h
2542
0644
edit
dl
rm
ppp-ioctl.h
5763
0644
edit
dl
rm
ppp_defs.h
5572
0644
edit
dl
rm
pps.h
4734
0644
edit
dl
rm
pr.h
1088
0644
edit
dl
rm
prctl.h
9395
0644
edit
dl
rm
psample.h
2271
0644
edit
dl
rm
psci.h
4343
0644
edit
dl
rm
psp-sev.h
4053
0644
edit
dl
rm
ptp_clock.h
7456
0644
edit
dl
rm
ptrace.h
4426
0644
edit
dl
rm
qemu_fw_cfg.h
2469
0644
edit
dl
rm
qnx4_fs.h
2328
0644
edit
dl
rm
qnxtypes.h
624
0644
edit
dl
rm
qrtr.h
878
0644
edit
dl
rm
quota.h
6306
0644
edit
dl
rm
radeonfb.h
360
0644
edit
dl
rm
random.h
1430
0644
edit
dl
rm
rds.h
11168
0644
edit
dl
rm
reboot.h
1358
0644
edit
dl
rm
reiserfs_fs.h
775
0644
edit
dl
rm
reiserfs_xattr.h
533
0644
edit
dl
rm
remoteproc_cdev.h
1112
0644
edit
dl
rm
resource.h
2388
0644
edit
dl
rm
rfkill.h
6118
0644
edit
dl
rm
rio_cm_cdev.h
3248
0644
edit
dl
rm
rio_mport_cdev.h
9330
0644
edit
dl
rm
rkisp1-config.h
31377
0644
edit
dl
rm
romfs_fs.h
1238
0644
edit
dl
rm
rose.h
2232
0644
edit
dl
rm
route.h
2392
0644
edit
dl
rm
rpl.h
824
0644
edit
dl
rm
rpl_iptunnel.h
434
0644
edit
dl
rm
rpmsg.h
813
0644
edit
dl
rm
rpmsg_types.h
303
0644
edit
dl
rm
rseq.h
4721
0644
edit
dl
rm
rtc.h
4610
0644
edit
dl
rm
rtnetlink.h
20784
0644
edit
dl
rm
rxrpc.h
4937
0644
edit
dl
rm
scc.h
4639
0644
edit
dl
rm
sched.h
6281
0644
edit
dl
rm
scif_ioctl.h
6382
0644
edit
dl
rm
screen_info.h
2494
0644
edit
dl
rm
sctp.h
36099
0644
edit
dl
rm
seccomp.h
5774
0644
edit
dl
rm
securebits.h
2719
0644
edit
dl
rm
sed-opal.h
3777
0644
edit
dl
rm
seg6.h
1180
0644
edit
dl
rm
seg6_genl.h
599
0644
edit
dl
rm
seg6_hmac.h
433
0644
edit
dl
rm
seg6_iptunnel.h
994
0644
edit
dl
rm
seg6_local.h
3338
0644
edit
dl
rm
selinux_netlink.h
1221
0644
edit
dl
rm
sem.h
3094
0644
edit
dl
rm
serial.h
3825
0644
edit
dl
rm
serial_core.h
6129
0644
edit
dl
rm
serial_reg.h
15552
0644
edit
dl
rm
serio.h
2114
0644
edit
dl
rm
shm.h
3835
0644
edit
dl
rm
signal.h
403
0644
edit
dl
rm
signalfd.h
1248
0644
edit
dl
rm
smc.h
8019
0644
edit
dl
rm
smc_diag.h
2850
0644
edit
dl
rm
smiapp.h
1058
0644
edit
dl
rm
snmp.h
13950
0644
edit
dl
rm
socket.h
955
0644
edit
dl
rm
sockios.h
6846
0644
edit
dl
rm
sock_diag.h
1316
0644
edit
dl
rm
sonet.h
2305
0644
edit
dl
rm
sonypi.h
5324
0644
edit
dl
rm
sound.h
1252
0644
edit
dl
rm
soundcard.h
46170
0644
edit
dl
rm
stat.h
6767
0644
edit
dl
rm
stddef.h
1577
0644
edit
dl
rm
stm.h
1290
0644
edit
dl
rm
string.h
296
0644
edit
dl
rm
suspend_ioctls.h
1431
0644
edit
dl
rm
swab.h
7016
0644
edit
dl
rm
switchtec_ioctl.h
5272
0644
edit
dl
rm
synclink.h
9000
0644
edit
dl
rm
sync_file.h
2899
0644
edit
dl
rm
sysctl.h
25988
0644
edit
dl
rm
sysinfo.h
1049
0644
edit
dl
rm
target_core_user.h
4557
0644
edit
dl
rm
taskstats.h
7290
0644
edit
dl
rm
tcp.h
11949
0644
edit
dl
rm
tcp_metrics.h
1549
0644
edit
dl
rm
tee.h
13592
0644
edit
dl
rm
termios.h
172
0644
edit
dl
rm
thermal.h
3088
0644
edit
dl
rm
time.h
1793
0644
edit
dl
rm
timerfd.h
951
0644
edit
dl
rm
times.h
278
0644
edit
dl
rm
timex.h
7884
0644
edit
dl
rm
time_types.h
1282
0644
edit
dl
rm
tiocl.h
1729
0644
edit
dl
rm
tipc.h
8805
0644
edit
dl
rm
tipc_config.h
14838
0644
edit
dl
rm
tipc_netlink.h
9395
0644
edit
dl
rm
tipc_sockets_diag.h
483
0644
edit
dl
rm
tls.h
4918
0644
edit
dl
rm
toshiba.h
1945
0644
edit
dl
rm
tty.h
1600
0644
edit
dl
rm
tty_flags.h
4553
0644
edit
dl
rm
types.h
1738
0644
edit
dl
rm
udf_fs_i.h
697
0644
edit
dl
rm
udmabuf.h
658
0644
edit
dl
rm
udp.h
1703
0644
edit
dl
rm
uhid.h
4655
0644
edit
dl
rm
uinput.h
9276
0644
edit
dl
rm
uio.h
781
0644
edit
dl
rm
uleds.h
813
0644
edit
dl
rm
ultrasound.h
4562
0644
edit
dl
rm
um_timetravel.h
3976
0644
edit
dl
rm
un.h
384
0644
edit
dl
rm
unistd.h
220
0644
edit
dl
rm
unix_diag.h
1328
0644
edit
dl
rm
usbdevice_fs.h
8374
0644
edit
dl
rm
usbip.h
655
0644
edit
dl
rm
userfaultfd.h
9089
0644
edit
dl
rm
userio.h
1516
0644
edit
dl
rm
utime.h
223
0644
edit
dl
rm
utsname.h
684
0644
edit
dl
rm
uuid.h
1371
0644
edit
dl
rm
uvcvideo.h
2581
0644
edit
dl
rm
v4l2-common.h
4203
0644
edit
dl
rm
v4l2-controls.h
86453
0644
edit
dl
rm
v4l2-dv-timings.h
31562
0644
edit
dl
rm
v4l2-mediabus.h
5461
0644
edit
dl
rm
v4l2-subdev.h
7782
0644
edit
dl
rm
vboxguest.h
9368
0644
edit
dl
rm
vbox_err.h
7257
0644
edit
dl
rm
vbox_vmmdev_types.h
11591
0644
edit
dl
rm
vdpa.h
1183
0644
edit
dl
rm
vduse.h
8306
0644
edit
dl
rm
veth.h
224
0644
edit
dl
rm
vfio.h
53809
0644
edit
dl
rm
vfio_ccw.h
1257
0644
edit
dl
rm
vfio_zdev.h
2542
0644
edit
dl
rm
vhost.h
6418
0644
edit
dl
rm
vhost_types.h
4024
0644
edit
dl
rm
videodev2.h
96187
0644
edit
dl
rm
virtio_9p.h
2053
0644
edit
dl
rm
virtio_balloon.h
5279
0644
edit
dl
rm
virtio_blk.h
6888
0644
edit
dl
rm
virtio_bt.h
787
0644
edit
dl
rm
virtio_config.h
4063
0644
edit
dl
rm
virtio_console.h
3171
0644
edit
dl
rm
virtio_crypto.h
13887
0644
edit
dl
rm
virtio_fs.h
588
0644
edit
dl
rm
virtio_gpio.h
1039
0644
edit
dl
rm
virtio_gpu.h
11053
0644
edit
dl
rm
virtio_i2c.h
1004
0644
edit
dl
rm
virtio_ids.h
4303
0644
edit
dl
rm
virtio_input.h
2515
0644
edit
dl
rm
virtio_iommu.h
3793
0644
edit
dl
rm
virtio_mem.h
6955
0644
edit
dl
rm
virtio_mmio.h
4969
0644
edit
dl
rm
virtio_net.h
13831
0644
edit
dl
rm
virtio_pci.h
7406
0644
edit
dl
rm
virtio_pcidev.h
2462
0644
edit
dl
rm
virtio_pmem.h
651
0644
edit
dl
rm
virtio_ring.h
8606
0644
edit
dl
rm
virtio_rng.h
265
0644
edit
dl
rm
virtio_scmi.h
652
0644
edit
dl
rm
virtio_scsi.h
6085
0644
edit
dl
rm
virtio_snd.h
9304
0644
edit
dl
rm
virtio_types.h
2168
0644
edit
dl
rm
virtio_vsock.h
3363
0644
edit
dl
rm
vmcore.h
470
0644
edit
dl
rm
vm_sockets.h
6609
0644
edit
dl
rm
vm_sockets_diag.h
978
0644
edit
dl
rm
vsockmon.h
1895
0644
edit
dl
rm
vt.h
3074
0644
edit
dl
rm
vtpm_proxy.h
1734
0644
edit
dl
rm
wait.h
697
0644
edit
dl
rm
watchdog.h
2350
0644
edit
dl
rm
watch_queue.h
3505
0644
edit
dl
rm
wireguard.h
7748
0644
edit
dl
rm
wireless.h
42804
0644
edit
dl
rm
wmi.h
1718
0644
edit
dl
rm
wwan.h
310
0644
edit
dl
rm
x25.h
3562
0644
edit
dl
rm
xattr.h
3038
0644
edit
dl
rm
xdp_diag.h
1468
0644
edit
dl
rm
xfrm.h
12433
0644
edit
dl
rm
xilinx-v4l2-controls.h
2976
0644
edit
dl
rm
zorro.h
3266
0644
edit
dl
rm
zorro_ids.h
30065
0644
edit
dl
rm
Edit:
/usr/src/linux-headers-5.15.0-181/include/uapi/linux/perf_event.h
(39781B)
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Performance events: * * Copyright (C) 2008-2009, Thomas Gleixner <tglx@linutronix.de> * Copyright (C) 2008-2011, Red Hat, Inc., Ingo Molnar * Copyright (C) 2008-2011, Red Hat, Inc., Peter Zijlstra * * Data type definitions, declarations, prototypes. * * Started by: Thomas Gleixner and Ingo Molnar * * For licencing details see kernel-base/COPYING */ #ifndef _UAPI_LINUX_PERF_EVENT_H #define _UAPI_LINUX_PERF_EVENT_H #include <linux/types.h> #include <linux/ioctl.h> #include <asm/byteorder.h> /* * User-space ABI bits: */ /* * attr.type */ enum perf_type_id { PERF_TYPE_HARDWARE = 0, PERF_TYPE_SOFTWARE = 1, PERF_TYPE_TRACEPOINT = 2, PERF_TYPE_HW_CACHE = 3, PERF_TYPE_RAW = 4, PERF_TYPE_BREAKPOINT = 5, PERF_TYPE_MAX, /* non-ABI */ }; /* * attr.config layout for type PERF_TYPE_HARDWARE and PERF_TYPE_HW_CACHE * PERF_TYPE_HARDWARE: 0xEEEEEEEE000000AA * AA: hardware event ID * EEEEEEEE: PMU type ID * PERF_TYPE_HW_CACHE: 0xEEEEEEEE00DDCCBB * BB: hardware cache ID * CC: hardware cache op ID * DD: hardware cache op result ID * EEEEEEEE: PMU type ID * If the PMU type ID is 0, the PERF_TYPE_RAW will be applied. */ #define PERF_PMU_TYPE_SHIFT 32 #define PERF_HW_EVENT_MASK 0xffffffff /* * Generalized performance event event_id types, used by the * attr.event_id parameter of the sys_perf_event_open() * syscall: */ enum perf_hw_id { /* * Common hardware events, generalized by the kernel: */ PERF_COUNT_HW_CPU_CYCLES = 0, PERF_COUNT_HW_INSTRUCTIONS = 1, PERF_COUNT_HW_CACHE_REFERENCES = 2, PERF_COUNT_HW_CACHE_MISSES = 3, PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4, PERF_COUNT_HW_BRANCH_MISSES = 5, PERF_COUNT_HW_BUS_CYCLES = 6, PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7, PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8, PERF_COUNT_HW_REF_CPU_CYCLES = 9, PERF_COUNT_HW_MAX, /* non-ABI */ }; /* * Generalized hardware cache events: * * { L1-D, L1-I, LLC, ITLB, DTLB, BPU, NODE } x * { read, write, prefetch } x * { accesses, misses } */ enum perf_hw_cache_id { PERF_COUNT_HW_CACHE_L1D = 0, PERF_COUNT_HW_CACHE_L1I = 1, PERF_COUNT_HW_CACHE_LL = 2, PERF_COUNT_HW_CACHE_DTLB = 3, PERF_COUNT_HW_CACHE_ITLB = 4, PERF_COUNT_HW_CACHE_BPU = 5, PERF_COUNT_HW_CACHE_NODE = 6, PERF_COUNT_HW_CACHE_MAX, /* non-ABI */ }; enum perf_hw_cache_op_id { PERF_COUNT_HW_CACHE_OP_READ = 0, PERF_COUNT_HW_CACHE_OP_WRITE = 1, PERF_COUNT_HW_CACHE_OP_PREFETCH = 2, PERF_COUNT_HW_CACHE_OP_MAX, /* non-ABI */ }; enum perf_hw_cache_op_result_id { PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0, PERF_COUNT_HW_CACHE_RESULT_MISS = 1, PERF_COUNT_HW_CACHE_RESULT_MAX, /* non-ABI */ }; /* * Special "software" events provided by the kernel, even if the hardware * does not support performance events. These events measure various * physical and sw events of the kernel (and allow the profiling of them as * well): */ enum perf_sw_ids { PERF_COUNT_SW_CPU_CLOCK = 0, PERF_COUNT_SW_TASK_CLOCK = 1, PERF_COUNT_SW_PAGE_FAULTS = 2, PERF_COUNT_SW_CONTEXT_SWITCHES = 3, PERF_COUNT_SW_CPU_MIGRATIONS = 4, PERF_COUNT_SW_PAGE_FAULTS_MIN = 5, PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6, PERF_COUNT_SW_ALIGNMENT_FAULTS = 7, PERF_COUNT_SW_EMULATION_FAULTS = 8, PERF_COUNT_SW_DUMMY = 9, PERF_COUNT_SW_BPF_OUTPUT = 10, PERF_COUNT_SW_CGROUP_SWITCHES = 11, PERF_COUNT_SW_MAX, /* non-ABI */ }; /* * Bits that can be set in attr.sample_type to request information * in the overflow packets. */ enum perf_event_sample_format { PERF_SAMPLE_IP = 1U << 0, PERF_SAMPLE_TID = 1U << 1, PERF_SAMPLE_TIME = 1U << 2, PERF_SAMPLE_ADDR = 1U << 3, PERF_SAMPLE_READ = 1U << 4, PERF_SAMPLE_CALLCHAIN = 1U << 5, PERF_SAMPLE_ID = 1U << 6, PERF_SAMPLE_CPU = 1U << 7, PERF_SAMPLE_PERIOD = 1U << 8, PERF_SAMPLE_STREAM_ID = 1U << 9, PERF_SAMPLE_RAW = 1U << 10, PERF_SAMPLE_BRANCH_STACK = 1U << 11, PERF_SAMPLE_REGS_USER = 1U << 12, PERF_SAMPLE_STACK_USER = 1U << 13, PERF_SAMPLE_WEIGHT = 1U << 14, PERF_SAMPLE_DATA_SRC = 1U << 15, PERF_SAMPLE_IDENTIFIER = 1U << 16, PERF_SAMPLE_TRANSACTION = 1U << 17, PERF_SAMPLE_REGS_INTR = 1U << 18, PERF_SAMPLE_PHYS_ADDR = 1U << 19, PERF_SAMPLE_AUX = 1U << 20, PERF_SAMPLE_CGROUP = 1U << 21, PERF_SAMPLE_DATA_PAGE_SIZE = 1U << 22, PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23, PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24, PERF_SAMPLE_MAX = 1U << 25, /* non-ABI */ __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63, /* non-ABI; internal use */ }; #define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT) /* * values to program into branch_sample_type when PERF_SAMPLE_BRANCH is set * * If the user does not pass priv level information via branch_sample_type, * the kernel uses the event's priv level. Branch and event priv levels do * not have to match. Branch priv level is checked for permissions. * * The branch types can be combined, however BRANCH_ANY covers all types * of branches and therefore it supersedes all the other types. */ enum perf_branch_sample_type_shift { PERF_SAMPLE_BRANCH_USER_SHIFT = 0, /* user branches */ PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 1, /* kernel branches */ PERF_SAMPLE_BRANCH_HV_SHIFT = 2, /* hypervisor branches */ PERF_SAMPLE_BRANCH_ANY_SHIFT = 3, /* any branch types */ PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 4, /* any call branch */ PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 5, /* any return branch */ PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 6, /* indirect calls */ PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 7, /* transaction aborts */ PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 8, /* in transaction */ PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 9, /* not in transaction */ PERF_SAMPLE_BRANCH_COND_SHIFT = 10, /* conditional branches */ PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 11, /* call/ret stack */ PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT = 12, /* indirect jumps */ PERF_SAMPLE_BRANCH_CALL_SHIFT = 13, /* direct call */ PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT = 14, /* no flags */ PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15, /* no cycles */ PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16, /* save branch type */ PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17, /* save low level index of raw branch records */ PERF_SAMPLE_BRANCH_MAX_SHIFT /* non-ABI */ }; enum perf_branch_sample_type { PERF_SAMPLE_BRANCH_USER = 1U << PERF_SAMPLE_BRANCH_USER_SHIFT, PERF_SAMPLE_BRANCH_KERNEL = 1U << PERF_SAMPLE_BRANCH_KERNEL_SHIFT, PERF_SAMPLE_BRANCH_HV = 1U << PERF_SAMPLE_BRANCH_HV_SHIFT, PERF_SAMPLE_BRANCH_ANY = 1U << PERF_SAMPLE_BRANCH_ANY_SHIFT, PERF_SAMPLE_BRANCH_ANY_CALL = 1U << PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT, PERF_SAMPLE_BRANCH_ANY_RETURN = 1U << PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT, PERF_SAMPLE_BRANCH_IND_CALL = 1U << PERF_SAMPLE_BRANCH_IND_CALL_SHIFT, PERF_SAMPLE_BRANCH_ABORT_TX = 1U << PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT, PERF_SAMPLE_BRANCH_IN_TX = 1U << PERF_SAMPLE_BRANCH_IN_TX_SHIFT, PERF_SAMPLE_BRANCH_NO_TX = 1U << PERF_SAMPLE_BRANCH_NO_TX_SHIFT, PERF_SAMPLE_BRANCH_COND = 1U << PERF_SAMPLE_BRANCH_COND_SHIFT, PERF_SAMPLE_BRANCH_CALL_STACK = 1U << PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT, PERF_SAMPLE_BRANCH_IND_JUMP = 1U << PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT, PERF_SAMPLE_BRANCH_CALL = 1U << PERF_SAMPLE_BRANCH_CALL_SHIFT, PERF_SAMPLE_BRANCH_NO_FLAGS = 1U << PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT, PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT, PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT, PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT, PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT, }; /* * Common flow change classification */ enum { PERF_BR_UNKNOWN = 0, /* unknown */ PERF_BR_COND = 1, /* conditional */ PERF_BR_UNCOND = 2, /* unconditional */ PERF_BR_IND = 3, /* indirect */ PERF_BR_CALL = 4, /* function call */ PERF_BR_IND_CALL = 5, /* indirect function call */ PERF_BR_RET = 6, /* function return */ PERF_BR_SYSCALL = 7, /* syscall */ PERF_BR_SYSRET = 8, /* syscall return */ PERF_BR_COND_CALL = 9, /* conditional function call */ PERF_BR_COND_RET = 10, /* conditional function return */ PERF_BR_ERET = 11, /* exception return */ PERF_BR_IRQ = 12, /* irq */ PERF_BR_MAX, }; #define PERF_SAMPLE_BRANCH_PLM_ALL \ (PERF_SAMPLE_BRANCH_USER|\ PERF_SAMPLE_BRANCH_KERNEL|\ PERF_SAMPLE_BRANCH_HV) /* * Values to determine ABI of the registers dump. */ enum perf_sample_regs_abi { PERF_SAMPLE_REGS_ABI_NONE = 0, PERF_SAMPLE_REGS_ABI_32 = 1, PERF_SAMPLE_REGS_ABI_64 = 2, }; /* * Values for the memory transaction event qualifier, mostly for * abort events. Multiple bits can be set. */ enum { PERF_TXN_ELISION = (1 << 0), /* From elision */ PERF_TXN_TRANSACTION = (1 << 1), /* From transaction */ PERF_TXN_SYNC = (1 << 2), /* Instruction is related */ PERF_TXN_ASYNC = (1 << 3), /* Instruction not related */ PERF_TXN_RETRY = (1 << 4), /* Retry possible */ PERF_TXN_CONFLICT = (1 << 5), /* Conflict abort */ PERF_TXN_CAPACITY_WRITE = (1 << 6), /* Capacity write abort */ PERF_TXN_CAPACITY_READ = (1 << 7), /* Capacity read abort */ PERF_TXN_MAX = (1 << 8), /* non-ABI */ /* bits 32..63 are reserved for the abort code */ PERF_TXN_ABORT_MASK = (0xffffffffULL << 32), PERF_TXN_ABORT_SHIFT = 32, }; /* * The format of the data returned by read() on a perf event fd, * as specified by attr.read_format: * * struct read_format { * { u64 value; * { u64 time_enabled; } && PERF_FORMAT_TOTAL_TIME_ENABLED * { u64 time_running; } && PERF_FORMAT_TOTAL_TIME_RUNNING * { u64 id; } && PERF_FORMAT_ID * { u64 lost; } && PERF_FORMAT_LOST * } && !PERF_FORMAT_GROUP * * { u64 nr; * { u64 time_enabled; } && PERF_FORMAT_TOTAL_TIME_ENABLED * { u64 time_running; } && PERF_FORMAT_TOTAL_TIME_RUNNING * { u64 value; * { u64 id; } && PERF_FORMAT_ID * { u64 lost; } && PERF_FORMAT_LOST * } cntr[nr]; * } && PERF_FORMAT_GROUP * }; */ enum perf_event_read_format { PERF_FORMAT_TOTAL_TIME_ENABLED = 1U << 0, PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1, PERF_FORMAT_ID = 1U << 2, PERF_FORMAT_GROUP = 1U << 3, PERF_FORMAT_LOST = 1U << 4, PERF_FORMAT_MAX = 1U << 5, /* non-ABI */ }; #define PERF_ATTR_SIZE_VER0 64 /* sizeof first published struct */ #define PERF_ATTR_SIZE_VER1 72 /* add: config2 */ #define PERF_ATTR_SIZE_VER2 80 /* add: branch_sample_type */ #define PERF_ATTR_SIZE_VER3 96 /* add: sample_regs_user */ /* add: sample_stack_user */ #define PERF_ATTR_SIZE_VER4 104 /* add: sample_regs_intr */ #define PERF_ATTR_SIZE_VER5 112 /* add: aux_watermark */ #define PERF_ATTR_SIZE_VER6 120 /* add: aux_sample_size */ #define PERF_ATTR_SIZE_VER7 128 /* add: sig_data */ /* * Hardware event_id to monitor via a performance monitoring event: * * @sample_max_stack: Max number of frame pointers in a callchain, * should be < /proc/sys/kernel/perf_event_max_stack */ struct perf_event_attr { /* * Major type: hardware/software/tracepoint/etc. */ __u32 type; /* * Size of the attr structure, for fwd/bwd compat. */ __u32 size; /* * Type specific configuration information. */ __u64 config; union { __u64 sample_period; __u64 sample_freq; }; __u64 sample_type; __u64 read_format; __u64 disabled : 1, /* off by default */ inherit : 1, /* children inherit it */ pinned : 1, /* must always be on PMU */ exclusive : 1, /* only group on PMU */ exclude_user : 1, /* don't count user */ exclude_kernel : 1, /* ditto kernel */ exclude_hv : 1, /* ditto hypervisor */ exclude_idle : 1, /* don't count when idle */ mmap : 1, /* include mmap data */ comm : 1, /* include comm data */ freq : 1, /* use freq, not period */ inherit_stat : 1, /* per task counts */ enable_on_exec : 1, /* next exec enables */ task : 1, /* trace fork/exit */ watermark : 1, /* wakeup_watermark */ /* * precise_ip: * * 0 - SAMPLE_IP can have arbitrary skid * 1 - SAMPLE_IP must have constant skid * 2 - SAMPLE_IP requested to have 0 skid * 3 - SAMPLE_IP must have 0 skid * * See also PERF_RECORD_MISC_EXACT_IP */ precise_ip : 2, /* skid constraint */ mmap_data : 1, /* non-exec mmap data */ sample_id_all : 1, /* sample_type all events */ exclude_host : 1, /* don't count in host */ exclude_guest : 1, /* don't count in guest */ exclude_callchain_kernel : 1, /* exclude kernel callchains */ exclude_callchain_user : 1, /* exclude user callchains */ mmap2 : 1, /* include mmap with inode data */ comm_exec : 1, /* flag comm events that are due to an exec */ use_clockid : 1, /* use @clockid for time fields */ context_switch : 1, /* context switch data */ write_backward : 1, /* Write ring buffer from end to beginning */ namespaces : 1, /* include namespaces data */ ksymbol : 1, /* include ksymbol events */ bpf_event : 1, /* include bpf events */ aux_output : 1, /* generate AUX records instead of events */ cgroup : 1, /* include cgroup events */ text_poke : 1, /* include text poke events */ build_id : 1, /* use build id in mmap2 events */ inherit_thread : 1, /* children only inherit if cloned with CLONE_THREAD */ remove_on_exec : 1, /* event is removed from task on exec */ sigtrap : 1, /* send synchronous SIGTRAP on event */ __reserved_1 : 26; union { __u32 wakeup_events; /* wakeup every n events */ __u32 wakeup_watermark; /* bytes before wakeup */ }; __u32 bp_type; union { __u64 bp_addr; __u64 kprobe_func; /* for perf_kprobe */ __u64 uprobe_path; /* for perf_uprobe */ __u64 config1; /* extension of config */ }; union { __u64 bp_len; __u64 kprobe_addr; /* when kprobe_func == NULL */ __u64 probe_offset; /* for perf_[k,u]probe */ __u64 config2; /* extension of config1 */ }; __u64 branch_sample_type; /* enum perf_branch_sample_type */ /* * Defines set of user regs to dump on samples. * See asm/perf_regs.h for details. */ __u64 sample_regs_user; /* * Defines size of the user stack to dump on samples. */ __u32 sample_stack_user; __s32 clockid; /* * Defines set of regs to dump for each sample * state captured on: * - precise = 0: PMU interrupt * - precise > 0: sampled instruction * * See asm/perf_regs.h for details. */ __u64 sample_regs_intr; /* * Wakeup watermark for AUX area */ __u32 aux_watermark; __u16 sample_max_stack; __u16 __reserved_2; __u32 aux_sample_size; __u32 __reserved_3; /* * User provided data if sigtrap=1, passed back to user via * siginfo_t::si_perf_data, e.g. to permit user to identify the event. */ __u64 sig_data; }; /* * Structure used by below PERF_EVENT_IOC_QUERY_BPF command * to query bpf programs attached to the same perf tracepoint * as the given perf event. */ struct perf_event_query_bpf { /* * The below ids array length */ __u32 ids_len; /* * Set by the kernel to indicate the number of * available programs */ __u32 prog_cnt; /* * User provided buffer to store program ids */ __u32 ids[0]; }; /* * Ioctls that can be done on a perf event fd: */ #define PERF_EVENT_IOC_ENABLE _IO ('$', 0) #define PERF_EVENT_IOC_DISABLE _IO ('$', 1) #define PERF_EVENT_IOC_REFRESH _IO ('$', 2) #define PERF_EVENT_IOC_RESET _IO ('$', 3) #define PERF_EVENT_IOC_PERIOD _IOW('$', 4, __u64) #define PERF_EVENT_IOC_SET_OUTPUT _IO ('$', 5) #define PERF_EVENT_IOC_SET_FILTER _IOW('$', 6, char *) #define PERF_EVENT_IOC_ID _IOR('$', 7, __u64 *) #define PERF_EVENT_IOC_SET_BPF _IOW('$', 8, __u32) #define PERF_EVENT_IOC_PAUSE_OUTPUT _IOW('$', 9, __u32) #define PERF_EVENT_IOC_QUERY_BPF _IOWR('$', 10, struct perf_event_query_bpf *) #define PERF_EVENT_IOC_MODIFY_ATTRIBUTES _IOW('$', 11, struct perf_event_attr *) enum perf_event_ioc_flags { PERF_IOC_FLAG_GROUP = 1U << 0, }; /* * Structure of the page that can be mapped via mmap */ struct perf_event_mmap_page { __u32 version; /* version number of this structure */ __u32 compat_version; /* lowest version this is compat with */ /* * Bits needed to read the hw events in user-space. * * u32 seq, time_mult, time_shift, index, width; * u64 count, enabled, running; * u64 cyc, time_offset; * s64 pmc = 0; * * do { * seq = pc->lock; * barrier() * * enabled = pc->time_enabled; * running = pc->time_running; * * if (pc->cap_usr_time && enabled != running) { * cyc = rdtsc(); * time_offset = pc->time_offset; * time_mult = pc->time_mult; * time_shift = pc->time_shift; * } * * index = pc->index; * count = pc->offset; * if (pc->cap_user_rdpmc && index) { * width = pc->pmc_width; * pmc = rdpmc(index - 1); * } * * barrier(); * } while (pc->lock != seq); * * NOTE: for obvious reason this only works on self-monitoring * processes. */ __u32 lock; /* seqlock for synchronization */ __u32 index; /* hardware event identifier */ __s64 offset; /* add to hardware event value */ __u64 time_enabled; /* time event active */ __u64 time_running; /* time event on cpu */ union { __u64 capabilities; struct { __u64 cap_bit0 : 1, /* Always 0, deprecated, see commit 860f085b74e9 */ cap_bit0_is_deprecated : 1, /* Always 1, signals that bit 0 is zero */ cap_user_rdpmc : 1, /* The RDPMC instruction can be used to read counts */ cap_user_time : 1, /* The time_{shift,mult,offset} fields are used */ cap_user_time_zero : 1, /* The time_zero field is used */ cap_user_time_short : 1, /* the time_{cycle,mask} fields are used */ cap_____res : 58; }; }; /* * If cap_user_rdpmc this field provides the bit-width of the value * read using the rdpmc() or equivalent instruction. This can be used * to sign extend the result like: * * pmc <<= 64 - width; * pmc >>= 64 - width; // signed shift right * count += pmc; */ __u16 pmc_width; /* * If cap_usr_time the below fields can be used to compute the time * delta since time_enabled (in ns) using rdtsc or similar. * * u64 quot, rem; * u64 delta; * * quot = (cyc >> time_shift); * rem = cyc & (((u64)1 << time_shift) - 1); * delta = time_offset + quot * time_mult + * ((rem * time_mult) >> time_shift); * * Where time_offset,time_mult,time_shift and cyc are read in the * seqcount loop described above. This delta can then be added to * enabled and possible running (if index), improving the scaling: * * enabled += delta; * if (index) * running += delta; * * quot = count / running; * rem = count % running; * count = quot * enabled + (rem * enabled) / running; */ __u16 time_shift; __u32 time_mult; __u64 time_offset; /* * If cap_usr_time_zero, the hardware clock (e.g. TSC) can be calculated * from sample timestamps. * * time = timestamp - time_zero; * quot = time / time_mult; * rem = time % time_mult; * cyc = (quot << time_shift) + (rem << time_shift) / time_mult; * * And vice versa: * * quot = cyc >> time_shift; * rem = cyc & (((u64)1 << time_shift) - 1); * timestamp = time_zero + quot * time_mult + * ((rem * time_mult) >> time_shift); */ __u64 time_zero; __u32 size; /* Header size up to __reserved[] fields. */ __u32 __reserved_1; /* * If cap_usr_time_short, the hardware clock is less than 64bit wide * and we must compute the 'cyc' value, as used by cap_usr_time, as: * * cyc = time_cycles + ((cyc - time_cycles) & time_mask) * * NOTE: this form is explicitly chosen such that cap_usr_time_short * is a correction on top of cap_usr_time, and code that doesn't * know about cap_usr_time_short still works under the assumption * the counter doesn't wrap. */ __u64 time_cycles; __u64 time_mask; /* * Hole for extension of the self monitor capabilities */ __u8 __reserved[116*8]; /* align to 1k. */ /* * Control data for the mmap() data buffer. * * User-space reading the @data_head value should issue an smp_rmb(), * after reading this value. * * When the mapping is PROT_WRITE the @data_tail value should be * written by userspace to reflect the last read data, after issueing * an smp_mb() to separate the data read from the ->data_tail store. * In this case the kernel will not over-write unread data. * * See perf_output_put_handle() for the data ordering. * * data_{offset,size} indicate the location and size of the perf record * buffer within the mmapped area. */ __u64 data_head; /* head in the data section */ __u64 data_tail; /* user-space written tail */ __u64 data_offset; /* where the buffer starts */ __u64 data_size; /* data buffer size */ /* * AUX area is defined by aux_{offset,size} fields that should be set * by the userspace, so that * * aux_offset >= data_offset + data_size * * prior to mmap()ing it. Size of the mmap()ed area should be aux_size. * * Ring buffer pointers aux_{head,tail} have the same semantics as * data_{head,tail} and same ordering rules apply. */ __u64 aux_head; __u64 aux_tail; __u64 aux_offset; __u64 aux_size; }; /* * The current state of perf_event_header::misc bits usage: * ('|' used bit, '-' unused bit) * * 012 CDEF * |||---------|||| * * Where: * 0-2 CPUMODE_MASK * * C PROC_MAP_PARSE_TIMEOUT * D MMAP_DATA / COMM_EXEC / FORK_EXEC / SWITCH_OUT * E MMAP_BUILD_ID / EXACT_IP / SCHED_OUT_PREEMPT * F (reserved) */ #define PERF_RECORD_MISC_CPUMODE_MASK (7 << 0) #define PERF_RECORD_MISC_CPUMODE_UNKNOWN (0 << 0) #define PERF_RECORD_MISC_KERNEL (1 << 0) #define PERF_RECORD_MISC_USER (2 << 0) #define PERF_RECORD_MISC_HYPERVISOR (3 << 0) #define PERF_RECORD_MISC_GUEST_KERNEL (4 << 0) #define PERF_RECORD_MISC_GUEST_USER (5 << 0) /* * Indicates that /proc/PID/maps parsing are truncated by time out. */ #define PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT (1 << 12) /* * Following PERF_RECORD_MISC_* are used on different * events, so can reuse the same bit position: * * PERF_RECORD_MISC_MMAP_DATA - PERF_RECORD_MMAP* events * PERF_RECORD_MISC_COMM_EXEC - PERF_RECORD_COMM event * PERF_RECORD_MISC_FORK_EXEC - PERF_RECORD_FORK event (perf internal) * PERF_RECORD_MISC_SWITCH_OUT - PERF_RECORD_SWITCH* events */ #define PERF_RECORD_MISC_MMAP_DATA (1 << 13) #define PERF_RECORD_MISC_COMM_EXEC (1 << 13) #define PERF_RECORD_MISC_FORK_EXEC (1 << 13) #define PERF_RECORD_MISC_SWITCH_OUT (1 << 13) /* * These PERF_RECORD_MISC_* flags below are safely reused * for the following events: * * PERF_RECORD_MISC_EXACT_IP - PERF_RECORD_SAMPLE of precise events * PERF_RECORD_MISC_SWITCH_OUT_PREEMPT - PERF_RECORD_SWITCH* events * PERF_RECORD_MISC_MMAP_BUILD_ID - PERF_RECORD_MMAP2 event * * * PERF_RECORD_MISC_EXACT_IP: * Indicates that the content of PERF_SAMPLE_IP points to * the actual instruction that triggered the event. See also * perf_event_attr::precise_ip. * * PERF_RECORD_MISC_SWITCH_OUT_PREEMPT: * Indicates that thread was preempted in TASK_RUNNING state. * * PERF_RECORD_MISC_MMAP_BUILD_ID: * Indicates that mmap2 event carries build id data. */ #define PERF_RECORD_MISC_EXACT_IP (1 << 14) #define PERF_RECORD_MISC_SWITCH_OUT_PREEMPT (1 << 14) #define PERF_RECORD_MISC_MMAP_BUILD_ID (1 << 14) /* * Reserve the last bit to indicate some extended misc field */ #define PERF_RECORD_MISC_EXT_RESERVED (1 << 15) struct perf_event_header { __u32 type; __u16 misc; __u16 size; }; struct perf_ns_link_info { __u64 dev; __u64 ino; }; enum { NET_NS_INDEX = 0, UTS_NS_INDEX = 1, IPC_NS_INDEX = 2, PID_NS_INDEX = 3, USER_NS_INDEX = 4, MNT_NS_INDEX = 5, CGROUP_NS_INDEX = 6, NR_NAMESPACES, /* number of available namespaces */ }; enum perf_event_type { /* * If perf_event_attr.sample_id_all is set then all event types will * have the sample_type selected fields related to where/when * (identity) an event took place (TID, TIME, ID, STREAM_ID, CPU, * IDENTIFIER) described in PERF_RECORD_SAMPLE below, it will be stashed * just after the perf_event_header and the fields already present for * the existing fields, i.e. at the end of the payload. That way a newer * perf.data file will be supported by older perf tools, with these new * optional fields being ignored. * * struct sample_id { * { u32 pid, tid; } && PERF_SAMPLE_TID * { u64 time; } && PERF_SAMPLE_TIME * { u64 id; } && PERF_SAMPLE_ID * { u64 stream_id;} && PERF_SAMPLE_STREAM_ID * { u32 cpu, res; } && PERF_SAMPLE_CPU * { u64 id; } && PERF_SAMPLE_IDENTIFIER * } && perf_event_attr::sample_id_all * * Note that PERF_SAMPLE_IDENTIFIER duplicates PERF_SAMPLE_ID. The * advantage of PERF_SAMPLE_IDENTIFIER is that its position is fixed * relative to header.size. */ /* * The MMAP events record the PROT_EXEC mappings so that we can * correlate userspace IPs to code. They have the following structure: * * struct { * struct perf_event_header header; * * u32 pid, tid; * u64 addr; * u64 len; * u64 pgoff; * char filename[]; * struct sample_id sample_id; * }; */ PERF_RECORD_MMAP = 1, /* * struct { * struct perf_event_header header; * u64 id; * u64 lost; * struct sample_id sample_id; * }; */ PERF_RECORD_LOST = 2, /* * struct { * struct perf_event_header header; * * u32 pid, tid; * char comm[]; * struct sample_id sample_id; * }; */ PERF_RECORD_COMM = 3, /* * struct { * struct perf_event_header header; * u32 pid, ppid; * u32 tid, ptid; * u64 time; * struct sample_id sample_id; * }; */ PERF_RECORD_EXIT = 4, /* * struct { * struct perf_event_header header; * u64 time; * u64 id; * u64 stream_id; * struct sample_id sample_id; * }; */ PERF_RECORD_THROTTLE = 5, PERF_RECORD_UNTHROTTLE = 6, /* * struct { * struct perf_event_header header; * u32 pid, ppid; * u32 tid, ptid; * u64 time; * struct sample_id sample_id; * }; */ PERF_RECORD_FORK = 7, /* * struct { * struct perf_event_header header; * u32 pid, tid; * * struct read_format values; * struct sample_id sample_id; * }; */ PERF_RECORD_READ = 8, /* * struct { * struct perf_event_header header; * * # * # Note that PERF_SAMPLE_IDENTIFIER duplicates PERF_SAMPLE_ID. * # The advantage of PERF_SAMPLE_IDENTIFIER is that its position * # is fixed relative to header. * # * * { u64 id; } && PERF_SAMPLE_IDENTIFIER * { u64 ip; } && PERF_SAMPLE_IP * { u32 pid, tid; } && PERF_SAMPLE_TID * { u64 time; } && PERF_SAMPLE_TIME * { u64 addr; } && PERF_SAMPLE_ADDR * { u64 id; } && PERF_SAMPLE_ID * { u64 stream_id;} && PERF_SAMPLE_STREAM_ID * { u32 cpu, res; } && PERF_SAMPLE_CPU * { u64 period; } && PERF_SAMPLE_PERIOD * * { struct read_format values; } && PERF_SAMPLE_READ * * { u64 nr, * u64 ips[nr]; } && PERF_SAMPLE_CALLCHAIN * * # * # The RAW record below is opaque data wrt the ABI * # * # That is, the ABI doesn't make any promises wrt to * # the stability of its content, it may vary depending * # on event, hardware, kernel version and phase of * # the moon. * # * # In other words, PERF_SAMPLE_RAW contents are not an ABI. * # * * { u32 size; * char data[size];}&& PERF_SAMPLE_RAW * * { u64 nr; * { u64 hw_idx; } && PERF_SAMPLE_BRANCH_HW_INDEX * { u64 from, to, flags } lbr[nr]; * } && PERF_SAMPLE_BRANCH_STACK * * { u64 abi; # enum perf_sample_regs_abi * u64 regs[weight(mask)]; } && PERF_SAMPLE_REGS_USER * * { u64 size; * char data[size]; * u64 dyn_size; } && PERF_SAMPLE_STACK_USER * * { union perf_sample_weight * { * u64 full; && PERF_SAMPLE_WEIGHT * #if defined(__LITTLE_ENDIAN_BITFIELD) * struct { * u32 var1_dw; * u16 var2_w; * u16 var3_w; * } && PERF_SAMPLE_WEIGHT_STRUCT * #elif defined(__BIG_ENDIAN_BITFIELD) * struct { * u16 var3_w; * u16 var2_w; * u32 var1_dw; * } && PERF_SAMPLE_WEIGHT_STRUCT * #endif * } * } * { u64 data_src; } && PERF_SAMPLE_DATA_SRC * { u64 transaction; } && PERF_SAMPLE_TRANSACTION * { u64 abi; # enum perf_sample_regs_abi * u64 regs[weight(mask)]; } && PERF_SAMPLE_REGS_INTR * { u64 phys_addr;} && PERF_SAMPLE_PHYS_ADDR * { u64 size; * char data[size]; } && PERF_SAMPLE_AUX * { u64 data_page_size;} && PERF_SAMPLE_DATA_PAGE_SIZE * { u64 code_page_size;} && PERF_SAMPLE_CODE_PAGE_SIZE * }; */ PERF_RECORD_SAMPLE = 9, /* * The MMAP2 records are an augmented version of MMAP, they add * maj, min, ino numbers to be used to uniquely identify each mapping * * struct { * struct perf_event_header header; * * u32 pid, tid; * u64 addr; * u64 len; * u64 pgoff; * union { * struct { * u32 maj; * u32 min; * u64 ino; * u64 ino_generation; * }; * struct { * u8 build_id_size; * u8 __reserved_1; * u16 __reserved_2; * u8 build_id[20]; * }; * }; * u32 prot, flags; * char filename[]; * struct sample_id sample_id; * }; */ PERF_RECORD_MMAP2 = 10, /* * Records that new data landed in the AUX buffer part. * * struct { * struct perf_event_header header; * * u64 aux_offset; * u64 aux_size; * u64 flags; * struct sample_id sample_id; * }; */ PERF_RECORD_AUX = 11, /* * Indicates that instruction trace has started * * struct { * struct perf_event_header header; * u32 pid; * u32 tid; * struct sample_id sample_id; * }; */ PERF_RECORD_ITRACE_START = 12, /* * Records the dropped/lost sample number. * * struct { * struct perf_event_header header; * * u64 lost; * struct sample_id sample_id; * }; */ PERF_RECORD_LOST_SAMPLES = 13, /* * Records a context switch in or out (flagged by * PERF_RECORD_MISC_SWITCH_OUT). See also * PERF_RECORD_SWITCH_CPU_WIDE. * * struct { * struct perf_event_header header; * struct sample_id sample_id; * }; */ PERF_RECORD_SWITCH = 14, /* * CPU-wide version of PERF_RECORD_SWITCH with next_prev_pid and * next_prev_tid that are the next (switching out) or previous * (switching in) pid/tid. * * struct { * struct perf_event_header header; * u32 next_prev_pid; * u32 next_prev_tid; * struct sample_id sample_id; * }; */ PERF_RECORD_SWITCH_CPU_WIDE = 15, /* * struct { * struct perf_event_header header; * u32 pid; * u32 tid; * u64 nr_namespaces; * { u64 dev, inode; } [nr_namespaces]; * struct sample_id sample_id; * }; */ PERF_RECORD_NAMESPACES = 16, /* * Record ksymbol register/unregister events: * * struct { * struct perf_event_header header; * u64 addr; * u32 len; * u16 ksym_type; * u16 flags; * char name[]; * struct sample_id sample_id; * }; */ PERF_RECORD_KSYMBOL = 17, /* * Record bpf events: * enum perf_bpf_event_type { * PERF_BPF_EVENT_UNKNOWN = 0, * PERF_BPF_EVENT_PROG_LOAD = 1, * PERF_BPF_EVENT_PROG_UNLOAD = 2, * }; * * struct { * struct perf_event_header header; * u16 type; * u16 flags; * u32 id; * u8 tag[BPF_TAG_SIZE]; * struct sample_id sample_id; * }; */ PERF_RECORD_BPF_EVENT = 18, /* * struct { * struct perf_event_header header; * u64 id; * char path[]; * struct sample_id sample_id; * }; */ PERF_RECORD_CGROUP = 19, /* * Records changes to kernel text i.e. self-modified code. 'old_len' is * the number of old bytes, 'new_len' is the number of new bytes. Either * 'old_len' or 'new_len' may be zero to indicate, for example, the * addition or removal of a trampoline. 'bytes' contains the old bytes * followed immediately by the new bytes. * * struct { * struct perf_event_header header; * u64 addr; * u16 old_len; * u16 new_len; * u8 bytes[]; * struct sample_id sample_id; * }; */ PERF_RECORD_TEXT_POKE = 20, PERF_RECORD_MAX, /* non-ABI */ }; enum perf_record_ksymbol_type { PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0, PERF_RECORD_KSYMBOL_TYPE_BPF = 1, /* * Out of line code such as kprobe-replaced instructions or optimized * kprobes or ftrace trampolines. */ PERF_RECORD_KSYMBOL_TYPE_OOL = 2, PERF_RECORD_KSYMBOL_TYPE_MAX /* non-ABI */ }; #define PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER (1 << 0) enum perf_bpf_event_type { PERF_BPF_EVENT_UNKNOWN = 0, PERF_BPF_EVENT_PROG_LOAD = 1, PERF_BPF_EVENT_PROG_UNLOAD = 2, PERF_BPF_EVENT_MAX, /* non-ABI */ }; #define PERF_MAX_STACK_DEPTH 127 #define PERF_MAX_CONTEXTS_PER_STACK 8 enum perf_callchain_context { PERF_CONTEXT_HV = (__u64)-32, PERF_CONTEXT_KERNEL = (__u64)-128, PERF_CONTEXT_USER = (__u64)-512, PERF_CONTEXT_GUEST = (__u64)-2048, PERF_CONTEXT_GUEST_KERNEL = (__u64)-2176, PERF_CONTEXT_GUEST_USER = (__u64)-2560, PERF_CONTEXT_MAX = (__u64)-4095, }; /** * PERF_RECORD_AUX::flags bits */ #define PERF_AUX_FLAG_TRUNCATED 0x01 /* record was truncated to fit */ #define PERF_AUX_FLAG_OVERWRITE 0x02 /* snapshot from overwrite mode */ #define PERF_AUX_FLAG_PARTIAL 0x04 /* record contains gaps */ #define PERF_AUX_FLAG_COLLISION 0x08 /* sample collided with another */ #define PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK 0xff00 /* PMU specific trace format type */ /* CoreSight PMU AUX buffer formats */ #define PERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT 0x0000 /* Default for backward compatibility */ #define PERF_AUX_FLAG_CORESIGHT_FORMAT_RAW 0x0100 /* Raw format of the source */ #define PERF_FLAG_FD_NO_GROUP (1UL << 0) #define PERF_FLAG_FD_OUTPUT (1UL << 1) #define PERF_FLAG_PID_CGROUP (1UL << 2) /* pid=cgroup id, per-cpu mode only */ #define PERF_FLAG_FD_CLOEXEC (1UL << 3) /* O_CLOEXEC */ #if defined(__LITTLE_ENDIAN_BITFIELD) union perf_mem_data_src { __u64 val; struct { __u64 mem_op:5, /* type of opcode */ mem_lvl:14, /* memory hierarchy level */ mem_snoop:5, /* snoop mode */ mem_lock:2, /* lock instr */ mem_dtlb:7, /* tlb access */ mem_lvl_num:4, /* memory hierarchy level number */ mem_remote:1, /* remote */ mem_snoopx:2, /* snoop mode, ext */ mem_blk:3, /* access blocked */ mem_rsvd:21; }; }; #elif defined(__BIG_ENDIAN_BITFIELD) union perf_mem_data_src { __u64 val; struct { __u64 mem_rsvd:21, mem_blk:3, /* access blocked */ mem_snoopx:2, /* snoop mode, ext */ mem_remote:1, /* remote */ mem_lvl_num:4, /* memory hierarchy level number */ mem_dtlb:7, /* tlb access */ mem_lock:2, /* lock instr */ mem_snoop:5, /* snoop mode */ mem_lvl:14, /* memory hierarchy level */ mem_op:5; /* type of opcode */ }; }; #else #error "Unknown endianness" #endif /* type of opcode (load/store/prefetch,code) */ #define PERF_MEM_OP_NA 0x01 /* not available */ #define PERF_MEM_OP_LOAD 0x02 /* load instruction */ #define PERF_MEM_OP_STORE 0x04 /* store instruction */ #define PERF_MEM_OP_PFETCH 0x08 /* prefetch */ #define PERF_MEM_OP_EXEC 0x10 /* code (execution) */ #define PERF_MEM_OP_SHIFT 0 /* memory hierarchy (memory level, hit or miss) */ #define PERF_MEM_LVL_NA 0x01 /* not available */ #define PERF_MEM_LVL_HIT 0x02 /* hit level */ #define PERF_MEM_LVL_MISS 0x04 /* miss level */ #define PERF_MEM_LVL_L1 0x08 /* L1 */ #define PERF_MEM_LVL_LFB 0x10 /* Line Fill Buffer */ #define PERF_MEM_LVL_L2 0x20 /* L2 */ #define PERF_MEM_LVL_L3 0x40 /* L3 */ #define PERF_MEM_LVL_LOC_RAM 0x80 /* Local DRAM */ #define PERF_MEM_LVL_REM_RAM1 0x100 /* Remote DRAM (1 hop) */ #define PERF_MEM_LVL_REM_RAM2 0x200 /* Remote DRAM (2 hops) */ #define PERF_MEM_LVL_REM_CCE1 0x400 /* Remote Cache (1 hop) */ #define PERF_MEM_LVL_REM_CCE2 0x800 /* Remote Cache (2 hops) */ #define PERF_MEM_LVL_IO 0x1000 /* I/O memory */ #define PERF_MEM_LVL_UNC 0x2000 /* Uncached memory */ #define PERF_MEM_LVL_SHIFT 5 #define PERF_MEM_REMOTE_REMOTE 0x01 /* Remote */ #define PERF_MEM_REMOTE_SHIFT 37 #define PERF_MEM_LVLNUM_L1 0x01 /* L1 */ #define PERF_MEM_LVLNUM_L2 0x02 /* L2 */ #define PERF_MEM_LVLNUM_L3 0x03 /* L3 */ #define PERF_MEM_LVLNUM_L4 0x04 /* L4 */ /* 5-0xa available */ #define PERF_MEM_LVLNUM_ANY_CACHE 0x0b /* Any cache */ #define PERF_MEM_LVLNUM_LFB 0x0c /* LFB */ #define PERF_MEM_LVLNUM_RAM 0x0d /* RAM */ #define PERF_MEM_LVLNUM_PMEM 0x0e /* PMEM */ #define PERF_MEM_LVLNUM_NA 0x0f /* N/A */ #define PERF_MEM_LVLNUM_SHIFT 33 /* snoop mode */ #define PERF_MEM_SNOOP_NA 0x01 /* not available */ #define PERF_MEM_SNOOP_NONE 0x02 /* no snoop */ #define PERF_MEM_SNOOP_HIT 0x04 /* snoop hit */ #define PERF_MEM_SNOOP_MISS 0x08 /* snoop miss */ #define PERF_MEM_SNOOP_HITM 0x10 /* snoop hit modified */ #define PERF_MEM_SNOOP_SHIFT 19 #define PERF_MEM_SNOOPX_FWD 0x01 /* forward */ /* 1 free */ #define PERF_MEM_SNOOPX_SHIFT 38 /* locked instruction */ #define PERF_MEM_LOCK_NA 0x01 /* not available */ #define PERF_MEM_LOCK_LOCKED 0x02 /* locked transaction */ #define PERF_MEM_LOCK_SHIFT 24 /* TLB access */ #define PERF_MEM_TLB_NA 0x01 /* not available */ #define PERF_MEM_TLB_HIT 0x02 /* hit level */ #define PERF_MEM_TLB_MISS 0x04 /* miss level */ #define PERF_MEM_TLB_L1 0x08 /* L1 */ #define PERF_MEM_TLB_L2 0x10 /* L2 */ #define PERF_MEM_TLB_WK 0x20 /* Hardware Walker*/ #define PERF_MEM_TLB_OS 0x40 /* OS fault handler */ #define PERF_MEM_TLB_SHIFT 26 /* Access blocked */ #define PERF_MEM_BLK_NA 0x01 /* not available */ #define PERF_MEM_BLK_DATA 0x02 /* data could not be forwarded */ #define PERF_MEM_BLK_ADDR 0x04 /* address conflict */ #define PERF_MEM_BLK_SHIFT 40 #define PERF_MEM_S(a, s) \ (((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT) /* * single taken branch record layout: * * from: source instruction (may not always be a branch insn) * to: branch target * mispred: branch target was mispredicted * predicted: branch target was predicted * * support for mispred, predicted is optional. In case it * is not supported mispred = predicted = 0. * * in_tx: running in a hardware transaction * abort: aborting a hardware transaction * cycles: cycles from last branch (or 0 if not supported) * type: branch type */ struct perf_branch_entry { __u64 from; __u64 to; __u64 mispred:1, /* target mispredicted */ predicted:1,/* target predicted */ in_tx:1, /* in transaction */ abort:1, /* transaction abort */ cycles:16, /* cycle count to last branch */ type:4, /* branch type */ reserved:40; }; union perf_sample_weight { __u64 full; #if defined(__LITTLE_ENDIAN_BITFIELD) struct { __u32 var1_dw; __u16 var2_w; __u16 var3_w; }; #elif defined(__BIG_ENDIAN_BITFIELD) struct { __u16 var3_w; __u16 var2_w; __u32 var1_dw; }; #else #error "Unknown endianness" #endif }; #endif /* _UAPI_LINUX_PERF_EVENT_H */
Save
cmd:
run