Linux cpanel.rrshost.in 5.15.0-25-generic #25-Ubuntu SMP Wed Mar 30 15:54:22 UTC 2022 x86_64
Apache
: 109.123.238.221 | : 172.70.131.13
128 Domain
8.2.28
aev999
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
src /
linux-headers-5.15.0-25 /
include /
linux /
[ HOME SHELL ]
Name
Size
Permission
Action
amba
[ DIR ]
drwxr-xr-x
atomic
[ DIR ]
drwxr-xr-x
avf
[ DIR ]
drwxr-xr-x
bcma
[ DIR ]
drwxr-xr-x
byteorder
[ DIR ]
drwxr-xr-x
can
[ DIR ]
drwxr-xr-x
ceph
[ DIR ]
drwxr-xr-x
clk
[ DIR ]
drwxr-xr-x
crush
[ DIR ]
drwxr-xr-x
decompress
[ DIR ]
drwxr-xr-x
device
[ DIR ]
drwxr-xr-x
dma
[ DIR ]
drwxr-xr-x
dsa
[ DIR ]
drwxr-xr-x
extcon
[ DIR ]
drwxr-xr-x
firmware
[ DIR ]
drwxr-xr-x
fpga
[ DIR ]
drwxr-xr-x
fsl
[ DIR ]
drwxr-xr-x
gpio
[ DIR ]
drwxr-xr-x
greybus
[ DIR ]
drwxr-xr-x
hsi
[ DIR ]
drwxr-xr-x
i3c
[ DIR ]
drwxr-xr-x
iio
[ DIR ]
drwxr-xr-x
input
[ DIR ]
drwxr-xr-x
irqchip
[ DIR ]
drwxr-xr-x
isdn
[ DIR ]
drwxr-xr-x
lockd
[ DIR ]
drwxr-xr-x
mailbox
[ DIR ]
drwxr-xr-x
mdio
[ DIR ]
drwxr-xr-x
mfd
[ DIR ]
drwxr-xr-x
mlx4
[ DIR ]
drwxr-xr-x
mlx5
[ DIR ]
drwxr-xr-x
mmc
[ DIR ]
drwxr-xr-x
mtd
[ DIR ]
drwxr-xr-x
mux
[ DIR ]
drwxr-xr-x
net
[ DIR ]
drwxr-xr-x
netfilter
[ DIR ]
drwxr-xr-x
netfilter_arp
[ DIR ]
drwxr-xr-x
netfilter_bridge
[ DIR ]
drwxr-xr-x
netfilter_ipv4
[ DIR ]
drwxr-xr-x
netfilter_ipv6
[ DIR ]
drwxr-xr-x
pcs
[ DIR ]
drwxr-xr-x
perf
[ DIR ]
drwxr-xr-x
phy
[ DIR ]
drwxr-xr-x
pinctrl
[ DIR ]
drwxr-xr-x
platform_data
[ DIR ]
drwxr-xr-x
power
[ DIR ]
drwxr-xr-x
qed
[ DIR ]
drwxr-xr-x
raid
[ DIR ]
drwxr-xr-x
regulator
[ DIR ]
drwxr-xr-x
remoteproc
[ DIR ]
drwxr-xr-x
reset
[ DIR ]
drwxr-xr-x
rpmsg
[ DIR ]
drwxr-xr-x
rtc
[ DIR ]
drwxr-xr-x
sched
[ DIR ]
drwxr-xr-x
soc
[ DIR ]
drwxr-xr-x
soundwire
[ DIR ]
drwxr-xr-x
spi
[ DIR ]
drwxr-xr-x
ssb
[ DIR ]
drwxr-xr-x
sunrpc
[ DIR ]
drwxr-xr-x
surface_aggregator
[ DIR ]
drwxr-xr-x
ulpi
[ DIR ]
drwxr-xr-x
unaligned
[ DIR ]
drwxr-xr-x
usb
[ DIR ]
drwxr-xr-x
8250_pci.h
1.01
KB
-rw-r--r--
a.out.h
354
B
-rw-r--r--
acct.h
2.49
KB
-rw-r--r--
acpi.h
39.5
KB
-rw-r--r--
acpi_dma.h
3.08
KB
-rw-r--r--
acpi_iort.h
2.27
KB
-rw-r--r--
acpi_mdio.h
631
B
-rw-r--r--
acpi_pmtmr.h
674
B
-rw-r--r--
acpi_viot.h
389
B
-rw-r--r--
adb.h
1.79
KB
-rw-r--r--
adfs_fs.h
574
B
-rw-r--r--
adreno-smmu-priv.h
2.74
KB
-rw-r--r--
adxl.h
310
B
-rw-r--r--
aer.h
1.78
KB
-rw-r--r--
agp_backend.h
3.45
KB
-rw-r--r--
agpgart.h
3.79
KB
-rw-r--r--
ahci-remap.h
607
B
-rw-r--r--
ahci_platform.h
1.54
KB
-rw-r--r--
aio.h
651
B
-rw-r--r--
alarmtimer.h
1.94
KB
-rw-r--r--
alcor_pci.h
8.83
KB
-rw-r--r--
align.h
552
B
-rw-r--r--
altera_jtaguart.h
379
B
-rw-r--r--
altera_uart.h
397
B
-rw-r--r--
amd-iommu.h
6.18
KB
-rw-r--r--
anon_inodes.h
670
B
-rw-r--r--
apm-emulation.h
1.56
KB
-rw-r--r--
apm_bios.h
2.25
KB
-rw-r--r--
apple-gmux.h
918
B
-rw-r--r--
apple_bl.h
498
B
-rw-r--r--
arch_topology.h
2.49
KB
-rw-r--r--
arm-cci.h
1.36
KB
-rw-r--r--
arm-smccc.h
17.7
KB
-rw-r--r--
arm_ffa.h
7.36
KB
-rw-r--r--
arm_sdei.h
2.51
KB
-rw-r--r--
armada-37xx-rwtm-mailbox.h
431
B
-rw-r--r--
ascii85.h
555
B
-rw-r--r--
asn1.h
1.79
KB
-rw-r--r--
asn1_ber_bytecode.h
2.52
KB
-rw-r--r--
asn1_decoder.h
468
B
-rw-r--r--
asn1_encoder.h
1006
B
-rw-r--r--
assoc_array.h
2.88
KB
-rw-r--r--
assoc_array_priv.h
5.3
KB
-rw-r--r--
async.h
4.26
KB
-rw-r--r--
async_tx.h
6.7
KB
-rw-r--r--
ata.h
32.52
KB
-rw-r--r--
ata_platform.h
749
B
-rw-r--r--
atalk.h
4.48
KB
-rw-r--r--
ath9k_platform.h
1.44
KB
-rw-r--r--
atm.h
287
B
-rw-r--r--
atm_tcp.h
511
B
-rw-r--r--
atmdev.h
9.99
KB
-rw-r--r--
atmel-isc-media.h
2.07
KB
-rw-r--r--
atmel-mci.h
1.4
KB
-rw-r--r--
atmel-ssc.h
9.74
KB
-rw-r--r--
atmel_pdc.h
1.26
KB
-rw-r--r--
atomic.h
2.58
KB
-rw-r--r--
attribute_container.h
2.74
KB
-rw-r--r--
audit.h
19.45
KB
-rw-r--r--
auto_dev-ioctl.h
296
B
-rw-r--r--
auto_fs.h
278
B
-rw-r--r--
auxiliary_bus.h
2.48
KB
-rw-r--r--
auxvec.h
304
B
-rw-r--r--
average.h
2.42
KB
-rw-r--r--
backing-dev-defs.h
8.55
KB
-rw-r--r--
backing-dev.h
11.81
KB
-rw-r--r--
backlight.h
13.13
KB
-rw-r--r--
badblocks.h
2.14
KB
-rw-r--r--
balloon_compaction.h
6.59
KB
-rw-r--r--
bcd.h
559
B
-rw-r--r--
bch.h
2.1
KB
-rw-r--r--
bcm47xx_nvram.h
1.01
KB
-rw-r--r--
bcm47xx_sprom.h
616
B
-rw-r--r--
bcm47xx_wdt.h
555
B
-rw-r--r--
bcm963xx_nvram.h
2.96
KB
-rw-r--r--
bcm963xx_tag.h
3.6
KB
-rw-r--r--
binfmts.h
4.48
KB
-rw-r--r--
bio.h
19.64
KB
-rw-r--r--
bit_spinlock.h
2.3
KB
-rw-r--r--
bitfield.h
4.75
KB
-rw-r--r--
bitmap.h
21.62
KB
-rw-r--r--
bitops.h
8.53
KB
-rw-r--r--
bitrev.h
2.53
KB
-rw-r--r--
bits.h
1.35
KB
-rw-r--r--
blk-cgroup.h
21.4
KB
-rw-r--r--
blk-crypto.h
4.02
KB
-rw-r--r--
blk-mq-pci.h
269
B
-rw-r--r--
blk-mq-rdma.h
273
B
-rw-r--r--
blk-mq-virtio.h
293
B
-rw-r--r--
blk-mq.h
19.37
KB
-rw-r--r--
blk-pm.h
708
B
-rw-r--r--
blk_types.h
15.42
KB
-rw-r--r--
blkdev.h
56.35
KB
-rw-r--r--
blkpg.h
436
B
-rw-r--r--
blktrace_api.h
3.77
KB
-rw-r--r--
blockgroup_lock.h
810
B
-rw-r--r--
bma150.h
1.26
KB
-rw-r--r--
bootconfig.h
8.51
KB
-rw-r--r--
bootmem_info.h
1.61
KB
-rw-r--r--
bottom_half.h
974
B
-rw-r--r--
bpf-cgroup.h
18.52
KB
-rw-r--r--
bpf-netns.h
1.52
KB
-rw-r--r--
bpf.h
69.46
KB
-rw-r--r--
bpf_lirc.h
698
B
-rw-r--r--
bpf_local_storage.h
5.23
KB
-rw-r--r--
bpf_lsm.h
1.42
KB
-rw-r--r--
bpf_trace.h
166
B
-rw-r--r--
bpf_types.h
5.41
KB
-rw-r--r--
bpf_verifier.h
18.45
KB
-rw-r--r--
bpfilter.h
791
B
-rw-r--r--
bpfptr.h
1.83
KB
-rw-r--r--
brcmphy.h
13.67
KB
-rw-r--r--
bsearch.h
624
B
-rw-r--r--
bsg-lib.h
1.72
KB
-rw-r--r--
bsg.h
492
B
-rw-r--r--
btf.h
7.26
KB
-rw-r--r--
btf_ids.h
5.32
KB
-rw-r--r--
btree-128.h
2.67
KB
-rw-r--r--
btree-type.h
3.9
KB
-rw-r--r--
btree.h
6.84
KB
-rw-r--r--
btrfs.h
145
B
-rw-r--r--
buffer_head.h
13.54
KB
-rw-r--r--
bug.h
2.17
KB
-rw-r--r--
build-salt.h
375
B
-rw-r--r--
build_bug.h
2.76
KB
-rw-r--r--
buildid.h
561
B
-rw-r--r--
bvec.h
6.17
KB
-rw-r--r--
c2port.h
1.35
KB
-rw-r--r--
cache.h
2.55
KB
-rw-r--r--
cacheinfo.h
3.75
KB
-rw-r--r--
capability.h
8.29
KB
-rw-r--r--
cb710.h
5.36
KB
-rw-r--r--
cc_platform.h
2.32
KB
-rw-r--r--
cciss_ioctl.h
1.03
KB
-rw-r--r--
ccp.h
18.14
KB
-rw-r--r--
cdev.h
845
B
-rw-r--r--
cdrom.h
8.98
KB
-rw-r--r--
cfag12864b.h
1.47
KB
-rw-r--r--
cfi.h
1.13
KB
-rw-r--r--
cgroup-defs.h
24.1
KB
-rw-r--r--
cgroup.h
28.19
KB
-rw-r--r--
cgroup_rdma.h
1.18
KB
-rw-r--r--
cgroup_subsys.h
1.23
KB
-rw-r--r--
circ_buf.h
1.09
KB
-rw-r--r--
cleancache.h
3.89
KB
-rw-r--r--
clk-provider.h
56.38
KB
-rw-r--r--
clk.h
29.59
KB
-rw-r--r--
clkdev.h
1.29
KB
-rw-r--r--
clockchips.h
7.27
KB
-rw-r--r--
clocksource.h
9.57
KB
-rw-r--r--
clocksource_ids.h
247
B
-rw-r--r--
cm4000_cs.h
199
B
-rw-r--r--
cma.h
1.59
KB
-rw-r--r--
cn_proc.h
1.85
KB
-rw-r--r--
cnt32_to_63.h
3.46
KB
-rw-r--r--
coda.h
2.16
KB
-rw-r--r--
compaction.h
7.15
KB
-rw-r--r--
compat.h
31.35
KB
-rw-r--r--
compiler-clang.h
2.27
KB
-rw-r--r--
compiler-gcc.h
4.44
KB
-rw-r--r--
compiler-intel.h
949
B
-rw-r--r--
compiler-version.h
517
B
-rw-r--r--
compiler.h
7.78
KB
-rw-r--r--
compiler_attributes.h
12.15
KB
-rw-r--r--
compiler_types.h
10.46
KB
-rw-r--r--
completion.h
4
KB
-rw-r--r--
component.h
4.07
KB
-rw-r--r--
configfs.h
8.48
KB
-rw-r--r--
connector.h
3.83
KB
-rw-r--r--
console.h
7.28
KB
-rw-r--r--
console_struct.h
7.08
KB
-rw-r--r--
consolemap.h
1.05
KB
-rw-r--r--
const.h
421
B
-rw-r--r--
container.h
610
B
-rw-r--r--
context_tracking.h
3.28
KB
-rw-r--r--
context_tracking_state.h
1.58
KB
-rw-r--r--
cookie.h
1.22
KB
-rw-r--r--
cordic.h
2.08
KB
-rw-r--r--
coredump.h
1.23
KB
-rw-r--r--
coresight-pmu.h
1.32
KB
-rw-r--r--
coresight-stm.h
152
B
-rw-r--r--
coresight.h
17.81
KB
-rw-r--r--
count_zeros.h
1.42
KB
-rw-r--r--
counter.h
15.13
KB
-rw-r--r--
counter_enum.h
1.43
KB
-rw-r--r--
cper.h
16.41
KB
-rw-r--r--
cpu.h
7.31
KB
-rw-r--r--
cpu_cooling.h
1.86
KB
-rw-r--r--
cpu_pm.h
2.38
KB
-rw-r--r--
cpu_rmap.h
1.68
KB
-rw-r--r--
cpufeature.h
1.71
KB
-rw-r--r--
cpufreq.h
32.57
KB
-rw-r--r--
cpuhotplug.h
16.47
KB
-rw-r--r--
cpuidle.h
10.27
KB
-rw-r--r--
cpuidle_haltpoll.h
312
B
-rw-r--r--
cpumask.h
28.61
KB
-rw-r--r--
cpuset.h
7.34
KB
-rw-r--r--
crash_core.h
3.38
KB
-rw-r--r--
crash_dump.h
4.05
KB
-rw-r--r--
crc-ccitt.h
609
B
-rw-r--r--
crc-itu-t.h
531
B
-rw-r--r--
crc-t10dif.h
453
B
-rw-r--r--
crc16.h
540
B
-rw-r--r--
crc32.h
2.83
KB
-rw-r--r--
crc32c.h
331
B
-rw-r--r--
crc32poly.h
610
B
-rw-r--r--
crc4.h
192
B
-rw-r--r--
crc64.h
280
B
-rw-r--r--
crc7.h
316
B
-rw-r--r--
crc8.h
3.66
KB
-rw-r--r--
cred.h
12.48
KB
-rw-r--r--
crypto.h
27.08
KB
-rw-r--r--
cs5535.h
6.13
KB
-rw-r--r--
ctype.h
1.87
KB
-rw-r--r--
cuda.h
613
B
-rw-r--r--
damon.h
10.35
KB
-rw-r--r--
dasd_mod.h
204
B
-rw-r--r--
davinci_emac.h
1.05
KB
-rw-r--r--
dax.h
6.56
KB
-rw-r--r--
dca.h
1.88
KB
-rw-r--r--
dcache.h
18.63
KB
-rw-r--r--
dccp.h
10.73
KB
-rw-r--r--
debug_locks.h
1.59
KB
-rw-r--r--
debugfs.h
11.22
KB
-rw-r--r--
debugobjects.h
3.99
KB
-rw-r--r--
delay.h
2.43
KB
-rw-r--r--
delayacct.h
5.45
KB
-rw-r--r--
delayed_call.h
709
B
-rw-r--r--
dev_printk.h
9.05
KB
-rw-r--r--
devcoredump.h
2.21
KB
-rw-r--r--
devfreq-event.h
5.95
KB
-rw-r--r--
devfreq.h
13.98
KB
-rw-r--r--
devfreq_cooling.h
2.7
KB
-rw-r--r--
device-mapper.h
18.92
KB
-rw-r--r--
device.h
32.89
KB
-rw-r--r--
device_cgroup.h
1.57
KB
-rw-r--r--
devm-helpers.h
2.68
KB
-rw-r--r--
devpts_fs.h
1.13
KB
-rw-r--r--
dfl.h
2.38
KB
-rw-r--r--
digsig.h
1.18
KB
-rw-r--r--
dim.h
9.13
KB
-rw-r--r--
dio.h
10.76
KB
-rw-r--r--
dirent.h
215
B
-rw-r--r--
dlm.h
5.86
KB
-rw-r--r--
dlm_plock.h
532
B
-rw-r--r--
dm-bufio.h
4.88
KB
-rw-r--r--
dm-dirty-log.h
3.94
KB
-rw-r--r--
dm-io.h
1.93
KB
-rw-r--r--
dm-kcopyd.h
2.94
KB
-rw-r--r--
dm-region-hash.h
3.11
KB
-rw-r--r--
dm9000.h
987
B
-rw-r--r--
dma-buf-map.h
8.12
KB
-rw-r--r--
dma-buf.h
20.47
KB
-rw-r--r--
dma-direct.h
3.59
KB
-rw-r--r--
dma-direction.h
407
B
-rw-r--r--
dma-fence-array.h
2.14
KB
-rw-r--r--
dma-fence-chain.h
3.07
KB
-rw-r--r--
dma-fence.h
20.25
KB
-rw-r--r--
dma-heap.h
1.58
KB
-rw-r--r--
dma-iommu.h
2.21
KB
-rw-r--r--
dma-map-ops.h
12.73
KB
-rw-r--r--
dma-mapping.h
19.81
KB
-rw-r--r--
dma-resv.h
9.05
KB
-rw-r--r--
dmaengine.h
53.53
KB
-rw-r--r--
dmapool.h
1.79
KB
-rw-r--r--
dmar.h
7.74
KB
-rw-r--r--
dmi.h
4.27
KB
-rw-r--r--
dnotify.h
1.02
KB
-rw-r--r--
dns_resolver.h
1.36
KB
-rw-r--r--
dqblk_qtree.h
2.19
KB
-rw-r--r--
dqblk_v1.h
327
B
-rw-r--r--
dqblk_v2.h
406
B
-rw-r--r--
drbd.h
10.07
KB
-rw-r--r--
drbd_genl.h
21.49
KB
-rw-r--r--
drbd_genl_api.h
1.77
KB
-rw-r--r--
drbd_limits.h
7.82
KB
-rw-r--r--
ds2782_battery.h
158
B
-rw-r--r--
dtlk.h
3.5
KB
-rw-r--r--
dtpm.h
1.64
KB
-rw-r--r--
dw_apb_timer.h
1.53
KB
-rw-r--r--
dynamic_debug.h
6.6
KB
-rw-r--r--
dynamic_queue_limits.h
3.72
KB
-rw-r--r--
earlycpio.h
359
B
-rw-r--r--
ecryptfs.h
3.82
KB
-rw-r--r--
edac.h
19.46
KB
-rw-r--r--
edd.h
1.05
KB
-rw-r--r--
eeprom_93cx6.h
2.31
KB
-rw-r--r--
eeprom_93xx46.h
1.04
KB
-rw-r--r--
efi-bgrt.h
644
B
-rw-r--r--
efi.h
42.25
KB
-rw-r--r--
efi_embedded_fw.h
1.04
KB
-rw-r--r--
efs_vh.h
1.55
KB
-rw-r--r--
eisa.h
2.96
KB
-rw-r--r--
elevator.h
5.52
KB
-rw-r--r--
elf-fdpic.h
1.98
KB
-rw-r--r--
elf-randomize.h
583
B
-rw-r--r--
elf.h
2.96
KB
-rw-r--r--
elfcore-compat.h
1.27
KB
-rw-r--r--
elfcore.h
4.11
KB
-rw-r--r--
elfnote-lto.h
314
B
-rw-r--r--
elfnote.h
3.54
KB
-rw-r--r--
enclosure.h
4.02
KB
-rw-r--r--
energy_model.h
8.17
KB
-rw-r--r--
entry-common.h
16.95
KB
-rw-r--r--
entry-kvm.h
2.75
KB
-rw-r--r--
err.h
1.49
KB
-rw-r--r--
errname.h
283
B
-rw-r--r--
errno.h
1.45
KB
-rw-r--r--
error-injection.h
607
B
-rw-r--r--
errqueue.h
524
B
-rw-r--r--
errseq.h
382
B
-rw-r--r--
etherdevice.h
16.41
KB
-rw-r--r--
ethtool.h
31.72
KB
-rw-r--r--
ethtool_netlink.h
1.98
KB
-rw-r--r--
eventfd.h
2.1
KB
-rw-r--r--
eventpoll.h
2.4
KB
-rw-r--r--
evm.h
3.42
KB
-rw-r--r--
export.h
5.24
KB
-rw-r--r--
exportfs.h
8.25
KB
-rw-r--r--
ext2_fs.h
967
B
-rw-r--r--
extable.h
1.28
KB
-rw-r--r--
extcon-provider.h
3.83
KB
-rw-r--r--
extcon.h
10.17
KB
-rw-r--r--
f2fs_fs.h
19
KB
-rw-r--r--
f75375s.h
541
B
-rw-r--r--
falloc.h
1.59
KB
-rw-r--r--
fanotify.h
3.85
KB
-rw-r--r--
fault-inject-usercopy.h
496
B
-rw-r--r--
fault-inject.h
1.93
KB
-rw-r--r--
fb.h
27.83
KB
-rw-r--r--
fbcon.h
1.88
KB
-rw-r--r--
fcdevice.h
774
B
-rw-r--r--
fcntl.h
1.66
KB
-rw-r--r--
fd.h
490
B
-rw-r--r--
fddidevice.h
833
B
-rw-r--r--
fdtable.h
3.58
KB
-rw-r--r--
fec.h
463
B
-rw-r--r--
fiemap.h
713
B
-rw-r--r--
file.h
2.89
KB
-rw-r--r--
fileattr.h
1.91
KB
-rw-r--r--
filter.h
42.08
KB
-rw-r--r--
fips.h
303
B
-rw-r--r--
firewire.h
13.4
KB
-rw-r--r--
firmware-map.h
959
B
-rw-r--r--
firmware.h
3.27
KB
-rw-r--r--
fixp-arith.h
4.19
KB
-rw-r--r--
flat.h
2.57
KB
-rw-r--r--
flex_proportions.h
2.81
KB
-rw-r--r--
font.h
1.67
KB
-rw-r--r--
fortify-string.h
9.11
KB
-rw-r--r--
freelist.h
3.8
KB
-rw-r--r--
freezer.h
8.98
KB
-rw-r--r--
frontswap.h
3.04
KB
-rw-r--r--
fs.h
120.45
KB
-rw-r--r--
fs_context.h
8.68
KB
-rw-r--r--
fs_enet_pd.h
3.38
KB
-rw-r--r--
fs_parser.h
4.44
KB
-rw-r--r--
fs_pin.h
539
B
-rw-r--r--
fs_stack.h
811
B
-rw-r--r--
fs_struct.h
1.04
KB
-rw-r--r--
fs_types.h
2.02
KB
-rw-r--r--
fs_uart_pd.h
1.49
KB
-rw-r--r--
fscache-cache.h
18.58
KB
-rw-r--r--
fscache.h
29.59
KB
-rw-r--r--
fscrypt.h
29.89
KB
-rw-r--r--
fsi-occ.h
681
B
-rw-r--r--
fsi-sbefifo.h
629
B
-rw-r--r--
fsi.h
2.26
KB
-rw-r--r--
fsl-diu-fb.h
3.87
KB
-rw-r--r--
fsl_devices.h
4.16
KB
-rw-r--r--
fsl_hypervisor.h
2.76
KB
-rw-r--r--
fsl_ifc.h
24.48
KB
-rw-r--r--
fsldma.h
202
B
-rw-r--r--
fsnotify.h
8.85
KB
-rw-r--r--
fsnotify_backend.h
22.93
KB
-rw-r--r--
fsverity.h
6.75
KB
-rw-r--r--
ftrace.h
34.75
KB
-rw-r--r--
ftrace_irq.h
884
B
-rw-r--r--
futex.h
2.44
KB
-rw-r--r--
fwnode.h
6.8
KB
-rw-r--r--
fwnode_mdio.h
858
B
-rw-r--r--
gameport.h
5.42
KB
-rw-r--r--
gcd.h
193
B
-rw-r--r--
genalloc.h
7.68
KB
-rw-r--r--
generic-radix-tree.h
6.35
KB
-rw-r--r--
genetlink.h
589
B
-rw-r--r--
genhd.h
9.23
KB
-rw-r--r--
genl_magic_func.h
11.53
KB
-rw-r--r--
genl_magic_struct.h
7.61
KB
-rw-r--r--
getcpu.h
641
B
-rw-r--r--
gfp.h
26.01
KB
-rw-r--r--
glob.h
256
B
-rw-r--r--
gnss.h
1.56
KB
-rw-r--r--
goldfish.h
762
B
-rw-r--r--
gpio-pxa.h
571
B
-rw-r--r--
gpio.h
5.3
KB
-rw-r--r--
gpio_keys.h
1.74
KB
-rw-r--r--
greybus.h
4.14
KB
-rw-r--r--
hardirq.h
3.43
KB
-rw-r--r--
hash.h
3
KB
-rw-r--r--
hashtable.h
6.67
KB
-rw-r--r--
hdlc.h
3.19
KB
-rw-r--r--
hdlcdrv.h
6.32
KB
-rw-r--r--
hdmi.h
12.41
KB
-rw-r--r--
hid-debug.h
1.42
KB
-rw-r--r--
hid-roccat.h
484
B
-rw-r--r--
hid-sensor-hub.h
8.97
KB
-rw-r--r--
hid-sensor-ids.h
7.44
KB
-rw-r--r--
hid.h
37.67
KB
-rw-r--r--
hidden.h
966
B
-rw-r--r--
hiddev.h
1.42
KB
-rw-r--r--
hidraw.h
1.12
KB
-rw-r--r--
highmem-internal.h
5.06
KB
-rw-r--r--
highmem.h
8.95
KB
-rw-r--r--
highuid.h
3.12
KB
-rw-r--r--
hil.h
18.42
KB
-rw-r--r--
hil_mlc.h
5.13
KB
-rw-r--r--
hippidevice.h
1.03
KB
-rw-r--r--
hmm.h
4.07
KB
-rw-r--r--
host1x.h
10.74
KB
-rw-r--r--
hp_sdc.h
14.02
KB
-rw-r--r--
hpet.h
2.55
KB
-rw-r--r--
hrtimer.h
16.01
KB
-rw-r--r--
hrtimer_defs.h
660
B
-rw-r--r--
htcpld.h
617
B
-rw-r--r--
huge_mm.h
13.27
KB
-rw-r--r--
hugetlb.h
29.09
KB
-rw-r--r--
hugetlb_cgroup.h
7.07
KB
-rw-r--r--
hugetlb_inline.h
374
B
-rw-r--r--
hw_breakpoint.h
4.15
KB
-rw-r--r--
hw_random.h
2.24
KB
-rw-r--r--
hwmon-sysfs.h
2.77
KB
-rw-r--r--
hwmon-vid.h
862
B
-rw-r--r--
hwmon.h
14.78
KB
-rw-r--r--
hwspinlock.h
15.64
KB
-rw-r--r--
hyperv.h
47.93
KB
-rw-r--r--
hypervisor.h
608
B
-rw-r--r--
i2c-algo-bit.h
1.4
KB
-rw-r--r--
i2c-algo-pca.h
2.89
KB
-rw-r--r--
i2c-algo-pcf.h
1.21
KB
-rw-r--r--
i2c-dev.h
371
B
-rw-r--r--
i2c-mux.h
1.63
KB
-rw-r--r--
i2c-smbus.h
1.73
KB
-rw-r--r--
i2c.h
37.74
KB
-rw-r--r--
i8042.h
1.99
KB
-rw-r--r--
i8253.h
809
B
-rw-r--r--
icmp.h
1
KB
-rw-r--r--
icmpv6.h
2.7
KB
-rw-r--r--
idle_inject.h
932
B
-rw-r--r--
idr.h
9.58
KB
-rw-r--r--
ieee80211.h
123.96
KB
-rw-r--r--
ieee802154.h
11.12
KB
-rw-r--r--
if_arp.h
1.63
KB
-rw-r--r--
if_bridge.h
4.9
KB
-rw-r--r--
if_eql.h
1.07
KB
-rw-r--r--
if_ether.h
1.26
KB
-rw-r--r--
if_fddi.h
3.24
KB
-rw-r--r--
if_hsr.h
586
B
-rw-r--r--
if_link.h
592
B
-rw-r--r--
if_ltalk.h
188
B
-rw-r--r--
if_macvlan.h
2.69
KB
-rw-r--r--
if_phonet.h
319
B
-rw-r--r--
if_pppol2tp.h
516
B
-rw-r--r--
if_pppox.h
2.84
KB
-rw-r--r--
if_rmnet.h
2.04
KB
-rw-r--r--
if_tap.h
2.21
KB
-rw-r--r--
if_team.h
7.84
KB
-rw-r--r--
if_tun.h
1.55
KB
-rw-r--r--
if_tunnel.h
409
B
-rw-r--r--
if_vlan.h
20.37
KB
-rw-r--r--
igmp.h
4.33
KB
-rw-r--r--
ihex.h
2.15
KB
-rw-r--r--
ima.h
5.7
KB
-rw-r--r--
imx-media.h
605
B
-rw-r--r--
in.h
2.29
KB
-rw-r--r--
in6.h
1.63
KB
-rw-r--r--
indirect_call_wrapper.h
2.23
KB
-rw-r--r--
inet.h
2.64
KB
-rw-r--r--
inet_diag.h
2.74
KB
-rw-r--r--
inetdevice.h
8.87
KB
-rw-r--r--
init.h
11.39
KB
-rw-r--r--
init_ohci1394_dma.h
196
B
-rw-r--r--
init_syscalls.h
1.01
KB
-rw-r--r--
init_task.h
1.3
KB
-rw-r--r--
initrd.h
1.02
KB
-rw-r--r--
inotify.h
713
B
-rw-r--r--
input.h
19.88
KB
-rw-r--r--
instrumentation.h
1.93
KB
-rw-r--r--
instrumented.h
3.6
KB
-rw-r--r--
integrity.h
1.15
KB
-rw-r--r--
intel-iommu.h
27.48
KB
-rw-r--r--
intel-ish-client-if.h
3.97
KB
-rw-r--r--
intel-svm.h
1.54
KB
-rw-r--r--
intel_rapl.h
4.14
KB
-rw-r--r--
intel_th.h
2.44
KB
-rw-r--r--
interconnect-provider.h
5.51
KB
-rw-r--r--
interconnect.h
2.88
KB
-rw-r--r--
interrupt.h
23.81
KB
-rw-r--r--
interval_tree.h
831
B
-rw-r--r--
interval_tree_generic.h
6.7
KB
-rw-r--r--
io-64-nonatomic-hi-lo.h
2.41
KB
-rw-r--r--
io-64-nonatomic-lo-hi.h
2.41
KB
-rw-r--r--
io-mapping.h
4.65
KB
-rw-r--r--
io-pgtable.h
8.39
KB
-rw-r--r--
io.h
5.02
KB
-rw-r--r--
io_uring.h
902
B
-rw-r--r--
ioam6.h
226
B
-rw-r--r--
ioam6_genl.h
266
B
-rw-r--r--
ioam6_iptunnel.h
285
B
-rw-r--r--
ioasid.h
2.07
KB
-rw-r--r--
iocontext.h
4.59
KB
-rw-r--r--
iomap.h
11.67
KB
-rw-r--r--
iommu-helper.h
1.12
KB
-rw-r--r--
iommu.h
34.04
KB
-rw-r--r--
iopoll.h
7.58
KB
-rw-r--r--
ioport.h
12.16
KB
-rw-r--r--
ioprio.h
1.74
KB
-rw-r--r--
iova.h
6.15
KB
-rw-r--r--
ip.h
1
KB
-rw-r--r--
ipack.h
8.69
KB
-rw-r--r--
ipc.h
613
B
-rw-r--r--
ipc_namespace.h
4.98
KB
-rw-r--r--
ipmi.h
10.88
KB
-rw-r--r--
ipmi_smi.h
7.98
KB
-rw-r--r--
ipv6.h
8.67
KB
-rw-r--r--
ipv6_route.h
372
B
-rw-r--r--
irq.h
41.58
KB
-rw-r--r--
irq_poll.h
575
B
-rw-r--r--
irq_sim.h
789
B
-rw-r--r--
irq_work.h
1.79
KB
-rw-r--r--
irqbypass.h
3.45
KB
-rw-r--r--
irqchip.h
2.33
KB
-rw-r--r--
irqdesc.h
7.75
KB
-rw-r--r--
irqdomain.h
19.98
KB
-rw-r--r--
irqflags.h
7.7
KB
-rw-r--r--
irqhandler.h
300
B
-rw-r--r--
irqnr.h
856
B
-rw-r--r--
irqreturn.h
503
B
-rw-r--r--
isa.h
2.12
KB
-rw-r--r--
isapnp.h
2.88
KB
-rw-r--r--
iscsi_boot_sysfs.h
3.71
KB
-rw-r--r--
iscsi_ibft.h
847
B
-rw-r--r--
iversion.h
12.37
KB
-rw-r--r--
jbd2.h
51.42
KB
-rw-r--r--
jhash.h
4.56
KB
-rw-r--r--
jiffies.h
15.07
KB
-rw-r--r--
journal-head.h
2.91
KB
-rw-r--r--
joystick.h
437
B
-rw-r--r--
jump_label.h
16.04
KB
-rw-r--r--
jump_label_ratelimit.h
2.77
KB
-rw-r--r--
jz4740-adc.h
1023
B
-rw-r--r--
jz4780-nemc.h
976
B
-rw-r--r--
kallsyms.h
4.5
KB
-rw-r--r--
kasan-checks.h
1.46
KB
-rw-r--r--
kasan-tags.h
487
B
-rw-r--r--
kasan.h
13.31
KB
-rw-r--r--
kbd_diacr.h
198
B
-rw-r--r--
kbd_kern.h
3.6
KB
-rw-r--r--
kbuild.h
380
B
-rw-r--r--
kconfig.h
2.63
KB
-rw-r--r--
kcore.h
891
B
-rw-r--r--
kcov.h
2.41
KB
-rw-r--r--
kcsan-checks.h
15.86
KB
-rw-r--r--
kcsan.h
1.88
KB
-rw-r--r--
kdb.h
7.33
KB
-rw-r--r--
kdebug.h
487
B
-rw-r--r--
kdev_t.h
1.8
KB
-rw-r--r--
kern_levels.h
1.57
KB
-rw-r--r--
kernel-page-flags.h
528
B
-rw-r--r--
kernel.h
17.14
KB
-rw-r--r--
kernel_read_file.h
1.64
KB
-rw-r--r--
kernel_stat.h
2.97
KB
-rw-r--r--
kernelcapi.h
1.45
KB
-rw-r--r--
kernfs.h
18.11
KB
-rw-r--r--
kexec.h
11.37
KB
-rw-r--r--
key-type.h
6.53
KB
-rw-r--r--
key.h
15.75
KB
-rw-r--r--
keyboard.h
665
B
-rw-r--r--
keyctl.h
1.25
KB
-rw-r--r--
keyslot-manager.h
3.78
KB
-rw-r--r--
kfence.h
8
KB
-rw-r--r--
kfifo.h
26.18
KB
-rw-r--r--
kgdb.h
12.05
KB
-rw-r--r--
khugepaged.h
2.74
KB
-rw-r--r--
klist.h
1.88
KB
-rw-r--r--
kmemleak.h
3.27
KB
-rw-r--r--
kmod.h
1.02
KB
-rw-r--r--
kmsg_dump.h
2.71
KB
-rw-r--r--
kobj_map.h
545
B
-rw-r--r--
kobject.h
7.69
KB
-rw-r--r--
kobject_ns.h
1.9
KB
-rw-r--r--
kprobes.h
13.95
KB
-rw-r--r--
kref.h
3.08
KB
-rw-r--r--
ks0108.h
970
B
-rw-r--r--
ks8842.h
632
B
-rw-r--r--
ks8851_mll.h
472
B
-rw-r--r--
ksm.h
2.47
KB
-rw-r--r--
kstrtox.h
6.59
KB
-rw-r--r--
kthread.h
6.9
KB
-rw-r--r--
ktime.h
5.38
KB
-rw-r--r--
kvm_dirty_ring.h
2.73
KB
-rw-r--r--
kvm_host.h
58.09
KB
-rw-r--r--
kvm_irqfd.h
2
KB
-rw-r--r--
kvm_para.h
402
B
-rw-r--r--
kvm_types.h
2.17
KB
-rw-r--r--
l2tp.h
261
B
-rw-r--r--
lantiq.h
365
B
-rw-r--r--
lapb.h
1.71
KB
-rw-r--r--
latencytop.h
1.16
KB
-rw-r--r--
lcd.h
3.78
KB
-rw-r--r--
lcm.h
275
B
-rw-r--r--
led-class-flash.h
6.74
KB
-rw-r--r--
led-class-multicolor.h
3.26
KB
-rw-r--r--
led-lm3530.h
3.7
KB
-rw-r--r--
leds-bd2802.h
476
B
-rw-r--r--
leds-lp3944.h
950
B
-rw-r--r--
leds-lp3952.h
2.35
KB
-rw-r--r--
leds-pca9532.h
866
B
-rw-r--r--
leds-regulator.h
1.14
KB
-rw-r--r--
leds-ti-lmu-common.h
1.12
KB
-rw-r--r--
leds.h
18.26
KB
-rw-r--r--
libata.h
66.97
KB
-rw-r--r--
libfdt.h
202
B
-rw-r--r--
libfdt_env.h
491
B
-rw-r--r--
libgcc.h
463
B
-rw-r--r--
libnvdimm.h
10.38
KB
-rw-r--r--
libps2.h
1.89
KB
-rw-r--r--
license.h
418
B
-rw-r--r--
limits.h
715
B
-rw-r--r--
linear_range.h
1.72
KB
-rw-r--r--
linkage.h
9.57
KB
-rw-r--r--
linkmode.h
2.5
KB
-rw-r--r--
linux_logo.h
1.91
KB
-rw-r--r--
lis3lv02d.h
5
KB
-rw-r--r--
list.h
29.78
KB
-rw-r--r--
list_bl.h
4.79
KB
-rw-r--r--
list_lru.h
7.29
KB
-rw-r--r--
list_nulls.h
4.22
KB
-rw-r--r--
list_sort.h
374
B
-rw-r--r--
litex.h
2.06
KB
-rw-r--r--
livepatch.h
8.22
KB
-rw-r--r--
llc.h
749
B
-rw-r--r--
llist.h
9.06
KB
-rw-r--r--
local_lock.h
1.33
KB
-rw-r--r--
local_lock_internal.h
3.42
KB
-rw-r--r--
lockdep.h
21.34
KB
-rw-r--r--
lockdep_types.h
5.18
KB
-rw-r--r--
lockref.h
1.5
KB
-rw-r--r--
log2.h
6.22
KB
-rw-r--r--
logic_iomem.h
2.07
KB
-rw-r--r--
logic_pio.h
3.23
KB
-rw-r--r--
lp.h
2.76
KB
-rw-r--r--
lru_cache.h
11.83
KB
-rw-r--r--
lsm_audit.h
2.81
KB
-rw-r--r--
lsm_hook_defs.h
20.89
KB
-rw-r--r--
lsm_hooks.h
74.39
KB
-rw-r--r--
lz4.h
26.44
KB
-rw-r--r--
lzo.h
1.55
KB
-rw-r--r--
mISDNdsp.h
1.19
KB
-rw-r--r--
mISDNhw.h
5.39
KB
-rw-r--r--
mISDNif.h
14.89
KB
-rw-r--r--
mailbox_client.h
1.71
KB
-rw-r--r--
mailbox_controller.h
5.67
KB
-rw-r--r--
maple.h
2.71
KB
-rw-r--r--
marvell_phy.h
1.69
KB
-rw-r--r--
math.h
5.06
KB
-rw-r--r--
math64.h
7.48
KB
-rw-r--r--
mbcache.h
1.57
KB
-rw-r--r--
mbus.h
3.09
KB
-rw-r--r--
mc146818rtc.h
4.46
KB
-rw-r--r--
mc6821.h
1.18
KB
-rw-r--r--
mcb.h
3.72
KB
-rw-r--r--
mdev.h
5.94
KB
-rw-r--r--
mdio-bitbang.h
1.31
KB
-rw-r--r--
mdio-gpio.h
177
B
-rw-r--r--
mdio-mux.h
1021
B
-rw-r--r--
mdio.h
12.42
KB
-rw-r--r--
mei_cl_bus.h
3.75
KB
-rw-r--r--
mem_encrypt.h
885
B
-rw-r--r--
memblock.h
20.08
KB
-rw-r--r--
memcontrol.h
43.18
KB
-rw-r--r--
memfd.h
365
B
-rw-r--r--
memory.h
5.99
KB
-rw-r--r--
memory_hotplug.h
11.42
KB
-rw-r--r--
mempolicy.h
7.37
KB
-rw-r--r--
mempool.h
3.35
KB
-rw-r--r--
memregion.h
403
B
-rw-r--r--
memremap.h
5.97
KB
-rw-r--r--
memstick.h
9.6
KB
-rw-r--r--
mhi.h
26.04
KB
-rw-r--r--
micrel_phy.h
1.85
KB
-rw-r--r--
microchipphy.h
2.65
KB
-rw-r--r--
migrate.h
5.41
KB
-rw-r--r--
migrate_mode.h
758
B
-rw-r--r--
mii.h
16.33
KB
-rw-r--r--
mii_timestamper.h
3.57
KB
-rw-r--r--
min_heap.h
3.3
KB
-rw-r--r--
minmax.h
4.02
KB
-rw-r--r--
misc_cgroup.h
2.95
KB
-rw-r--r--
miscdevice.h
3.2
KB
-rw-r--r--
mm.h
104.32
KB
-rw-r--r--
mm_inline.h
2.92
KB
-rw-r--r--
mm_types.h
25.06
KB
-rw-r--r--
mm_types_task.h
2.5
KB
-rw-r--r--
mman.h
3.91
KB
-rw-r--r--
mmap_lock.h
4.25
KB
-rw-r--r--
mmdebug.h
2.25
KB
-rw-r--r--
mmiotrace.h
3.05
KB
-rw-r--r--
mmu_context.h
855
B
-rw-r--r--
mmu_notifier.h
24.64
KB
-rw-r--r--
mmzone.h
46.64
KB
-rw-r--r--
mnt_namespace.h
697
B
-rw-r--r--
mod_devicetable.h
23.42
KB
-rw-r--r--
module.h
23.58
KB
-rw-r--r--
module_signature.h
1.22
KB
-rw-r--r--
moduleloader.h
3.1
KB
-rw-r--r--
moduleparam.h
22.34
KB
-rw-r--r--
most.h
12.2
KB
-rw-r--r--
mount.h
3.93
KB
-rw-r--r--
moxtet.h
2.36
KB
-rw-r--r--
mpage.h
737
B
-rw-r--r--
mpi.h
8.41
KB
-rw-r--r--
mpls.h
394
B
-rw-r--r--
mpls_iptunnel.h
178
B
-rw-r--r--
mroute.h
1.97
KB
-rw-r--r--
mroute6.h
2.41
KB
-rw-r--r--
mroute_base.h
12.17
KB
-rw-r--r--
msdos_fs.h
273
B
-rw-r--r--
msdos_partition.h
1.62
KB
-rw-r--r--
msg.h
395
B
-rw-r--r--
msi.h
15.36
KB
-rw-r--r--
mtio.h
1.29
KB
-rw-r--r--
mutex.h
6.65
KB
-rw-r--r--
mv643xx.h
51.05
KB
-rw-r--r--
mv643xx_eth.h
1.95
KB
-rw-r--r--
mv643xx_i2c.h
335
B
-rw-r--r--
mvebu-pmsu.h
520
B
-rw-r--r--
mxm-wmi.h
399
B
-rw-r--r--
namei.h
3.85
KB
-rw-r--r--
nd.h
5.55
KB
-rw-r--r--
ndctl.h
674
B
-rw-r--r--
net.h
11.43
KB
-rw-r--r--
netdev_features.h
10.75
KB
-rw-r--r--
netdevice.h
167.19
KB
-rw-r--r--
netfilter.h
13.47
KB
-rw-r--r--
netfilter_bridge.h
2.08
KB
-rw-r--r--
netfilter_defs.h
486
B
-rw-r--r--
netfilter_ingress.h
1.44
KB
-rw-r--r--
netfilter_ipv4.h
1.05
KB
-rw-r--r--
netfilter_ipv6.h
5.85
KB
-rw-r--r--
netfs.h
7.93
KB
-rw-r--r--
netlink.h
7.88
KB
-rw-r--r--
netpoll.h
2.4
KB
-rw-r--r--
nfs.h
1.31
KB
-rw-r--r--
nfs3.h
260
B
-rw-r--r--
nfs4.h
18.95
KB
-rw-r--r--
nfs_fs.h
17.83
KB
-rw-r--r--
nfs_fs_i.h
308
B
-rw-r--r--
nfs_fs_sb.h
10.05
KB
-rw-r--r--
nfs_iostat.h
4.18
KB
-rw-r--r--
nfs_page.h
6.75
KB
-rw-r--r--
nfs_ssc.h
2.01
KB
-rw-r--r--
nfs_xdr.h
42.12
KB
-rw-r--r--
nfsacl.h
1.4
KB
-rw-r--r--
nitro_enclaves.h
267
B
-rw-r--r--
nl802154.h
3.85
KB
-rw-r--r--
nls.h
3.08
KB
-rw-r--r--
nmi.h
6.72
KB
-rw-r--r--
node.h
4.67
KB
-rw-r--r--
nodemask.h
16.99
KB
-rw-r--r--
nospec.h
2.16
KB
-rw-r--r--
notifier.h
7.84
KB
-rw-r--r--
ns_common.h
283
B
-rw-r--r--
nsc_gpio.h
1.42
KB
-rw-r--r--
nsproxy.h
3.09
KB
-rw-r--r--
ntb.h
52.43
KB
-rw-r--r--
ntb_transport.h
3.8
KB
-rw-r--r--
nubus.h
5.54
KB
-rw-r--r--
numa.h
1.25
KB
-rw-r--r--
nvme-fc-driver.h
45.86
KB
-rw-r--r--
nvme-fc.h
9.72
KB
-rw-r--r--
nvme-rdma.h
2.04
KB
-rw-r--r--
nvme-tcp.h
4.4
KB
-rw-r--r--
nvme.h
37.72
KB
-rw-r--r--
nvmem-consumer.h
6.78
KB
-rw-r--r--
nvmem-provider.h
4.72
KB
-rw-r--r--
nvram.h
3.47
KB
-rw-r--r--
objagg.h
1.99
KB
-rw-r--r--
objtool.h
4.35
KB
-rw-r--r--
of.h
43.24
KB
-rw-r--r--
of_address.h
4.17
KB
-rw-r--r--
of_clk.h
819
B
-rw-r--r--
of_device.h
2.93
KB
-rw-r--r--
of_dma.h
2.3
KB
-rw-r--r--
of_fdt.h
3.65
KB
-rw-r--r--
of_gpio.h
4.07
KB
-rw-r--r--
of_graph.h
3.55
KB
-rw-r--r--
of_iommu.h
505
B
-rw-r--r--
of_irq.h
3.75
KB
-rw-r--r--
of_mdio.h
3.51
KB
-rw-r--r--
of_net.h
824
B
-rw-r--r--
of_pci.h
915
B
-rw-r--r--
of_pdt.h
1.14
KB
-rw-r--r--
of_platform.h
3.88
KB
-rw-r--r--
of_reserved_mem.h
2.24
KB
-rw-r--r--
oid_registry.h
5.63
KB
-rw-r--r--
olpc-ec.h
1.95
KB
-rw-r--r--
omap-dma.h
9.79
KB
-rw-r--r--
omap-gpmc.h
2.64
KB
-rw-r--r--
omap-iommu.h
880
B
-rw-r--r--
omap-mailbox.h
689
B
-rw-r--r--
omapfb.h
576
B
-rw-r--r--
once.h
1.87
KB
-rw-r--r--
once_lite.h
677
B
-rw-r--r--
oom.h
3.26
KB
-rw-r--r--
openvswitch.h
403
B
-rw-r--r--
osq_lock.h
1.04
KB
-rw-r--r--
overflow.h
6.42
KB
-rw-r--r--
packing.h
1.76
KB
-rw-r--r--
padata.h
6.12
KB
-rw-r--r--
page-flags-layout.h
3.21
KB
-rw-r--r--
page-flags.h
28
KB
-rw-r--r--
page-isolation.h
1.64
KB
-rw-r--r--
page_counter.h
2.3
KB
-rw-r--r--
page_ext.h
1.83
KB
-rw-r--r--
page_idle.h
2.61
KB
-rw-r--r--
page_owner.h
2.31
KB
-rw-r--r--
page_ref.h
4.95
KB
-rw-r--r--
page_reporting.h
895
B
-rw-r--r--
pageblock-flags.h
2.31
KB
-rw-r--r--
pagemap.h
31.48
KB
-rw-r--r--
pagevec.h
2.04
KB
-rw-r--r--
pagewalk.h
4.07
KB
-rw-r--r--
panic.h
2.69
KB
-rw-r--r--
panic_notifier.h
296
B
-rw-r--r--
parman.h
2.87
KB
-rw-r--r--
parport.h
19.09
KB
-rw-r--r--
parport_pc.h
6.56
KB
-rw-r--r--
parser.h
1.17
KB
-rw-r--r--
part_stat.h
2.38
KB
-rw-r--r--
pata_arasan_cf_data.h
1.22
KB
-rw-r--r--
patchkey.h
757
B
-rw-r--r--
path.h
572
B
-rw-r--r--
pch_dma.h
408
B
-rw-r--r--
pci-acpi.h
3.85
KB
-rw-r--r--
pci-ats.h
1.76
KB
-rw-r--r--
pci-dma-compat.h
3.66
KB
-rw-r--r--
pci-ecam.h
3.2
KB
-rw-r--r--
pci-ep-cfs.h
956
B
-rw-r--r--
pci-epc.h
9.47
KB
-rw-r--r--
pci-epf.h
7.06
KB
-rw-r--r--
pci-p2pdma.h
3.95
KB
-rw-r--r--
pci.h
89.14
KB
-rw-r--r--
pci_hotplug.h
4.35
KB
-rw-r--r--
pci_ids.h
120.69
KB
-rw-r--r--
pcs-lynx.h
425
B
-rw-r--r--
pda_power.h
1005
B
-rw-r--r--
pe.h
16.17
KB
-rw-r--r--
percpu-defs.h
18.12
KB
-rw-r--r--
percpu-refcount.h
10.84
KB
-rw-r--r--
percpu-rwsem.h
4.16
KB
-rw-r--r--
percpu.h
4.65
KB
-rw-r--r--
percpu_counter.h
4.39
KB
-rw-r--r--
perf_event.h
46.38
KB
-rw-r--r--
perf_regs.h
1.05
KB
-rw-r--r--
personality.h
393
B
-rw-r--r--
pfn.h
666
B
-rw-r--r--
pfn_t.h
3.21
KB
-rw-r--r--
pgtable.h
43.89
KB
-rw-r--r--
phonet.h
537
B
-rw-r--r--
phy.h
57.75
KB
-rw-r--r--
phy_fixed.h
1.77
KB
-rw-r--r--
phy_led_triggers.h
1.01
KB
-rw-r--r--
phylink.h
19.37
KB
-rw-r--r--
pid.h
6.29
KB
-rw-r--r--
pid_namespace.h
2.08
KB
-rw-r--r--
pim.h
2.67
KB
-rw-r--r--
pipe_fs_i.h
8.68
KB
-rw-r--r--
pkeys.h
990
B
-rw-r--r--
pktcdvd.h
5.87
KB
-rw-r--r--
pl320-ipc.h
209
B
-rw-r--r--
platform_device.h
12.21
KB
-rw-r--r--
platform_profile.h
1.12
KB
-rw-r--r--
pldmfw.h
4.76
KB
-rw-r--r--
plist.h
8.66
KB
-rw-r--r--
pm-trace.h
940
B
-rw-r--r--
pm.h
32.64
KB
-rw-r--r--
pm_clock.h
2.58
KB
-rw-r--r--
pm_domain.h
13.18
KB
-rw-r--r--
pm_opp.h
15.1
KB
-rw-r--r--
pm_qos.h
10.41
KB
-rw-r--r--
pm_runtime.h
18.5
KB
-rw-r--r--
pm_wakeirq.h
1.31
KB
-rw-r--r--
pm_wakeup.h
6.28
KB
-rw-r--r--
pmbus.h
2.48
KB
-rw-r--r--
pmu.h
2.44
KB
-rw-r--r--
pnfs_osd_xdr.h
9.27
KB
-rw-r--r--
pnp.h
14.9
KB
-rw-r--r--
poison.h
2.48
KB
-rw-r--r--
poll.h
4.07
KB
-rw-r--r--
posix-clock.h
3.91
KB
-rw-r--r--
posix-timers.h
7.01
KB
-rw-r--r--
posix_acl.h
3.27
KB
-rw-r--r--
posix_acl_xattr.h
1.75
KB
-rw-r--r--
power_supply.h
17.74
KB
-rw-r--r--
powercap.h
11.98
KB
-rw-r--r--
ppp-comp.h
2.95
KB
-rw-r--r--
ppp_channel.h
2.99
KB
-rw-r--r--
ppp_defs.h
305
B
-rw-r--r--
pps_kernel.h
2.9
KB
-rw-r--r--
pr.h
566
B
-rw-r--r--
prandom.h
3.75
KB
-rw-r--r--
preempt.h
11.99
KB
-rw-r--r--
prefetch.h
1.7
KB
-rw-r--r--
prime_numbers.h
1.35
KB
-rw-r--r--
printk.h
22.19
KB
-rw-r--r--
prmt.h
143
B
-rw-r--r--
proc_fs.h
8.35
KB
-rw-r--r--
proc_ns.h
2.57
KB
-rw-r--r--
processor.h
1.84
KB
-rw-r--r--
profile.h
2.65
KB
-rw-r--r--
projid.h
2.22
KB
-rw-r--r--
property.h
17.28
KB
-rw-r--r--
pruss_driver.h
1.27
KB
-rw-r--r--
psci.h
1.52
KB
-rw-r--r--
pseudo_fs.h
355
B
-rw-r--r--
psi.h
1.56
KB
-rw-r--r--
psi_types.h
4.31
KB
-rw-r--r--
psp-sev.h
17.76
KB
-rw-r--r--
psp-tee.h
2.65
KB
-rw-r--r--
pstore.h
7.63
KB
-rw-r--r--
pstore_blk.h
1.53
KB
-rw-r--r--
pstore_ram.h
3.82
KB
-rw-r--r--
pstore_zone.h
2.28
KB
-rw-r--r--
ptdump.h
567
B
-rw-r--r--
pti.h
240
B
-rw-r--r--
ptp_classify.h
4.35
KB
-rw-r--r--
ptp_clock_kernel.h
12.2
KB
-rw-r--r--
ptp_kvm.h
430
B
-rw-r--r--
ptp_pch.h
623
B
-rw-r--r--
ptr_ring.h
16.29
KB
-rw-r--r--
ptrace.h
14.92
KB
-rw-r--r--
purgatory.h
590
B
-rw-r--r--
pvclock_gtod.h
548
B
-rw-r--r--
pwm.h
16.37
KB
-rw-r--r--
pwm_backlight.h
722
B
-rw-r--r--
pxa168_eth.h
728
B
-rw-r--r--
pxa2xx_ssp.h
11.13
KB
-rw-r--r--
qcom-geni-se.h
13.74
KB
-rw-r--r--
qcom_scm.h
3.81
KB
-rw-r--r--
qnx6_fs.h
3.27
KB
-rw-r--r--
quota.h
18.67
KB
-rw-r--r--
quotaops.h
10.28
KB
-rw-r--r--
radix-tree.h
15.63
KB
-rw-r--r--
raid_class.h
2.1
KB
-rw-r--r--
ramfs.h
695
B
-rw-r--r--
random.h
4.12
KB
-rw-r--r--
randomize_kstack.h
1.92
KB
-rw-r--r--
range.h
775
B
-rw-r--r--
ras.h
1.02
KB
-rw-r--r--
ratelimit.h
1.72
KB
-rw-r--r--
ratelimit_types.h
1.14
KB
-rw-r--r--
rational.h
639
B
-rw-r--r--
rbtree.h
8.93
KB
-rw-r--r--
rbtree_augmented.h
9.53
KB
-rw-r--r--
rbtree_latch.h
6.66
KB
-rw-r--r--
rbtree_types.h
946
B
-rw-r--r--
rcu_node_tree.h
3.73
KB
-rw-r--r--
rcu_segcblist.h
10.03
KB
-rw-r--r--
rcu_sync.h
1.46
KB
-rw-r--r--
rculist.h
28.56
KB
-rw-r--r--
rculist_bl.h
3.29
KB
-rw-r--r--
rculist_nulls.h
6.57
KB
-rw-r--r--
rcupdate.h
36.33
KB
-rw-r--r--
rcupdate_trace.h
3.08
KB
-rw-r--r--
rcupdate_wait.h
1.73
KB
-rw-r--r--
rcutiny.h
3.32
KB
-rw-r--r--
rcutree.h
2.34
KB
-rw-r--r--
rcuwait.h
1.84
KB
-rw-r--r--
reboot-mode.h
600
B
-rw-r--r--
reboot.h
2.18
KB
-rw-r--r--
reciprocal_div.h
3.28
KB
-rw-r--r--
refcount.h
12.02
KB
-rw-r--r--
regmap.h
62.95
KB
-rw-r--r--
regset.h
11.35
KB
-rw-r--r--
relay.h
8.47
KB
-rw-r--r--
remoteproc.h
24.77
KB
-rw-r--r--
resctrl.h
6.5
KB
-rw-r--r--
reset-controller.h
3.57
KB
-rw-r--r--
reset.h
30.24
KB
-rw-r--r--
resource.h
339
B
-rw-r--r--
resource_ext.h
2.08
KB
-rw-r--r--
restart_block.h
1.11
KB
-rw-r--r--
rfkill.h
10.52
KB
-rw-r--r--
rhashtable-types.h
3.45
KB
-rw-r--r--
rhashtable.h
37.59
KB
-rw-r--r--
ring_buffer.h
7.43
KB
-rw-r--r--
rio.h
19.02
KB
-rw-r--r--
rio_drv.h
14.32
KB
-rw-r--r--
rio_ids.h
1.08
KB
-rw-r--r--
rio_regs.h
19.07
KB
-rw-r--r--
rmap.h
8.96
KB
-rw-r--r--
rmi.h
12.04
KB
-rw-r--r--
rndis.h
16.86
KB
-rw-r--r--
rodata_test.h
394
B
-rw-r--r--
root_dev.h
619
B
-rw-r--r--
rpmsg.h
8.4
KB
-rw-r--r--
rslib.h
3.67
KB
-rw-r--r--
rtc.h
8.65
KB
-rw-r--r--
rtmutex.h
2.97
KB
-rw-r--r--
rtnetlink.h
4.46
KB
-rw-r--r--
rtsx_common.h
890
B
-rw-r--r--
rtsx_pci.h
39.82
KB
-rw-r--r--
rtsx_usb.h
15.42
KB
-rw-r--r--
rwbase_rt.h
876
B
-rw-r--r--
rwlock.h
4.55
KB
-rw-r--r--
rwlock_api_smp.h
7.65
KB
-rw-r--r--
rwlock_rt.h
2.98
KB
-rw-r--r--
rwlock_types.h
1.77
KB
-rw-r--r--
rwsem.h
7.32
KB
-rw-r--r--
s3c_adc_battery.h
923
B
-rw-r--r--
sbitmap.h
16.9
KB
-rw-r--r--
scatterlist.h
17.56
KB
-rw-r--r--
scc.h
2.84
KB
-rw-r--r--
sched.h
64.44
KB
-rw-r--r--
sched_clock.h
1.44
KB
-rw-r--r--
scmi_protocol.h
26.03
KB
-rw-r--r--
scpi_protocol.h
2.67
KB
-rw-r--r--
screen_info.h
191
B
-rw-r--r--
scs.h
1.83
KB
-rw-r--r--
sctp.h
22.88
KB
-rw-r--r--
scx200.h
1.82
KB
-rw-r--r--
scx200_gpio.h
2.38
KB
-rw-r--r--
sdb.h
4.17
KB
-rw-r--r--
seccomp.h
3.45
KB
-rw-r--r--
secretmem.h
1.17
KB
-rw-r--r--
securebits.h
239
B
-rw-r--r--
security.h
58.64
KB
-rw-r--r--
sed-opal.h
1.66
KB
-rw-r--r--
seg6.h
121
B
-rw-r--r--
seg6_genl.h
136
B
-rw-r--r--
seg6_hmac.h
136
B
-rw-r--r--
seg6_iptunnel.h
148
B
-rw-r--r--
seg6_local.h
100
B
-rw-r--r--
selection.h
1.81
KB
-rw-r--r--
sem.h
599
B
-rw-r--r--
semaphore.h
1.35
KB
-rw-r--r--
seq_buf.h
3.94
KB
-rw-r--r--
seq_file.h
8.75
KB
-rw-r--r--
seq_file_net.h
730
B
-rw-r--r--
seqlock.h
38.18
KB
-rw-r--r--
seqno-fence.h
3.57
KB
-rw-r--r--
serdev.h
9.82
KB
-rw-r--r--
serial.h
630
B
-rw-r--r--
serial_8250.h
6.57
KB
-rw-r--r--
serial_bcm63xx.h
4.73
KB
-rw-r--r--
serial_core.h
17.65
KB
-rw-r--r--
serial_max3100.h
1.19
KB
-rw-r--r--
serial_s3c.h
9.42
KB
-rw-r--r--
serial_sci.h
1.6
KB
-rw-r--r--
serio.h
4.28
KB
-rw-r--r--
set_memory.h
1.66
KB
-rw-r--r--
sfp.h
15.87
KB
-rw-r--r--
sh_clk.h
5.96
KB
-rw-r--r--
sh_dma.h
3.47
KB
-rw-r--r--
sh_eth.h
369
B
-rw-r--r--
sh_intc.h
3.42
KB
-rw-r--r--
sh_timer.h
172
B
-rw-r--r--
shdma-base.h
4.27
KB
-rw-r--r--
shm.h
968
B
-rw-r--r--
shmem_fs.h
5.81
KB
-rw-r--r--
shrinker.h
3.25
KB
-rw-r--r--
signal.h
13.56
KB
-rw-r--r--
signal_types.h
1.68
KB
-rw-r--r--
signalfd.h
817
B
-rw-r--r--
siox.h
2.26
KB
-rw-r--r--
siphash.h
4.53
KB
-rw-r--r--
sizes.h
1.27
KB
-rw-r--r--
skb_array.h
5.18
KB
-rw-r--r--
skbuff.h
133.77
KB
-rw-r--r--
skmsg.h
13.29
KB
-rw-r--r--
slab.h
22.32
KB
-rw-r--r--
slab_def.h
3.02
KB
-rw-r--r--
slimbus.h
6.93
KB
-rw-r--r--
slub_def.h
6.22
KB
-rw-r--r--
sm501-regs.h
11.62
KB
-rw-r--r--
sm501.h
4.02
KB
-rw-r--r--
smc911x.h
294
B
-rw-r--r--
smc91x.h
1.57
KB
-rw-r--r--
smp.h
7.63
KB
-rw-r--r--
smp_types.h
1.35
KB
-rw-r--r--
smpboot.h
1.68
KB
-rw-r--r--
smsc911x.h
1.63
KB
-rw-r--r--
smscphy.h
1.25
KB
-rw-r--r--
sock_diag.h
2.31
KB
-rw-r--r--
socket.h
15.04
KB
-rw-r--r--
sockptr.h
2.23
KB
-rw-r--r--
sonet.h
469
B
-rw-r--r--
sony-laptop.h
1.41
KB
-rw-r--r--
sonypi.h
1.71
KB
-rw-r--r--
sort.h
346
B
-rw-r--r--
sound.h
685
B
-rw-r--r--
soundcard.h
1.59
KB
-rw-r--r--
spinlock.h
14.07
KB
-rw-r--r--
spinlock_api_smp.h
5.47
KB
-rw-r--r--
spinlock_api_up.h
3.31
KB
-rw-r--r--
spinlock_rt.h
4.11
KB
-rw-r--r--
spinlock_types.h
1.78
KB
-rw-r--r--
spinlock_types_raw.h
1.69
KB
-rw-r--r--
spinlock_types_up.h
726
B
-rw-r--r--
spinlock_up.h
2.16
KB
-rw-r--r--
splice.h
3.24
KB
-rw-r--r--
spmi.h
5.59
KB
-rw-r--r--
sram.h
844
B
-rw-r--r--
srcu.h
6.93
KB
-rw-r--r--
srcutiny.h
2.75
KB
-rw-r--r--
srcutree.h
4.8
KB
-rw-r--r--
ssbi.h
726
B
-rw-r--r--
stackdepot.h
768
B
-rw-r--r--
stackleak.h
902
B
-rw-r--r--
stackprotector.h
361
B
-rw-r--r--
stacktrace.h
3.89
KB
-rw-r--r--
start_kernel.h
415
B
-rw-r--r--
stat.h
1.33
KB
-rw-r--r--
statfs.h
1.78
KB
-rw-r--r--
static_call.h
10.17
KB
-rw-r--r--
static_call_types.h
2.74
KB
-rw-r--r--
static_key.h
30
B
-rw-r--r--
stdarg.h
313
B
-rw-r--r--
stddef.h
827
B
-rw-r--r--
stm.h
4.34
KB
-rw-r--r--
stmmac.h
6.75
KB
-rw-r--r--
stmp3xxx_rtc_wdt.h
331
B
-rw-r--r--
stmp_device.h
412
B
-rw-r--r--
stop_machine.h
4.41
KB
-rw-r--r--
string.h
8.66
KB
-rw-r--r--
string_helpers.h
2.69
KB
-rw-r--r--
stringhash.h
2.65
KB
-rw-r--r--
stringify.h
341
B
-rw-r--r--
sungem_phy.h
3.94
KB
-rw-r--r--
sunserialcore.h
1.08
KB
-rw-r--r--
sunxi-rsb.h
2.89
KB
-rw-r--r--
superhyway.h
2.81
KB
-rw-r--r--
surface_acpi_notify.h
1.07
KB
-rw-r--r--
suspend.h
20.02
KB
-rw-r--r--
svga.h
3.75
KB
-rw-r--r--
sw842.h
328
B
-rw-r--r--
swab.h
569
B
-rw-r--r--
swait.h
9.45
KB
-rw-r--r--
swap.h
23.51
KB
-rw-r--r--
swap_cgroup.h
971
B
-rw-r--r--
swap_slots.h
841
B
-rw-r--r--
swapfile.h
556
B
-rw-r--r--
swapops.h
9.61
KB
-rw-r--r--
swiotlb.h
5.33
KB
-rw-r--r--
switchtec.h
10.9
KB
-rw-r--r--
sxgbe_platform.h
1.23
KB
-rw-r--r--
sync_core.h
581
B
-rw-r--r--
sync_file.h
1.57
KB
-rw-r--r--
synclink.h
989
B
-rw-r--r--
sys.h
960
B
-rw-r--r--
sys_soc.h
1.26
KB
-rw-r--r--
syscall_user_dispatch.h
930
B
-rw-r--r--
syscalls.h
55.31
KB
-rw-r--r--
syscore_ops.h
633
B
-rw-r--r--
sysctl.h
7.73
KB
-rw-r--r--
sysfb.h
2.39
KB
-rw-r--r--
sysfs.h
17.64
KB
-rw-r--r--
syslog.h
1.24
KB
-rw-r--r--
sysrq.h
1.96
KB
-rw-r--r--
sysv_fs.h
9.03
KB
-rw-r--r--
t10-pi.h
1.5
KB
-rw-r--r--
task_io_accounting.h
1.13
KB
-rw-r--r--
task_io_accounting_ops.h
2.55
KB
-rw-r--r--
task_work.h
854
B
-rw-r--r--
taskstats_kern.h
957
B
-rw-r--r--
tboot.h
3.33
KB
-rw-r--r--
tc.h
3.45
KB
-rw-r--r--
tca6416_keypad.h
701
B
-rw-r--r--
tcp.h
17.13
KB
-rw-r--r--
tee_drv.h
18.35
KB
-rw-r--r--
textsearch.h
4.73
KB
-rw-r--r--
textsearch_fsm.h
1.19
KB
-rw-r--r--
tfrc.h
1.68
KB
-rw-r--r--
thermal.h
15.41
KB
-rw-r--r--
thread_info.h
6.51
KB
-rw-r--r--
threads.h
1.28
KB
-rw-r--r--
thunderbolt.h
20.78
KB
-rw-r--r--
ti-emif-sram.h
5.15
KB
-rw-r--r--
ti_wilink_st.h
13.46
KB
-rw-r--r--
tick.h
9.74
KB
-rw-r--r--
tifm.h
4.66
KB
-rw-r--r--
timb_dma.h
1.17
KB
-rw-r--r--
timb_gpio.h
717
B
-rw-r--r--
time.h
3.14
KB
-rw-r--r--
time32.h
1.75
KB
-rw-r--r--
time64.h
4.49
KB
-rw-r--r--
time_namespace.h
3.82
KB
-rw-r--r--
timecounter.h
4.14
KB
-rw-r--r--
timekeeper_internal.h
5.33
KB
-rw-r--r--
timekeeping.h
7.61
KB
-rw-r--r--
timer.h
7.35
KB
-rw-r--r--
timerfd.h
508
B
-rw-r--r--
timeriomem-rng.h
432
B
-rw-r--r--
timerqueue.h
1.39
KB
-rw-r--r--
timex.h
6.41
KB
-rw-r--r--
tnum.h
3.39
KB
-rw-r--r--
topology.h
5.25
KB
-rw-r--r--
torture.h
4.2
KB
-rw-r--r--
toshiba.h
460
B
-rw-r--r--
tpm.h
10.98
KB
-rw-r--r--
tpm_command.h
847
B
-rw-r--r--
tpm_eventlog.h
6.54
KB
-rw-r--r--
trace.h
1.65
KB
-rw-r--r--
trace_clock.h
667
B
-rw-r--r--
trace_events.h
27.51
KB
-rw-r--r--
trace_recursion.h
5.63
KB
-rw-r--r--
trace_seq.h
3.92
KB
-rw-r--r--
tracefs.h
1018
B
-rw-r--r--
tracehook.h
7.97
KB
-rw-r--r--
tracepoint-defs.h
2.34
KB
-rw-r--r--
tracepoint.h
18.16
KB
-rw-r--r--
transport_class.h
2.51
KB
-rw-r--r--
ts-nbus.h
532
B
-rw-r--r--
tsacct_kern.h
1.2
KB
-rw-r--r--
tty.h
14.52
KB
-rw-r--r--
tty_buffer.h
1.28
KB
-rw-r--r--
tty_driver.h
15.69
KB
-rw-r--r--
tty_flip.h
1.74
KB
-rw-r--r--
tty_ldisc.h
8.46
KB
-rw-r--r--
tty_port.h
7.24
KB
-rw-r--r--
typecheck.h
782
B
-rw-r--r--
types.h
5.64
KB
-rw-r--r--
u64_stats_sync.h
5.69
KB
-rw-r--r--
uacce.h
3.74
KB
-rw-r--r--
uaccess.h
12.93
KB
-rw-r--r--
ucb1400.h
4.12
KB
-rw-r--r--
ucs2_string.h
662
B
-rw-r--r--
udp.h
4.53
KB
-rw-r--r--
uidgid.h
4.07
KB
-rw-r--r--
uio.h
9.01
KB
-rw-r--r--
uio_driver.h
4.71
KB
-rw-r--r--
umh.h
1.79
KB
-rw-r--r--
unicode.h
1.02
KB
-rw-r--r--
units.h
2.59
KB
-rw-r--r--
uprobes.h
6
KB
-rw-r--r--
usb.h
77.55
KB
-rw-r--r--
usb_usual.h
3.58
KB
-rw-r--r--
usbdevice_fs.h
2.18
KB
-rw-r--r--
user-return-notifier.h
1.18
KB
-rw-r--r--
user.h
22
B
-rw-r--r--
user_namespace.h
6.03
KB
-rw-r--r--
userfaultfd_k.h
6.44
KB
-rw-r--r--
usermode_driver.h
515
B
-rw-r--r--
util_macros.h
1.17
KB
-rw-r--r--
uts.h
388
B
-rw-r--r--
utsname.h
1.78
KB
-rw-r--r--
uuid.h
2.34
KB
-rw-r--r--
vbox_utils.h
1.75
KB
-rw-r--r--
vdpa.h
14.02
KB
-rw-r--r--
verification.h
1.77
KB
-rw-r--r--
vermagic.h
1.28
KB
-rw-r--r--
vexpress.h
297
B
-rw-r--r--
vfio.h
8.21
KB
-rw-r--r--
vfio_pci_core.h
7.46
KB
-rw-r--r--
vfs.h
116
B
-rw-r--r--
vga_switcheroo.h
8.62
KB
-rw-r--r--
vgaarb.h
3.88
KB
-rw-r--r--
vhost_iotlb.h
1.34
KB
-rw-r--r--
via-core.h
6.57
KB
-rw-r--r--
via-gpio.h
310
B
-rw-r--r--
via.h
932
B
-rw-r--r--
via_i2c.h
844
B
-rw-r--r--
videodev2.h
2.7
KB
-rw-r--r--
virtio.h
6.7
KB
-rw-r--r--
virtio_byteorder.h
1.46
KB
-rw-r--r--
virtio_caif.h
513
B
-rw-r--r--
virtio_config.h
16.26
KB
-rw-r--r--
virtio_console.h
1.93
KB
-rw-r--r--
virtio_dma_buf.h
1.12
KB
-rw-r--r--
virtio_net.h
5.38
KB
-rw-r--r--
virtio_pci_modern.h
3.25
KB
-rw-r--r--
virtio_ring.h
2.95
KB
-rw-r--r--
virtio_vsock.h
4.79
KB
-rw-r--r--
visorbus.h
12.23
KB
-rw-r--r--
vlynq.h
3.22
KB
-rw-r--r--
vm_event_item.h
3.46
KB
-rw-r--r--
vmacache.h
722
B
-rw-r--r--
vmalloc.h
8.61
KB
-rw-r--r--
vme.h
5.66
KB
-rw-r--r--
vmpressure.h
1.68
KB
-rw-r--r--
vmstat.h
14.76
KB
-rw-r--r--
vmw_vmci_api.h
2.88
KB
-rw-r--r--
vmw_vmci_defs.h
27.5
KB
-rw-r--r--
vringh.h
8.62
KB
-rw-r--r--
vt.h
611
B
-rw-r--r--
vt_buffer.h
1.49
KB
-rw-r--r--
vt_kern.h
5.31
KB
-rw-r--r--
vtime.h
4.6
KB
-rw-r--r--
w1-gpio.h
493
B
-rw-r--r--
w1.h
8.93
KB
-rw-r--r--
wait.h
41.93
KB
-rw-r--r--
wait_bit.h
11.2
KB
-rw-r--r--
watch_queue.h
3.82
KB
-rw-r--r--
watchdog.h
8.21
KB
-rw-r--r--
win_minmax.h
832
B
-rw-r--r--
wireless.h
1.4
KB
-rw-r--r--
wkup_m3_ipc.h
1.75
KB
-rw-r--r--
wl12xx.h
810
B
-rw-r--r--
wm97xx.h
10.59
KB
-rw-r--r--
wmi.h
1.56
KB
-rw-r--r--
workqueue.h
21.38
KB
-rw-r--r--
writeback.h
12.83
KB
-rw-r--r--
ww_mutex.h
13.11
KB
-rw-r--r--
wwan.h
5.13
KB
-rw-r--r--
xarray.h
56.17
KB
-rw-r--r--
xattr.h
3.97
KB
-rw-r--r--
xxhash.h
8.27
KB
-rw-r--r--
xz.h
11.16
KB
-rw-r--r--
yam.h
2.18
KB
-rw-r--r--
z2_battery.h
299
B
-rw-r--r--
zconf.h
1.73
KB
-rw-r--r--
zlib.h
28.11
KB
-rw-r--r--
zorro.h
3.57
KB
-rw-r--r--
zpool.h
3.24
KB
-rw-r--r--
zsmalloc.h
1.63
KB
-rw-r--r--
zstd.h
48.58
KB
-rw-r--r--
zutil.h
2.73
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : blkdev.h
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_BLKDEV_H #define _LINUX_BLKDEV_H #include <linux/sched.h> #include <linux/sched/clock.h> #include <linux/major.h> #include <linux/genhd.h> #include <linux/list.h> #include <linux/llist.h> #include <linux/minmax.h> #include <linux/timer.h> #include <linux/workqueue.h> #include <linux/wait.h> #include <linux/mempool.h> #include <linux/pfn.h> #include <linux/bio.h> #include <linux/stringify.h> #include <linux/gfp.h> #include <linux/smp.h> #include <linux/rcupdate.h> #include <linux/percpu-refcount.h> #include <linux/scatterlist.h> #include <linux/blkzoned.h> #include <linux/pm.h> #include <linux/sbitmap.h> struct module; struct request_queue; struct elevator_queue; struct blk_trace; struct request; struct sg_io_hdr; struct blkcg_gq; struct blk_flush_queue; struct pr_ops; struct rq_qos; struct blk_queue_stats; struct blk_stat_callback; struct blk_keyslot_manager; #define BLKDEV_MIN_RQ 4 #define BLKDEV_MAX_RQ 128 /* Default maximum */ /* Must be consistent with blk_mq_poll_stats_bkt() */ #define BLK_MQ_POLL_STATS_BKTS 16 /* Doing classic polling */ #define BLK_MQ_POLL_CLASSIC -1 /* * Maximum number of blkcg policies allowed to be registered concurrently. * Defined here to simplify include dependency. */ #define BLKCG_MAX_POLS 6 typedef void (rq_end_io_fn)(struct request *, blk_status_t); /* * request flags */ typedef __u32 __bitwise req_flags_t; /* drive already may have started this one */ #define RQF_STARTED ((__force req_flags_t)(1 << 1)) /* may not be passed by ioscheduler */ #define RQF_SOFTBARRIER ((__force req_flags_t)(1 << 3)) /* request for flush sequence */ #define RQF_FLUSH_SEQ ((__force req_flags_t)(1 << 4)) /* merge of different types, fail separately */ #define RQF_MIXED_MERGE ((__force req_flags_t)(1 << 5)) /* track inflight for MQ */ #define RQF_MQ_INFLIGHT ((__force req_flags_t)(1 << 6)) /* don't call prep for this one */ #define RQF_DONTPREP ((__force req_flags_t)(1 << 7)) /* vaguely specified driver internal error. Ignored by the block layer */ #define RQF_FAILED ((__force req_flags_t)(1 << 10)) /* don't warn about errors */ #define RQF_QUIET ((__force req_flags_t)(1 << 11)) /* elevator private data attached */ #define RQF_ELVPRIV ((__force req_flags_t)(1 << 12)) /* account into disk and partition IO statistics */ #define RQF_IO_STAT ((__force req_flags_t)(1 << 13)) /* runtime pm request */ #define RQF_PM ((__force req_flags_t)(1 << 15)) /* on IO scheduler merge hash */ #define RQF_HASHED ((__force req_flags_t)(1 << 16)) /* track IO completion time */ #define RQF_STATS ((__force req_flags_t)(1 << 17)) /* Look at ->special_vec for the actual data payload instead of the bio chain. */ #define RQF_SPECIAL_PAYLOAD ((__force req_flags_t)(1 << 18)) /* The per-zone write lock is held for this request */ #define RQF_ZONE_WRITE_LOCKED ((__force req_flags_t)(1 << 19)) /* already slept for hybrid poll */ #define RQF_MQ_POLL_SLEPT ((__force req_flags_t)(1 << 20)) /* ->timeout has been called, don't expire again */ #define RQF_TIMED_OUT ((__force req_flags_t)(1 << 21)) /* flags that prevent us from merging requests: */ #define RQF_NOMERGE_FLAGS \ (RQF_STARTED | RQF_SOFTBARRIER | RQF_FLUSH_SEQ | RQF_SPECIAL_PAYLOAD) /* * Request state for blk-mq. */ enum mq_rq_state { MQ_RQ_IDLE = 0, MQ_RQ_IN_FLIGHT = 1, MQ_RQ_COMPLETE = 2, }; /* * Try to put the fields that are referenced together in the same cacheline. * * If you modify this structure, make sure to update blk_rq_init() and * especially blk_mq_rq_ctx_init() to take care of the added fields. */ struct request { struct request_queue *q; struct blk_mq_ctx *mq_ctx; struct blk_mq_hw_ctx *mq_hctx; unsigned int cmd_flags; /* op and common flags */ req_flags_t rq_flags; int tag; int internal_tag; /* the following two fields are internal, NEVER access directly */ unsigned int __data_len; /* total data len */ sector_t __sector; /* sector cursor */ struct bio *bio; struct bio *biotail; struct list_head queuelist; /* * The hash is used inside the scheduler, and killed once the * request reaches the dispatch list. The ipi_list is only used * to queue the request for softirq completion, which is long * after the request has been unhashed (and even removed from * the dispatch list). */ union { struct hlist_node hash; /* merge hash */ struct llist_node ipi_list; }; /* * The rb_node is only used inside the io scheduler, requests * are pruned when moved to the dispatch queue. So let the * completion_data share space with the rb_node. */ union { struct rb_node rb_node; /* sort/lookup */ struct bio_vec special_vec; void *completion_data; int error_count; /* for legacy drivers, don't use */ }; /* * Three pointers are available for the IO schedulers, if they need * more they have to dynamically allocate it. Flush requests are * never put on the IO scheduler. So let the flush fields share * space with the elevator data. */ union { struct { struct io_cq *icq; void *priv[2]; } elv; struct { unsigned int seq; struct list_head list; rq_end_io_fn *saved_end_io; } flush; }; struct gendisk *rq_disk; struct block_device *part; #ifdef CONFIG_BLK_RQ_ALLOC_TIME /* Time that the first bio started allocating this request. */ u64 alloc_time_ns; #endif /* Time that this request was allocated for this IO. */ u64 start_time_ns; /* Time that I/O was submitted to the device. */ u64 io_start_time_ns; #ifdef CONFIG_BLK_WBT unsigned short wbt_flags; #endif /* * rq sectors used for blk stats. It has the same value * with blk_rq_sectors(rq), except that it never be zeroed * by completion. */ unsigned short stats_sectors; /* * Number of scatter-gather DMA addr+len pairs after * physical address coalescing is performed. */ unsigned short nr_phys_segments; #if defined(CONFIG_BLK_DEV_INTEGRITY) unsigned short nr_integrity_segments; #endif #ifdef CONFIG_BLK_INLINE_ENCRYPTION struct bio_crypt_ctx *crypt_ctx; struct blk_ksm_keyslot *crypt_keyslot; #endif unsigned short write_hint; unsigned short ioprio; enum mq_rq_state state; refcount_t ref; unsigned int timeout; unsigned long deadline; union { struct __call_single_data csd; u64 fifo_time; }; /* * completion callback. */ rq_end_io_fn *end_io; void *end_io_data; }; static inline int blk_validate_block_size(unsigned int bsize) { if (bsize < 512 || bsize > PAGE_SIZE || !is_power_of_2(bsize)) return -EINVAL; return 0; } static inline bool blk_op_is_passthrough(unsigned int op) { op &= REQ_OP_MASK; return op == REQ_OP_DRV_IN || op == REQ_OP_DRV_OUT; } static inline bool blk_rq_is_passthrough(struct request *rq) { return blk_op_is_passthrough(req_op(rq)); } static inline unsigned short req_get_ioprio(struct request *req) { return req->ioprio; } #include <linux/elevator.h> struct blk_queue_ctx; struct bio_vec; enum blk_eh_timer_return { BLK_EH_DONE, /* drivers has completed the command */ BLK_EH_RESET_TIMER, /* reset timer and try again */ }; enum blk_queue_state { Queue_down, Queue_up, }; #define BLK_TAG_ALLOC_FIFO 0 /* allocate starting from 0 */ #define BLK_TAG_ALLOC_RR 1 /* allocate starting from last allocated tag */ /* * Zoned block device models (zoned limit). * * Note: This needs to be ordered from the least to the most severe * restrictions for the inheritance in blk_stack_limits() to work. */ enum blk_zoned_model { BLK_ZONED_NONE = 0, /* Regular block device */ BLK_ZONED_HA, /* Host-aware zoned block device */ BLK_ZONED_HM, /* Host-managed zoned block device */ }; /* * BLK_BOUNCE_NONE: never bounce (default) * BLK_BOUNCE_HIGH: bounce all highmem pages */ enum blk_bounce { BLK_BOUNCE_NONE, BLK_BOUNCE_HIGH, }; struct queue_limits { enum blk_bounce bounce; unsigned long seg_boundary_mask; unsigned long virt_boundary_mask; unsigned int max_hw_sectors; unsigned int max_dev_sectors; unsigned int chunk_sectors; unsigned int max_sectors; unsigned int max_segment_size; unsigned int physical_block_size; unsigned int logical_block_size; unsigned int alignment_offset; unsigned int io_min; unsigned int io_opt; unsigned int max_discard_sectors; unsigned int max_hw_discard_sectors; unsigned int max_write_same_sectors; unsigned int max_write_zeroes_sectors; unsigned int max_zone_append_sectors; unsigned int discard_granularity; unsigned int discard_alignment; unsigned int zone_write_granularity; unsigned short max_segments; unsigned short max_integrity_segments; unsigned short max_discard_segments; unsigned char misaligned; unsigned char discard_misaligned; unsigned char raid_partial_stripes_expensive; enum blk_zoned_model zoned; }; typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx, void *data); void blk_queue_set_zoned(struct gendisk *disk, enum blk_zoned_model model); #ifdef CONFIG_BLK_DEV_ZONED #define BLK_ALL_ZONES ((unsigned int)-1) int blkdev_report_zones(struct block_device *bdev, sector_t sector, unsigned int nr_zones, report_zones_cb cb, void *data); unsigned int blkdev_nr_zones(struct gendisk *disk); extern int blkdev_zone_mgmt(struct block_device *bdev, enum req_opf op, sector_t sectors, sector_t nr_sectors, gfp_t gfp_mask); int blk_revalidate_disk_zones(struct gendisk *disk, void (*update_driver_data)(struct gendisk *disk)); extern int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg); extern int blkdev_zone_mgmt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg); #else /* CONFIG_BLK_DEV_ZONED */ static inline unsigned int blkdev_nr_zones(struct gendisk *disk) { return 0; } static inline int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg) { return -ENOTTY; } static inline int blkdev_zone_mgmt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd, unsigned long arg) { return -ENOTTY; } #endif /* CONFIG_BLK_DEV_ZONED */ struct request_queue { struct request *last_merge; struct elevator_queue *elevator; struct percpu_ref q_usage_counter; struct blk_queue_stats *stats; struct rq_qos *rq_qos; const struct blk_mq_ops *mq_ops; /* sw queues */ struct blk_mq_ctx __percpu *queue_ctx; unsigned int queue_depth; /* hw dispatch queues */ struct blk_mq_hw_ctx **queue_hw_ctx; unsigned int nr_hw_queues; /* * The queue owner gets to use this for whatever they like. * ll_rw_blk doesn't touch it. */ void *queuedata; /* * various queue flags, see QUEUE_* below */ unsigned long queue_flags; /* * Number of contexts that have called blk_set_pm_only(). If this * counter is above zero then only RQF_PM requests are processed. */ atomic_t pm_only; /* * ida allocated id for this queue. Used to index queues from * ioctx. */ int id; spinlock_t queue_lock; struct gendisk *disk; /* * queue kobject */ struct kobject kobj; /* * mq queue kobject */ struct kobject *mq_kobj; #ifdef CONFIG_BLK_DEV_INTEGRITY struct blk_integrity integrity; #endif /* CONFIG_BLK_DEV_INTEGRITY */ #ifdef CONFIG_PM struct device *dev; enum rpm_status rpm_status; #endif /* * queue settings */ unsigned long nr_requests; /* Max # of requests */ unsigned int dma_pad_mask; unsigned int dma_alignment; #ifdef CONFIG_BLK_INLINE_ENCRYPTION /* Inline crypto capabilities */ struct blk_keyslot_manager *ksm; #endif unsigned int rq_timeout; int poll_nsec; struct blk_stat_callback *poll_cb; struct blk_rq_stat poll_stat[BLK_MQ_POLL_STATS_BKTS]; struct timer_list timeout; struct work_struct timeout_work; atomic_t nr_active_requests_shared_sbitmap; struct sbitmap_queue sched_bitmap_tags; struct sbitmap_queue sched_breserved_tags; struct list_head icq_list; #ifdef CONFIG_BLK_CGROUP DECLARE_BITMAP (blkcg_pols, BLKCG_MAX_POLS); struct blkcg_gq *root_blkg; struct list_head blkg_list; #endif struct queue_limits limits; unsigned int required_elevator_features; #ifdef CONFIG_BLK_DEV_ZONED /* * Zoned block device information for request dispatch control. * nr_zones is the total number of zones of the device. This is always * 0 for regular block devices. conv_zones_bitmap is a bitmap of nr_zones * bits which indicates if a zone is conventional (bit set) or * sequential (bit clear). seq_zones_wlock is a bitmap of nr_zones * bits which indicates if a zone is write locked, that is, if a write * request targeting the zone was dispatched. All three fields are * initialized by the low level device driver (e.g. scsi/sd.c). * Stacking drivers (device mappers) may or may not initialize * these fields. * * Reads of this information must be protected with blk_queue_enter() / * blk_queue_exit(). Modifying this information is only allowed while * no requests are being processed. See also blk_mq_freeze_queue() and * blk_mq_unfreeze_queue(). */ unsigned int nr_zones; unsigned long *conv_zones_bitmap; unsigned long *seq_zones_wlock; unsigned int max_open_zones; unsigned int max_active_zones; #endif /* CONFIG_BLK_DEV_ZONED */ int node; struct mutex debugfs_mutex; #ifdef CONFIG_BLK_DEV_IO_TRACE struct blk_trace __rcu *blk_trace; #endif /* * for flush operations */ struct blk_flush_queue *fq; struct list_head requeue_list; spinlock_t requeue_lock; struct delayed_work requeue_work; struct mutex sysfs_lock; struct mutex sysfs_dir_lock; /* * for reusing dead hctx instance in case of updating * nr_hw_queues */ struct list_head unused_hctx_list; spinlock_t unused_hctx_lock; int mq_freeze_depth; #ifdef CONFIG_BLK_DEV_THROTTLING /* Throttle data */ struct throtl_data *td; #endif struct rcu_head rcu_head; wait_queue_head_t mq_freeze_wq; /* * Protect concurrent access to q_usage_counter by * percpu_ref_kill() and percpu_ref_reinit(). */ struct mutex mq_freeze_lock; struct blk_mq_tag_set *tag_set; struct list_head tag_set_list; struct bio_set bio_split; struct dentry *debugfs_dir; #ifdef CONFIG_BLK_DEBUG_FS struct dentry *sched_debugfs_dir; struct dentry *rqos_debugfs_dir; #endif bool mq_sysfs_init_done; size_t cmd_size; #define BLK_MAX_WRITE_HINTS 5 u64 write_hints[BLK_MAX_WRITE_HINTS]; }; /* Keep blk_queue_flag_name[] in sync with the definitions below */ #define QUEUE_FLAG_STOPPED 0 /* queue is stopped */ #define QUEUE_FLAG_DYING 1 /* queue being torn down */ #define QUEUE_FLAG_NOMERGES 3 /* disable merge attempts */ #define QUEUE_FLAG_SAME_COMP 4 /* complete on same CPU-group */ #define QUEUE_FLAG_FAIL_IO 5 /* fake timeout */ #define QUEUE_FLAG_NONROT 6 /* non-rotational device (SSD) */ #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ #define QUEUE_FLAG_IO_STAT 7 /* do disk/partitions IO accounting */ #define QUEUE_FLAG_DISCARD 8 /* supports DISCARD */ #define QUEUE_FLAG_NOXMERGES 9 /* No extended merges */ #define QUEUE_FLAG_ADD_RANDOM 10 /* Contributes to random pool */ #define QUEUE_FLAG_SECERASE 11 /* supports secure erase */ #define QUEUE_FLAG_SAME_FORCE 12 /* force complete on same CPU */ #define QUEUE_FLAG_DEAD 13 /* queue tear-down finished */ #define QUEUE_FLAG_INIT_DONE 14 /* queue is initialized */ #define QUEUE_FLAG_STABLE_WRITES 15 /* don't modify blks until WB is done */ #define QUEUE_FLAG_POLL 16 /* IO polling enabled if set */ #define QUEUE_FLAG_WC 17 /* Write back caching */ #define QUEUE_FLAG_FUA 18 /* device supports FUA writes */ #define QUEUE_FLAG_DAX 19 /* device supports DAX */ #define QUEUE_FLAG_STATS 20 /* track IO start and completion times */ #define QUEUE_FLAG_POLL_STATS 21 /* collecting stats for hybrid polling */ #define QUEUE_FLAG_REGISTERED 22 /* queue has been registered to a disk */ #define QUEUE_FLAG_SCSI_PASSTHROUGH 23 /* queue supports SCSI commands */ #define QUEUE_FLAG_QUIESCED 24 /* queue has been quiesced */ #define QUEUE_FLAG_PCI_P2PDMA 25 /* device supports PCI p2p requests */ #define QUEUE_FLAG_ZONE_RESETALL 26 /* supports Zone Reset All */ #define QUEUE_FLAG_RQ_ALLOC_TIME 27 /* record rq->alloc_time_ns */ #define QUEUE_FLAG_HCTX_ACTIVE 28 /* at least one blk-mq hctx is active */ #define QUEUE_FLAG_NOWAIT 29 /* device supports NOWAIT */ #define QUEUE_FLAG_MQ_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ (1 << QUEUE_FLAG_SAME_COMP) | \ (1 << QUEUE_FLAG_NOWAIT)) void blk_queue_flag_set(unsigned int flag, struct request_queue *q); void blk_queue_flag_clear(unsigned int flag, struct request_queue *q); bool blk_queue_flag_test_and_set(unsigned int flag, struct request_queue *q); #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) #define blk_queue_dying(q) test_bit(QUEUE_FLAG_DYING, &(q)->queue_flags) #define blk_queue_dead(q) test_bit(QUEUE_FLAG_DEAD, &(q)->queue_flags) #define blk_queue_init_done(q) test_bit(QUEUE_FLAG_INIT_DONE, &(q)->queue_flags) #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags) #define blk_queue_noxmerges(q) \ test_bit(QUEUE_FLAG_NOXMERGES, &(q)->queue_flags) #define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags) #define blk_queue_stable_writes(q) \ test_bit(QUEUE_FLAG_STABLE_WRITES, &(q)->queue_flags) #define blk_queue_io_stat(q) test_bit(QUEUE_FLAG_IO_STAT, &(q)->queue_flags) #define blk_queue_add_random(q) test_bit(QUEUE_FLAG_ADD_RANDOM, &(q)->queue_flags) #define blk_queue_discard(q) test_bit(QUEUE_FLAG_DISCARD, &(q)->queue_flags) #define blk_queue_zone_resetall(q) \ test_bit(QUEUE_FLAG_ZONE_RESETALL, &(q)->queue_flags) #define blk_queue_secure_erase(q) \ (test_bit(QUEUE_FLAG_SECERASE, &(q)->queue_flags)) #define blk_queue_dax(q) test_bit(QUEUE_FLAG_DAX, &(q)->queue_flags) #define blk_queue_scsi_passthrough(q) \ test_bit(QUEUE_FLAG_SCSI_PASSTHROUGH, &(q)->queue_flags) #define blk_queue_pci_p2pdma(q) \ test_bit(QUEUE_FLAG_PCI_P2PDMA, &(q)->queue_flags) #ifdef CONFIG_BLK_RQ_ALLOC_TIME #define blk_queue_rq_alloc_time(q) \ test_bit(QUEUE_FLAG_RQ_ALLOC_TIME, &(q)->queue_flags) #else #define blk_queue_rq_alloc_time(q) false #endif #define blk_noretry_request(rq) \ ((rq)->cmd_flags & (REQ_FAILFAST_DEV|REQ_FAILFAST_TRANSPORT| \ REQ_FAILFAST_DRIVER)) #define blk_queue_quiesced(q) test_bit(QUEUE_FLAG_QUIESCED, &(q)->queue_flags) #define blk_queue_pm_only(q) atomic_read(&(q)->pm_only) #define blk_queue_fua(q) test_bit(QUEUE_FLAG_FUA, &(q)->queue_flags) #define blk_queue_registered(q) test_bit(QUEUE_FLAG_REGISTERED, &(q)->queue_flags) #define blk_queue_nowait(q) test_bit(QUEUE_FLAG_NOWAIT, &(q)->queue_flags) extern void blk_set_pm_only(struct request_queue *q); extern void blk_clear_pm_only(struct request_queue *q); #define list_entry_rq(ptr) list_entry((ptr), struct request, queuelist) #define rq_data_dir(rq) (op_is_write(req_op(rq)) ? WRITE : READ) #define rq_dma_dir(rq) \ (op_is_write(req_op(rq)) ? DMA_TO_DEVICE : DMA_FROM_DEVICE) #define dma_map_bvec(dev, bv, dir, attrs) \ dma_map_page_attrs(dev, (bv)->bv_page, (bv)->bv_offset, (bv)->bv_len, \ (dir), (attrs)) static inline bool queue_is_mq(struct request_queue *q) { return q->mq_ops; } #ifdef CONFIG_PM static inline enum rpm_status queue_rpm_status(struct request_queue *q) { return q->rpm_status; } #else static inline enum rpm_status queue_rpm_status(struct request_queue *q) { return RPM_ACTIVE; } #endif static inline enum blk_zoned_model blk_queue_zoned_model(struct request_queue *q) { if (IS_ENABLED(CONFIG_BLK_DEV_ZONED)) return q->limits.zoned; return BLK_ZONED_NONE; } static inline bool blk_queue_is_zoned(struct request_queue *q) { switch (blk_queue_zoned_model(q)) { case BLK_ZONED_HA: case BLK_ZONED_HM: return true; default: return false; } } static inline sector_t blk_queue_zone_sectors(struct request_queue *q) { return blk_queue_is_zoned(q) ? q->limits.chunk_sectors : 0; } #ifdef CONFIG_BLK_DEV_ZONED static inline unsigned int blk_queue_nr_zones(struct request_queue *q) { return blk_queue_is_zoned(q) ? q->nr_zones : 0; } static inline unsigned int blk_queue_zone_no(struct request_queue *q, sector_t sector) { if (!blk_queue_is_zoned(q)) return 0; return sector >> ilog2(q->limits.chunk_sectors); } static inline bool blk_queue_zone_is_seq(struct request_queue *q, sector_t sector) { if (!blk_queue_is_zoned(q)) return false; if (!q->conv_zones_bitmap) return true; return !test_bit(blk_queue_zone_no(q, sector), q->conv_zones_bitmap); } static inline void blk_queue_max_open_zones(struct request_queue *q, unsigned int max_open_zones) { q->max_open_zones = max_open_zones; } static inline unsigned int queue_max_open_zones(const struct request_queue *q) { return q->max_open_zones; } static inline void blk_queue_max_active_zones(struct request_queue *q, unsigned int max_active_zones) { q->max_active_zones = max_active_zones; } static inline unsigned int queue_max_active_zones(const struct request_queue *q) { return q->max_active_zones; } #else /* CONFIG_BLK_DEV_ZONED */ static inline unsigned int blk_queue_nr_zones(struct request_queue *q) { return 0; } static inline bool blk_queue_zone_is_seq(struct request_queue *q, sector_t sector) { return false; } static inline unsigned int blk_queue_zone_no(struct request_queue *q, sector_t sector) { return 0; } static inline unsigned int queue_max_open_zones(const struct request_queue *q) { return 0; } static inline unsigned int queue_max_active_zones(const struct request_queue *q) { return 0; } #endif /* CONFIG_BLK_DEV_ZONED */ static inline bool rq_is_sync(struct request *rq) { return op_is_sync(rq->cmd_flags); } static inline bool rq_mergeable(struct request *rq) { if (blk_rq_is_passthrough(rq)) return false; if (req_op(rq) == REQ_OP_FLUSH) return false; if (req_op(rq) == REQ_OP_WRITE_ZEROES) return false; if (req_op(rq) == REQ_OP_ZONE_APPEND) return false; if (rq->cmd_flags & REQ_NOMERGE_FLAGS) return false; if (rq->rq_flags & RQF_NOMERGE_FLAGS) return false; return true; } static inline bool blk_write_same_mergeable(struct bio *a, struct bio *b) { if (bio_page(a) == bio_page(b) && bio_offset(a) == bio_offset(b)) return true; return false; } static inline unsigned int blk_queue_depth(struct request_queue *q) { if (q->queue_depth) return q->queue_depth; return q->nr_requests; } /* * default timeout for SG_IO if none specified */ #define BLK_DEFAULT_SG_TIMEOUT (60 * HZ) #define BLK_MIN_SG_TIMEOUT (7 * HZ) struct rq_map_data { struct page **pages; int page_order; int nr_entries; unsigned long offset; int null_mapped; int from_user; }; struct req_iterator { struct bvec_iter iter; struct bio *bio; }; /* This should not be used directly - use rq_for_each_segment */ #define for_each_bio(_bio) \ for (; _bio; _bio = _bio->bi_next) #define __rq_for_each_bio(_bio, rq) \ if ((rq->bio)) \ for (_bio = (rq)->bio; _bio; _bio = _bio->bi_next) #define rq_for_each_segment(bvl, _rq, _iter) \ __rq_for_each_bio(_iter.bio, _rq) \ bio_for_each_segment(bvl, _iter.bio, _iter.iter) #define rq_for_each_bvec(bvl, _rq, _iter) \ __rq_for_each_bio(_iter.bio, _rq) \ bio_for_each_bvec(bvl, _iter.bio, _iter.iter) #define rq_iter_last(bvec, _iter) \ (_iter.bio->bi_next == NULL && \ bio_iter_last(bvec, _iter.iter)) #ifndef ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE # error "You should define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE for your platform" #endif #if ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE extern void rq_flush_dcache_pages(struct request *rq); #else static inline void rq_flush_dcache_pages(struct request *rq) { } #endif extern int blk_register_queue(struct gendisk *disk); extern void blk_unregister_queue(struct gendisk *disk); blk_qc_t submit_bio_noacct(struct bio *bio); extern void blk_rq_init(struct request_queue *q, struct request *rq); extern void blk_put_request(struct request *); extern struct request *blk_get_request(struct request_queue *, unsigned int op, blk_mq_req_flags_t flags); extern int blk_lld_busy(struct request_queue *q); extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src, struct bio_set *bs, gfp_t gfp_mask, int (*bio_ctr)(struct bio *, struct bio *, void *), void *data); extern void blk_rq_unprep_clone(struct request *rq); extern blk_status_t blk_insert_cloned_request(struct request_queue *q, struct request *rq); int blk_rq_append_bio(struct request *rq, struct bio *bio); extern void blk_queue_split(struct bio **); extern int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags); extern void blk_queue_exit(struct request_queue *q); extern void blk_sync_queue(struct request_queue *q); extern int blk_rq_map_user(struct request_queue *, struct request *, struct rq_map_data *, void __user *, unsigned long, gfp_t); extern int blk_rq_unmap_user(struct bio *); extern int blk_rq_map_kern(struct request_queue *, struct request *, void *, unsigned int, gfp_t); extern int blk_rq_map_user_iov(struct request_queue *, struct request *, struct rq_map_data *, const struct iov_iter *, gfp_t); extern void blk_execute_rq_nowait(struct gendisk *, struct request *, int, rq_end_io_fn *); blk_status_t blk_execute_rq(struct gendisk *bd_disk, struct request *rq, int at_head); /* Helper to convert REQ_OP_XXX to its string format XXX */ extern const char *blk_op_str(unsigned int op); int blk_status_to_errno(blk_status_t status); blk_status_t errno_to_blk_status(int errno); int blk_poll(struct request_queue *q, blk_qc_t cookie, bool spin); static inline struct request_queue *bdev_get_queue(struct block_device *bdev) { return bdev->bd_disk->queue; /* this is never NULL */ } /* * The basic unit of block I/O is a sector. It is used in a number of contexts * in Linux (blk, bio, genhd). The size of one sector is 512 = 2**9 * bytes. Variables of type sector_t represent an offset or size that is a * multiple of 512 bytes. Hence these two constants. */ #ifndef SECTOR_SHIFT #define SECTOR_SHIFT 9 #endif #ifndef SECTOR_SIZE #define SECTOR_SIZE (1 << SECTOR_SHIFT) #endif #define PAGE_SECTORS_SHIFT (PAGE_SHIFT - SECTOR_SHIFT) #define PAGE_SECTORS (1 << PAGE_SECTORS_SHIFT) #define SECTOR_MASK (PAGE_SECTORS - 1) /* * blk_rq_pos() : the current sector * blk_rq_bytes() : bytes left in the entire request * blk_rq_cur_bytes() : bytes left in the current segment * blk_rq_err_bytes() : bytes left till the next error boundary * blk_rq_sectors() : sectors left in the entire request * blk_rq_cur_sectors() : sectors left in the current segment * blk_rq_stats_sectors() : sectors of the entire request used for stats */ static inline sector_t blk_rq_pos(const struct request *rq) { return rq->__sector; } static inline unsigned int blk_rq_bytes(const struct request *rq) { return rq->__data_len; } static inline int blk_rq_cur_bytes(const struct request *rq) { return rq->bio ? bio_cur_bytes(rq->bio) : 0; } extern unsigned int blk_rq_err_bytes(const struct request *rq); static inline unsigned int blk_rq_sectors(const struct request *rq) { return blk_rq_bytes(rq) >> SECTOR_SHIFT; } static inline unsigned int blk_rq_cur_sectors(const struct request *rq) { return blk_rq_cur_bytes(rq) >> SECTOR_SHIFT; } static inline unsigned int blk_rq_stats_sectors(const struct request *rq) { return rq->stats_sectors; } #ifdef CONFIG_BLK_DEV_ZONED /* Helper to convert BLK_ZONE_ZONE_XXX to its string format XXX */ const char *blk_zone_cond_str(enum blk_zone_cond zone_cond); static inline unsigned int bio_zone_no(struct bio *bio) { return blk_queue_zone_no(bdev_get_queue(bio->bi_bdev), bio->bi_iter.bi_sector); } static inline unsigned int bio_zone_is_seq(struct bio *bio) { return blk_queue_zone_is_seq(bdev_get_queue(bio->bi_bdev), bio->bi_iter.bi_sector); } static inline unsigned int blk_rq_zone_no(struct request *rq) { return blk_queue_zone_no(rq->q, blk_rq_pos(rq)); } static inline unsigned int blk_rq_zone_is_seq(struct request *rq) { return blk_queue_zone_is_seq(rq->q, blk_rq_pos(rq)); } #endif /* CONFIG_BLK_DEV_ZONED */ /* * Some commands like WRITE SAME have a payload or data transfer size which * is different from the size of the request. Any driver that supports such * commands using the RQF_SPECIAL_PAYLOAD flag needs to use this helper to * calculate the data transfer size. */ static inline unsigned int blk_rq_payload_bytes(struct request *rq) { if (rq->rq_flags & RQF_SPECIAL_PAYLOAD) return rq->special_vec.bv_len; return blk_rq_bytes(rq); } /* * Return the first full biovec in the request. The caller needs to check that * there are any bvecs before calling this helper. */ static inline struct bio_vec req_bvec(struct request *rq) { if (rq->rq_flags & RQF_SPECIAL_PAYLOAD) return rq->special_vec; return mp_bvec_iter_bvec(rq->bio->bi_io_vec, rq->bio->bi_iter); } static inline unsigned int blk_queue_get_max_sectors(struct request_queue *q, int op) { if (unlikely(op == REQ_OP_DISCARD || op == REQ_OP_SECURE_ERASE)) return min(q->limits.max_discard_sectors, UINT_MAX >> SECTOR_SHIFT); if (unlikely(op == REQ_OP_WRITE_SAME)) return q->limits.max_write_same_sectors; if (unlikely(op == REQ_OP_WRITE_ZEROES)) return q->limits.max_write_zeroes_sectors; return q->limits.max_sectors; } /* * Return maximum size of a request at given offset. Only valid for * file system requests. */ static inline unsigned int blk_max_size_offset(struct request_queue *q, sector_t offset, unsigned int chunk_sectors) { if (!chunk_sectors) { if (q->limits.chunk_sectors) chunk_sectors = q->limits.chunk_sectors; else return q->limits.max_sectors; } if (likely(is_power_of_2(chunk_sectors))) chunk_sectors -= offset & (chunk_sectors - 1); else chunk_sectors -= sector_div(offset, chunk_sectors); return min(q->limits.max_sectors, chunk_sectors); } static inline unsigned int blk_rq_get_max_sectors(struct request *rq, sector_t offset) { struct request_queue *q = rq->q; if (blk_rq_is_passthrough(rq)) return q->limits.max_hw_sectors; if (!q->limits.chunk_sectors || req_op(rq) == REQ_OP_DISCARD || req_op(rq) == REQ_OP_SECURE_ERASE) return blk_queue_get_max_sectors(q, req_op(rq)); return min(blk_max_size_offset(q, offset, 0), blk_queue_get_max_sectors(q, req_op(rq))); } static inline unsigned int blk_rq_count_bios(struct request *rq) { unsigned int nr_bios = 0; struct bio *bio; __rq_for_each_bio(bio, rq) nr_bios++; return nr_bios; } void blk_steal_bios(struct bio_list *list, struct request *rq); /* * Request completion related functions. * * blk_update_request() completes given number of bytes and updates * the request without completing it. */ extern bool blk_update_request(struct request *rq, blk_status_t error, unsigned int nr_bytes); extern void blk_abort_request(struct request *); /* * Access functions for manipulating queue properties */ extern void blk_cleanup_queue(struct request_queue *); void blk_queue_bounce_limit(struct request_queue *q, enum blk_bounce limit); extern void blk_queue_max_hw_sectors(struct request_queue *, unsigned int); extern void blk_queue_chunk_sectors(struct request_queue *, unsigned int); extern void blk_queue_max_segments(struct request_queue *, unsigned short); extern void blk_queue_max_discard_segments(struct request_queue *, unsigned short); extern void blk_queue_max_segment_size(struct request_queue *, unsigned int); extern void blk_queue_max_discard_sectors(struct request_queue *q, unsigned int max_discard_sectors); extern void blk_queue_max_write_same_sectors(struct request_queue *q, unsigned int max_write_same_sectors); extern void blk_queue_max_write_zeroes_sectors(struct request_queue *q, unsigned int max_write_same_sectors); extern void blk_queue_logical_block_size(struct request_queue *, unsigned int); extern void blk_queue_max_zone_append_sectors(struct request_queue *q, unsigned int max_zone_append_sectors); extern void blk_queue_physical_block_size(struct request_queue *, unsigned int); void blk_queue_zone_write_granularity(struct request_queue *q, unsigned int size); extern void blk_queue_alignment_offset(struct request_queue *q, unsigned int alignment); void disk_update_readahead(struct gendisk *disk); extern void blk_limits_io_min(struct queue_limits *limits, unsigned int min); extern void blk_queue_io_min(struct request_queue *q, unsigned int min); extern void blk_limits_io_opt(struct queue_limits *limits, unsigned int opt); extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); extern void blk_set_queue_depth(struct request_queue *q, unsigned int depth); extern void blk_set_default_limits(struct queue_limits *lim); extern void blk_set_stacking_limits(struct queue_limits *lim); extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, sector_t offset); extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, sector_t offset); extern void blk_queue_update_dma_pad(struct request_queue *, unsigned int); extern void blk_queue_segment_boundary(struct request_queue *, unsigned long); extern void blk_queue_virt_boundary(struct request_queue *, unsigned long); extern void blk_queue_dma_alignment(struct request_queue *, int); extern void blk_queue_update_dma_alignment(struct request_queue *, int); extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); extern void blk_queue_write_cache(struct request_queue *q, bool enabled, bool fua); extern void blk_queue_required_elevator_features(struct request_queue *q, unsigned int features); extern bool blk_queue_can_use_dma_map_merging(struct request_queue *q, struct device *dev); /* * Number of physical segments as sent to the device. * * Normally this is the number of discontiguous data segments sent by the * submitter. But for data-less command like discard we might have no * actual data segments submitted, but the driver might have to add it's * own special payload. In that case we still return 1 here so that this * special payload will be mapped. */ static inline unsigned short blk_rq_nr_phys_segments(struct request *rq) { if (rq->rq_flags & RQF_SPECIAL_PAYLOAD) return 1; return rq->nr_phys_segments; } /* * Number of discard segments (or ranges) the driver needs to fill in. * Each discard bio merged into a request is counted as one segment. */ static inline unsigned short blk_rq_nr_discard_segments(struct request *rq) { return max_t(unsigned short, rq->nr_phys_segments, 1); } int __blk_rq_map_sg(struct request_queue *q, struct request *rq, struct scatterlist *sglist, struct scatterlist **last_sg); static inline int blk_rq_map_sg(struct request_queue *q, struct request *rq, struct scatterlist *sglist) { struct scatterlist *last_sg = NULL; return __blk_rq_map_sg(q, rq, sglist, &last_sg); } extern void blk_dump_rq_flags(struct request *, char *); bool __must_check blk_get_queue(struct request_queue *); extern void blk_put_queue(struct request_queue *); void blk_mark_disk_dead(struct gendisk *disk); #ifdef CONFIG_BLOCK /* * blk_plug permits building a queue of related requests by holding the I/O * fragments for a short period. This allows merging of sequential requests * into single larger request. As the requests are moved from a per-task list to * the device's request_queue in a batch, this results in improved scalability * as the lock contention for request_queue lock is reduced. * * It is ok not to disable preemption when adding the request to the plug list * or when attempting a merge, because blk_schedule_flush_list() will only flush * the plug list when the task sleeps by itself. For details, please see * schedule() where blk_schedule_flush_plug() is called. */ struct blk_plug { struct list_head mq_list; /* blk-mq requests */ struct list_head cb_list; /* md requires an unplug callback */ unsigned short rq_count; bool multiple_queues; bool nowait; }; struct blk_plug_cb; typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool); struct blk_plug_cb { struct list_head list; blk_plug_cb_fn callback; void *data; }; extern struct blk_plug_cb *blk_check_plugged(blk_plug_cb_fn unplug, void *data, int size); extern void blk_start_plug(struct blk_plug *); extern void blk_finish_plug(struct blk_plug *); extern void blk_flush_plug_list(struct blk_plug *, bool); static inline void blk_flush_plug(struct task_struct *tsk) { struct blk_plug *plug = tsk->plug; if (plug) blk_flush_plug_list(plug, false); } static inline void blk_schedule_flush_plug(struct task_struct *tsk) { struct blk_plug *plug = tsk->plug; if (plug) blk_flush_plug_list(plug, true); } static inline bool blk_needs_flush_plug(struct task_struct *tsk) { struct blk_plug *plug = tsk->plug; return plug && (!list_empty(&plug->mq_list) || !list_empty(&plug->cb_list)); } int blkdev_issue_flush(struct block_device *bdev); long nr_blockdev_pages(void); #else /* CONFIG_BLOCK */ struct blk_plug { }; static inline void blk_start_plug(struct blk_plug *plug) { } static inline void blk_finish_plug(struct blk_plug *plug) { } static inline void blk_flush_plug(struct task_struct *task) { } static inline void blk_schedule_flush_plug(struct task_struct *task) { } static inline bool blk_needs_flush_plug(struct task_struct *tsk) { return false; } static inline int blkdev_issue_flush(struct block_device *bdev) { return 0; } static inline long nr_blockdev_pages(void) { return 0; } #endif /* CONFIG_BLOCK */ extern void blk_io_schedule(void); extern int blkdev_issue_write_same(struct block_device *bdev, sector_t sector, sector_t nr_sects, gfp_t gfp_mask, struct page *page); #define BLKDEV_DISCARD_SECURE (1 << 0) /* issue a secure erase */ extern int blkdev_issue_discard(struct block_device *bdev, sector_t sector, sector_t nr_sects, gfp_t gfp_mask, unsigned long flags); extern int __blkdev_issue_discard(struct block_device *bdev, sector_t sector, sector_t nr_sects, gfp_t gfp_mask, int flags, struct bio **biop); #define BLKDEV_ZERO_NOUNMAP (1 << 0) /* do not free blocks */ #define BLKDEV_ZERO_NOFALLBACK (1 << 1) /* don't write explicit zeroes */ extern int __blkdev_issue_zeroout(struct block_device *bdev, sector_t sector, sector_t nr_sects, gfp_t gfp_mask, struct bio **biop, unsigned flags); extern int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector, sector_t nr_sects, gfp_t gfp_mask, unsigned flags); static inline int sb_issue_discard(struct super_block *sb, sector_t block, sector_t nr_blocks, gfp_t gfp_mask, unsigned long flags) { return blkdev_issue_discard(sb->s_bdev, block << (sb->s_blocksize_bits - SECTOR_SHIFT), nr_blocks << (sb->s_blocksize_bits - SECTOR_SHIFT), gfp_mask, flags); } static inline int sb_issue_zeroout(struct super_block *sb, sector_t block, sector_t nr_blocks, gfp_t gfp_mask) { return blkdev_issue_zeroout(sb->s_bdev, block << (sb->s_blocksize_bits - SECTOR_SHIFT), nr_blocks << (sb->s_blocksize_bits - SECTOR_SHIFT), gfp_mask, 0); } static inline bool bdev_is_partition(struct block_device *bdev) { return bdev->bd_partno; } enum blk_default_limits { BLK_MAX_SEGMENTS = 128, BLK_SAFE_MAX_SECTORS = 255, BLK_DEF_MAX_SECTORS = 2560, BLK_MAX_SEGMENT_SIZE = 65536, BLK_SEG_BOUNDARY_MASK = 0xFFFFFFFFUL, }; static inline unsigned long queue_segment_boundary(const struct request_queue *q) { return q->limits.seg_boundary_mask; } static inline unsigned long queue_virt_boundary(const struct request_queue *q) { return q->limits.virt_boundary_mask; } static inline unsigned int queue_max_sectors(const struct request_queue *q) { return q->limits.max_sectors; } static inline unsigned int queue_max_bytes(struct request_queue *q) { return min_t(unsigned int, queue_max_sectors(q), INT_MAX >> 9) << 9; } static inline unsigned int queue_max_hw_sectors(const struct request_queue *q) { return q->limits.max_hw_sectors; } static inline unsigned short queue_max_segments(const struct request_queue *q) { return q->limits.max_segments; } static inline unsigned short queue_max_discard_segments(const struct request_queue *q) { return q->limits.max_discard_segments; } static inline unsigned int queue_max_segment_size(const struct request_queue *q) { return q->limits.max_segment_size; } static inline unsigned int queue_max_zone_append_sectors(const struct request_queue *q) { const struct queue_limits *l = &q->limits; return min(l->max_zone_append_sectors, l->max_sectors); } static inline unsigned queue_logical_block_size(const struct request_queue *q) { int retval = 512; if (q && q->limits.logical_block_size) retval = q->limits.logical_block_size; return retval; } static inline unsigned int bdev_logical_block_size(struct block_device *bdev) { return queue_logical_block_size(bdev_get_queue(bdev)); } static inline unsigned int queue_physical_block_size(const struct request_queue *q) { return q->limits.physical_block_size; } static inline unsigned int bdev_physical_block_size(struct block_device *bdev) { return queue_physical_block_size(bdev_get_queue(bdev)); } static inline unsigned int queue_io_min(const struct request_queue *q) { return q->limits.io_min; } static inline int bdev_io_min(struct block_device *bdev) { return queue_io_min(bdev_get_queue(bdev)); } static inline unsigned int queue_io_opt(const struct request_queue *q) { return q->limits.io_opt; } static inline int bdev_io_opt(struct block_device *bdev) { return queue_io_opt(bdev_get_queue(bdev)); } static inline unsigned int queue_zone_write_granularity(const struct request_queue *q) { return q->limits.zone_write_granularity; } static inline unsigned int bdev_zone_write_granularity(struct block_device *bdev) { return queue_zone_write_granularity(bdev_get_queue(bdev)); } static inline int queue_alignment_offset(const struct request_queue *q) { if (q->limits.misaligned) return -1; return q->limits.alignment_offset; } static inline int queue_limit_alignment_offset(struct queue_limits *lim, sector_t sector) { unsigned int granularity = max(lim->physical_block_size, lim->io_min); unsigned int alignment = sector_div(sector, granularity >> SECTOR_SHIFT) << SECTOR_SHIFT; return (granularity + lim->alignment_offset - alignment) % granularity; } static inline int bdev_alignment_offset(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (q->limits.misaligned) return -1; if (bdev_is_partition(bdev)) return queue_limit_alignment_offset(&q->limits, bdev->bd_start_sect); return q->limits.alignment_offset; } static inline int queue_discard_alignment(const struct request_queue *q) { if (q->limits.discard_misaligned) return -1; return q->limits.discard_alignment; } static inline int queue_limit_discard_alignment(struct queue_limits *lim, sector_t sector) { unsigned int alignment, granularity, offset; if (!lim->max_discard_sectors) return 0; /* Why are these in bytes, not sectors? */ alignment = lim->discard_alignment >> SECTOR_SHIFT; granularity = lim->discard_granularity >> SECTOR_SHIFT; if (!granularity) return 0; /* Offset of the partition start in 'granularity' sectors */ offset = sector_div(sector, granularity); /* And why do we do this modulus *again* in blkdev_issue_discard()? */ offset = (granularity + alignment - offset) % granularity; /* Turn it back into bytes, gaah */ return offset << SECTOR_SHIFT; } /* * Two cases of handling DISCARD merge: * If max_discard_segments > 1, the driver takes every bio * as a range and send them to controller together. The ranges * needn't to be contiguous. * Otherwise, the bios/requests will be handled as same as * others which should be contiguous. */ static inline bool blk_discard_mergable(struct request *req) { if (req_op(req) == REQ_OP_DISCARD && queue_max_discard_segments(req->q) > 1) return true; return false; } static inline int bdev_discard_alignment(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (bdev_is_partition(bdev)) return queue_limit_discard_alignment(&q->limits, bdev->bd_start_sect); return q->limits.discard_alignment; } static inline unsigned int bdev_write_same(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (q) return q->limits.max_write_same_sectors; return 0; } static inline unsigned int bdev_write_zeroes_sectors(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (q) return q->limits.max_write_zeroes_sectors; return 0; } static inline enum blk_zoned_model bdev_zoned_model(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (q) return blk_queue_zoned_model(q); return BLK_ZONED_NONE; } static inline bool bdev_is_zoned(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (q) return blk_queue_is_zoned(q); return false; } static inline sector_t bdev_zone_sectors(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (q) return blk_queue_zone_sectors(q); return 0; } static inline unsigned int bdev_max_open_zones(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (q) return queue_max_open_zones(q); return 0; } static inline unsigned int bdev_max_active_zones(struct block_device *bdev) { struct request_queue *q = bdev_get_queue(bdev); if (q) return queue_max_active_zones(q); return 0; } static inline int queue_dma_alignment(const struct request_queue *q) { return q ? q->dma_alignment : 511; } static inline int blk_rq_aligned(struct request_queue *q, unsigned long addr, unsigned int len) { unsigned int alignment = queue_dma_alignment(q) | q->dma_pad_mask; return !(addr & alignment) && !(len & alignment); } /* assumes size > 256 */ static inline unsigned int blksize_bits(unsigned int size) { unsigned int bits = 8; do { bits++; size >>= 1; } while (size > 256); return bits; } static inline unsigned int block_size(struct block_device *bdev) { return 1 << bdev->bd_inode->i_blkbits; } int kblockd_schedule_work(struct work_struct *work); int kblockd_mod_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay); #define MODULE_ALIAS_BLOCKDEV(major,minor) \ MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor)) #define MODULE_ALIAS_BLOCKDEV_MAJOR(major) \ MODULE_ALIAS("block-major-" __stringify(major) "-*") #if defined(CONFIG_BLK_DEV_INTEGRITY) enum blk_integrity_flags { BLK_INTEGRITY_VERIFY = 1 << 0, BLK_INTEGRITY_GENERATE = 1 << 1, BLK_INTEGRITY_DEVICE_CAPABLE = 1 << 2, BLK_INTEGRITY_IP_CHECKSUM = 1 << 3, }; struct blk_integrity_iter { void *prot_buf; void *data_buf; sector_t seed; unsigned int data_size; unsigned short interval; const char *disk_name; }; typedef blk_status_t (integrity_processing_fn) (struct blk_integrity_iter *); typedef void (integrity_prepare_fn) (struct request *); typedef void (integrity_complete_fn) (struct request *, unsigned int); struct blk_integrity_profile { integrity_processing_fn *generate_fn; integrity_processing_fn *verify_fn; integrity_prepare_fn *prepare_fn; integrity_complete_fn *complete_fn; const char *name; }; extern void blk_integrity_register(struct gendisk *, struct blk_integrity *); extern void blk_integrity_unregister(struct gendisk *); extern int blk_integrity_compare(struct gendisk *, struct gendisk *); extern int blk_rq_map_integrity_sg(struct request_queue *, struct bio *, struct scatterlist *); extern int blk_rq_count_integrity_sg(struct request_queue *, struct bio *); static inline struct blk_integrity *blk_get_integrity(struct gendisk *disk) { struct blk_integrity *bi = &disk->queue->integrity; if (!bi->profile) return NULL; return bi; } static inline struct blk_integrity *bdev_get_integrity(struct block_device *bdev) { return blk_get_integrity(bdev->bd_disk); } static inline bool blk_integrity_queue_supports_integrity(struct request_queue *q) { return q->integrity.profile; } static inline bool blk_integrity_rq(struct request *rq) { return rq->cmd_flags & REQ_INTEGRITY; } static inline void blk_queue_max_integrity_segments(struct request_queue *q, unsigned int segs) { q->limits.max_integrity_segments = segs; } static inline unsigned short queue_max_integrity_segments(const struct request_queue *q) { return q->limits.max_integrity_segments; } /** * bio_integrity_intervals - Return number of integrity intervals for a bio * @bi: blk_integrity profile for device * @sectors: Size of the bio in 512-byte sectors * * Description: The block layer calculates everything in 512 byte * sectors but integrity metadata is done in terms of the data integrity * interval size of the storage device. Convert the block layer sectors * to the appropriate number of integrity intervals. */ static inline unsigned int bio_integrity_intervals(struct blk_integrity *bi, unsigned int sectors) { return sectors >> (bi->interval_exp - 9); } static inline unsigned int bio_integrity_bytes(struct blk_integrity *bi, unsigned int sectors) { return bio_integrity_intervals(bi, sectors) * bi->tuple_size; } /* * Return the first bvec that contains integrity data. Only drivers that are * limited to a single integrity segment should use this helper. */ static inline struct bio_vec *rq_integrity_vec(struct request *rq) { if (WARN_ON_ONCE(queue_max_integrity_segments(rq->q) > 1)) return NULL; return rq->bio->bi_integrity->bip_vec; } #else /* CONFIG_BLK_DEV_INTEGRITY */ struct bio; struct block_device; struct gendisk; struct blk_integrity; static inline int blk_integrity_rq(struct request *rq) { return 0; } static inline int blk_rq_count_integrity_sg(struct request_queue *q, struct bio *b) { return 0; } static inline int blk_rq_map_integrity_sg(struct request_queue *q, struct bio *b, struct scatterlist *s) { return 0; } static inline struct blk_integrity *bdev_get_integrity(struct block_device *b) { return NULL; } static inline struct blk_integrity *blk_get_integrity(struct gendisk *disk) { return NULL; } static inline bool blk_integrity_queue_supports_integrity(struct request_queue *q) { return false; } static inline int blk_integrity_compare(struct gendisk *a, struct gendisk *b) { return 0; } static inline void blk_integrity_register(struct gendisk *d, struct blk_integrity *b) { } static inline void blk_integrity_unregister(struct gendisk *d) { } static inline void blk_queue_max_integrity_segments(struct request_queue *q, unsigned int segs) { } static inline unsigned short queue_max_integrity_segments(const struct request_queue *q) { return 0; } static inline unsigned int bio_integrity_intervals(struct blk_integrity *bi, unsigned int sectors) { return 0; } static inline unsigned int bio_integrity_bytes(struct blk_integrity *bi, unsigned int sectors) { return 0; } static inline struct bio_vec *rq_integrity_vec(struct request *rq) { return NULL; } #endif /* CONFIG_BLK_DEV_INTEGRITY */ #ifdef CONFIG_BLK_INLINE_ENCRYPTION bool blk_ksm_register(struct blk_keyslot_manager *ksm, struct request_queue *q); void blk_ksm_unregister(struct request_queue *q); #else /* CONFIG_BLK_INLINE_ENCRYPTION */ static inline bool blk_ksm_register(struct blk_keyslot_manager *ksm, struct request_queue *q) { return true; } static inline void blk_ksm_unregister(struct request_queue *q) { } #endif /* CONFIG_BLK_INLINE_ENCRYPTION */ struct block_device_operations { blk_qc_t (*submit_bio) (struct bio *bio); int (*open) (struct block_device *, fmode_t); void (*release) (struct gendisk *, fmode_t); int (*rw_page)(struct block_device *, sector_t, struct page *, unsigned int); int (*ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long); unsigned int (*check_events) (struct gendisk *disk, unsigned int clearing); void (*unlock_native_capacity) (struct gendisk *); int (*getgeo)(struct block_device *, struct hd_geometry *); int (*set_read_only)(struct block_device *bdev, bool ro); /* this callback is with swap_lock and sometimes page table lock held */ void (*swap_slot_free_notify) (struct block_device *, unsigned long); int (*report_zones)(struct gendisk *, sector_t sector, unsigned int nr_zones, report_zones_cb cb, void *data); char *(*devnode)(struct gendisk *disk, umode_t *mode); struct module *owner; const struct pr_ops *pr_ops; /* * Special callback for probing GPT entry at a given sector. * Needed by Android devices, used by GPT scanner and MMC blk * driver. */ int (*alternative_gpt_sector)(struct gendisk *disk, sector_t *sector); }; #ifdef CONFIG_COMPAT extern int blkdev_compat_ptr_ioctl(struct block_device *, fmode_t, unsigned int, unsigned long); #else #define blkdev_compat_ptr_ioctl NULL #endif extern int bdev_read_page(struct block_device *, sector_t, struct page *); extern int bdev_write_page(struct block_device *, sector_t, struct page *, struct writeback_control *); #ifdef CONFIG_BLK_DEV_ZONED bool blk_req_needs_zone_write_lock(struct request *rq); bool blk_req_zone_write_trylock(struct request *rq); void __blk_req_zone_write_lock(struct request *rq); void __blk_req_zone_write_unlock(struct request *rq); static inline void blk_req_zone_write_lock(struct request *rq) { if (blk_req_needs_zone_write_lock(rq)) __blk_req_zone_write_lock(rq); } static inline void blk_req_zone_write_unlock(struct request *rq) { if (rq->rq_flags & RQF_ZONE_WRITE_LOCKED) __blk_req_zone_write_unlock(rq); } static inline bool blk_req_zone_is_write_locked(struct request *rq) { return rq->q->seq_zones_wlock && test_bit(blk_rq_zone_no(rq), rq->q->seq_zones_wlock); } static inline bool blk_req_can_dispatch_to_zone(struct request *rq) { if (!blk_req_needs_zone_write_lock(rq)) return true; return !blk_req_zone_is_write_locked(rq); } #else static inline bool blk_req_needs_zone_write_lock(struct request *rq) { return false; } static inline void blk_req_zone_write_lock(struct request *rq) { } static inline void blk_req_zone_write_unlock(struct request *rq) { } static inline bool blk_req_zone_is_write_locked(struct request *rq) { return false; } static inline bool blk_req_can_dispatch_to_zone(struct request *rq) { return true; } #endif /* CONFIG_BLK_DEV_ZONED */ static inline void blk_wake_io_task(struct task_struct *waiter) { /* * If we're polling, the task itself is doing the completions. For * that case, we don't need to signal a wakeup, it's enough to just * mark us as RUNNING. */ if (waiter == current) __set_current_state(TASK_RUNNING); else wake_up_process(waiter); } unsigned long disk_start_io_acct(struct gendisk *disk, unsigned int sectors, unsigned int op); void disk_end_io_acct(struct gendisk *disk, unsigned int op, unsigned long start_time); void bio_start_io_acct_time(struct bio *bio, unsigned long start_time); unsigned long bio_start_io_acct(struct bio *bio); void bio_end_io_acct_remapped(struct bio *bio, unsigned long start_time, struct block_device *orig_bdev); /** * bio_end_io_acct - end I/O accounting for bio based drivers * @bio: bio to end account for * @start: start time returned by bio_start_io_acct() */ static inline void bio_end_io_acct(struct bio *bio, unsigned long start_time) { return bio_end_io_acct_remapped(bio, start_time, bio->bi_bdev); } int bdev_read_only(struct block_device *bdev); int set_blocksize(struct block_device *bdev, int size); const char *bdevname(struct block_device *bdev, char *buffer); int lookup_bdev(const char *pathname, dev_t *dev); void blkdev_show(struct seq_file *seqf, off_t offset); #define BDEVNAME_SIZE 32 /* Largest string for a blockdev identifier */ #define BDEVT_SIZE 10 /* Largest string for MAJ:MIN for blkdev */ #ifdef CONFIG_BLOCK #define BLKDEV_MAJOR_MAX 512 #else #define BLKDEV_MAJOR_MAX 0 #endif struct block_device *blkdev_get_by_path(const char *path, fmode_t mode, void *holder); struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder); int bd_prepare_to_claim(struct block_device *bdev, void *holder); void bd_abort_claiming(struct block_device *bdev, void *holder); void blkdev_put(struct block_device *bdev, fmode_t mode); /* just for blk-cgroup, don't use elsewhere */ struct block_device *blkdev_get_no_open(dev_t dev); void blkdev_put_no_open(struct block_device *bdev); struct block_device *bdev_alloc(struct gendisk *disk, u8 partno); void bdev_add(struct block_device *bdev, dev_t dev); struct block_device *I_BDEV(struct inode *inode); int truncate_bdev_range(struct block_device *bdev, fmode_t mode, loff_t lstart, loff_t lend); #ifdef CONFIG_BLOCK void invalidate_bdev(struct block_device *bdev); int sync_blockdev(struct block_device *bdev); #else static inline void invalidate_bdev(struct block_device *bdev) { } static inline int sync_blockdev(struct block_device *bdev) { return 0; } #endif int fsync_bdev(struct block_device *bdev); int freeze_bdev(struct block_device *bdev); int thaw_bdev(struct block_device *bdev); #endif /* _LINUX_BLKDEV_H */
Close