Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.31
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
src /
linux-headers-4.15.0-213 /
include /
linux /
[ HOME SHELL ]
Name
Size
Permission
Action
amba
[ 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
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
hsi
[ DIR ]
drwxr-xr-x
i2c
[ 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
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
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
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
spi
[ DIR ]
drwxr-xr-x
ssb
[ DIR ]
drwxr-xr-x
sunrpc
[ DIR ]
drwxr-xr-x
ulpi
[ DIR ]
drwxr-xr-x
unaligned
[ DIR ]
drwxr-xr-x
usb
[ DIR ]
drwxr-xr-x
uwb
[ DIR ]
drwxr-xr-x
wimax
[ 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
36.89
KB
-rw-r--r--
acpi_dma.h
3.22
KB
-rw-r--r--
acpi_iort.h
2.15
KB
-rw-r--r--
acpi_pmtmr.h
674
B
-rw-r--r--
adb.h
1.79
KB
-rw-r--r--
adfs_fs.h
574
B
-rw-r--r--
aer.h
1.71
KB
-rw-r--r--
agp_backend.h
3.45
KB
-rw-r--r--
agpgart.h
3.82
KB
-rw-r--r--
ahci-remap.h
607
B
-rw-r--r--
ahci_platform.h
1.67
KB
-rw-r--r--
aio.h
673
B
-rw-r--r--
alarmtimer.h
1.83
KB
-rw-r--r--
altera_jtaguart.h
379
B
-rw-r--r--
altera_uart.h
397
B
-rw-r--r--
amd-iommu.h
6.78
KB
-rw-r--r--
amifd.h
1.99
KB
-rw-r--r--
amifdreg.h
2.65
KB
-rw-r--r--
anon_inodes.h
494
B
-rw-r--r--
apm-emulation.h
1.54
KB
-rw-r--r--
apm_bios.h
2.68
KB
-rw-r--r--
apple-gmux.h
1.42
KB
-rw-r--r--
apple_bl.h
498
B
-rw-r--r--
arch_topology.h
840
B
-rw-r--r--
arm-cci.h
2.01
KB
-rw-r--r--
arm-smccc.h
12.79
KB
-rw-r--r--
arm_sdei.h
2.33
KB
-rw-r--r--
asn1.h
1.99
KB
-rw-r--r--
asn1_ber_bytecode.h
2.72
KB
-rw-r--r--
asn1_decoder.h
675
B
-rw-r--r--
assoc_array.h
3.07
KB
-rw-r--r--
assoc_array_priv.h
5.49
KB
-rw-r--r--
async.h
1.65
KB
-rw-r--r--
async_tx.h
6.81
KB
-rw-r--r--
ata.h
33.61
KB
-rw-r--r--
ata_platform.h
729
B
-rw-r--r--
atalk.h
4.36
KB
-rw-r--r--
ath9k_platform.h
1.44
KB
-rw-r--r--
atm.h
287
B
-rw-r--r--
atm_suni.h
253
B
-rw-r--r--
atm_tcp.h
511
B
-rw-r--r--
atmdev.h
10.21
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.47
KB
-rw-r--r--
atmel_tc.h
11.33
KB
-rw-r--r--
atomic.h
30.5
KB
-rw-r--r--
attribute_container.h
2.47
KB
-rw-r--r--
audit.h
17.22
KB
-rw-r--r--
auto_dev-ioctl.h
454
B
-rw-r--r--
auto_fs.h
436
B
-rw-r--r--
auxvec.h
304
B
-rw-r--r--
average.h
2.42
KB
-rw-r--r--
b1pcmcia.h
666
B
-rw-r--r--
backing-dev-defs.h
8.53
KB
-rw-r--r--
backing-dev.h
13.8
KB
-rw-r--r--
backlight.h
5.3
KB
-rw-r--r--
badblocks.h
2.14
KB
-rw-r--r--
balloon_compaction.h
7.2
KB
-rw-r--r--
bcd.h
559
B
-rw-r--r--
bch.h
2.6
KB
-rw-r--r--
bcm47xx_nvram.h
1.22
KB
-rw-r--r--
bcm47xx_sprom.h
600
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--
bfin_mac.h
559
B
-rw-r--r--
binfmts.h
4.77
KB
-rw-r--r--
bio.h
20.17
KB
-rw-r--r--
bit_spinlock.h
2.3
KB
-rw-r--r--
bitfield.h
3.2
KB
-rw-r--r--
bitmap.h
16.68
KB
-rw-r--r--
bitops.h
6.69
KB
-rw-r--r--
bitrev.h
2.53
KB
-rw-r--r--
bits.h
883
B
-rw-r--r--
blk-cgroup.h
22.2
KB
-rw-r--r--
blk-mq-pci.h
247
B
-rw-r--r--
blk-mq-rdma.h
232
B
-rw-r--r--
blk-mq-virtio.h
288
B
-rw-r--r--
blk-mq.h
9.09
KB
-rw-r--r--
blk_types.h
10.52
KB
-rw-r--r--
blkdev.h
58.96
KB
-rw-r--r--
blkpg.h
436
B
-rw-r--r--
blktrace_api.h
3.87
KB
-rw-r--r--
blockgroup_lock.h
810
B
-rw-r--r--
bma150.h
1.89
KB
-rw-r--r--
bootmem.h
11.7
KB
-rw-r--r--
bottom_half.h
803
B
-rw-r--r--
bpf-cgroup.h
4.53
KB
-rw-r--r--
bpf.h
18.51
KB
-rw-r--r--
bpf_trace.h
196
B
-rw-r--r--
bpf_types.h
1.88
KB
-rw-r--r--
bpf_verifier.h
6.76
KB
-rw-r--r--
brcmphy.h
9.88
KB
-rw-r--r--
bsearch.h
275
B
-rw-r--r--
bsg-lib.h
2.13
KB
-rw-r--r--
bsg.h
773
B
-rw-r--r--
btree-128.h
2.67
KB
-rw-r--r--
btree-type.h
3.9
KB
-rw-r--r--
btree.h
6.83
KB
-rw-r--r--
btrfs.h
145
B
-rw-r--r--
buffer_head.h
14.38
KB
-rw-r--r--
bug.h
1.92
KB
-rw-r--r--
build_bug.h
3.15
KB
-rw-r--r--
bvec.h
4.39
KB
-rw-r--r--
c2port.h
1.49
KB
-rw-r--r--
cache.h
2.13
KB
-rw-r--r--
cacheinfo.h
3.27
KB
-rw-r--r--
capability.h
7.6
KB
-rw-r--r--
cb710.h
5.69
KB
-rw-r--r--
cciss_ioctl.h
1.03
KB
-rw-r--r--
ccp.h
18.26
KB
-rw-r--r--
cdev.h
845
B
-rw-r--r--
cdrom.h
8.75
KB
-rw-r--r--
cfag12864b.h
2.1
KB
-rw-r--r--
cgroup-defs.h
25.38
KB
-rw-r--r--
cgroup.h
26.12
KB
-rw-r--r--
cgroup_rdma.h
1.33
KB
-rw-r--r--
cgroup_subsys.h
1.17
KB
-rw-r--r--
circ_buf.h
1.08
KB
-rw-r--r--
cleancache.h
3.89
KB
-rw-r--r--
clk-provider.h
34.29
KB
-rw-r--r--
clk.h
19.38
KB
-rw-r--r--
clkdev.h
1.54
KB
-rw-r--r--
clock_cooling.h
2.06
KB
-rw-r--r--
clockchips.h
7.27
KB
-rw-r--r--
clocksource.h
8.31
KB
-rw-r--r--
cm4000_cs.h
199
B
-rw-r--r--
cma.h
1.19
KB
-rw-r--r--
cmdline-parser.h
1.21
KB
-rw-r--r--
cn_proc.h
1.85
KB
-rw-r--r--
cnt32_to_63.h
3.6
KB
-rw-r--r--
coda.h
2.16
KB
-rw-r--r--
coda_psdev.h
2.98
KB
-rw-r--r--
compaction.h
7.1
KB
-rw-r--r--
compat.h
27.39
KB
-rw-r--r--
compiler-clang.h
1.31
KB
-rw-r--r--
compiler-gcc.h
12.6
KB
-rw-r--r--
compiler-intel.h
1.3
KB
-rw-r--r--
compiler.h
10.06
KB
-rw-r--r--
compiler_types.h
7.5
KB
-rw-r--r--
completion.h
4.05
KB
-rw-r--r--
component.h
1.37
KB
-rw-r--r--
concap.h
3.69
KB
-rw-r--r--
configfs.h
9.22
KB
-rw-r--r--
connector.h
2.43
KB
-rw-r--r--
console.h
6.72
KB
-rw-r--r--
console_struct.h
6.87
KB
-rw-r--r--
consolemap.h
1.04
KB
-rw-r--r--
const.h
157
B
-rw-r--r--
container.h
668
B
-rw-r--r--
context_tracking.h
4.43
KB
-rw-r--r--
context_tracking_state.h
1.39
KB
-rw-r--r--
cordic.h
1.75
KB
-rw-r--r--
coredump.h
783
B
-rw-r--r--
coresight-pmu.h
1.44
KB
-rw-r--r--
coresight-stm.h
152
B
-rw-r--r--
coresight.h
9.86
KB
-rw-r--r--
count_zeros.h
1.62
KB
-rw-r--r--
cper.h
16.11
KB
-rw-r--r--
cpu.h
6.86
KB
-rw-r--r--
cpu_cooling.h
3.59
KB
-rw-r--r--
cpu_pm.h
2.78
KB
-rw-r--r--
cpu_rmap.h
1.86
KB
-rw-r--r--
cpufeature.h
1.85
KB
-rw-r--r--
cpufreq.h
27.62
KB
-rw-r--r--
cpuhotplug.h
12.05
KB
-rw-r--r--
cpuidle.h
8.68
KB
-rw-r--r--
cpumask.h
25.38
KB
-rw-r--r--
cpuset.h
7.07
KB
-rw-r--r--
crash_core.h
2.99
KB
-rw-r--r--
crash_dump.h
2.98
KB
-rw-r--r--
crc-ccitt.h
369
B
-rw-r--r--
crc-itu-t.h
613
B
-rw-r--r--
crc-t10dif.h
415
B
-rw-r--r--
crc16.h
622
B
-rw-r--r--
crc32.h
2.83
KB
-rw-r--r--
crc32c.h
293
B
-rw-r--r--
crc4.h
192
B
-rw-r--r--
crc7.h
316
B
-rw-r--r--
crc8.h
3.65
KB
-rw-r--r--
cred.h
12.29
KB
-rw-r--r--
crypto.h
55.52
KB
-rw-r--r--
cryptohash.h
319
B
-rw-r--r--
cs5535.h
6.28
KB
-rw-r--r--
ctype.h
1.75
KB
-rw-r--r--
cuda.h
501
B
-rw-r--r--
cyclades.h
10.36
KB
-rw-r--r--
davinci_emac.h
1.12
KB
-rw-r--r--
dax.h
3.65
KB
-rw-r--r--
dca.h
2.63
KB
-rw-r--r--
dcache.h
18.78
KB
-rw-r--r--
dccp.h
10.73
KB
-rw-r--r--
dcookies.h
1.3
KB
-rw-r--r--
debug_locks.h
1.51
KB
-rw-r--r--
debugfs.h
11.09
KB
-rw-r--r--
debugobjects.h
3.89
KB
-rw-r--r--
delay.h
1.83
KB
-rw-r--r--
delayacct.h
5.17
KB
-rw-r--r--
delayed_call.h
709
B
-rw-r--r--
dell-led.h
128
B
-rw-r--r--
devcoredump.h
2.78
KB
-rw-r--r--
devfreq-event.h
5.64
KB
-rw-r--r--
devfreq.h
12.53
KB
-rw-r--r--
devfreq_cooling.h
3.54
KB
-rw-r--r--
device-mapper.h
17.85
KB
-rw-r--r--
device.h
55.51
KB
-rw-r--r--
device_cgroup.h
1.86
KB
-rw-r--r--
devpts_fs.h
1.28
KB
-rw-r--r--
digsig.h
1.35
KB
-rw-r--r--
dim.h
8.98
KB
-rw-r--r--
dio.h
10.97
KB
-rw-r--r--
dirent.h
216
B
-rw-r--r--
dlm.h
6.01
KB
-rw-r--r--
dlm_plock.h
678
B
-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.88
KB
-rw-r--r--
dm-region-hash.h
3.11
KB
-rw-r--r--
dm9000.h
1.11
KB
-rw-r--r--
dma-buf.h
14.7
KB
-rw-r--r--
dma-contiguous.h
4.48
KB
-rw-r--r--
dma-debug.h
5.61
KB
-rw-r--r--
dma-direction.h
338
B
-rw-r--r--
dma-fence-array.h
2.49
KB
-rw-r--r--
dma-fence.h
17.29
KB
-rw-r--r--
dma-iommu.h
3.62
KB
-rw-r--r--
dma-mapping.h
24.61
KB
-rw-r--r--
dma_remapping.h
1.46
KB
-rw-r--r--
dmaengine.h
46.04
KB
-rw-r--r--
dmapool.h
1.09
KB
-rw-r--r--
dmar.h
7.94
KB
-rw-r--r--
dmi.h
4.08
KB
-rw-r--r--
dnotify.h
1.02
KB
-rw-r--r--
dns_resolver.h
1.31
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.67
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--
dw_apb_timer.h
1.7
KB
-rw-r--r--
dynamic_debug.h
5.08
KB
-rw-r--r--
dynamic_queue_limits.h
3.7
KB
-rw-r--r--
earlycpio.h
359
B
-rw-r--r--
ecryptfs.h
3.82
KB
-rw-r--r--
edac.h
20.26
KB
-rw-r--r--
edd.h
1.43
KB
-rw-r--r--
edma.h
807
B
-rw-r--r--
eeprom_93cx6.h
2.94
KB
-rw-r--r--
eeprom_93xx46.h
879
B
-rw-r--r--
efi-bgrt.h
644
B
-rw-r--r--
efi.h
49.13
KB
-rw-r--r--
efs_vh.h
1.55
KB
-rw-r--r--
eisa.h
2.96
KB
-rw-r--r--
elevator.h
9.26
KB
-rw-r--r--
elf-fdpic.h
2.18
KB
-rw-r--r--
elf-randomize.h
583
B
-rw-r--r--
elf.h
1.53
KB
-rw-r--r--
elfcore-compat.h
1.24
KB
-rw-r--r--
elfcore.h
2.52
KB
-rw-r--r--
elfnote.h
3.54
KB
-rw-r--r--
enclosure.h
4.6
KB
-rw-r--r--
err.h
1.55
KB
-rw-r--r--
errno.h
1.34
KB
-rw-r--r--
errqueue.h
524
B
-rw-r--r--
errseq.h
373
B
-rw-r--r--
etherdevice.h
15.65
KB
-rw-r--r--
ethtool.h
17.3
KB
-rw-r--r--
eventfd.h
2.36
KB
-rw-r--r--
eventpoll.h
2.16
KB
-rw-r--r--
evm.h
2.65
KB
-rw-r--r--
export.h
3.88
KB
-rw-r--r--
exportfs.h
7.45
KB
-rw-r--r--
ext2_fs.h
967
B
-rw-r--r--
extable.h
999
B
-rw-r--r--
extcon-provider.h
4.33
KB
-rw-r--r--
extcon.h
10.4
KB
-rw-r--r--
f2fs_fs.h
17.51
KB
-rw-r--r--
f75375s.h
541
B
-rw-r--r--
falloc.h
792
B
-rw-r--r--
fanotify.h
245
B
-rw-r--r--
fault-inject.h
1.87
KB
-rw-r--r--
fb.h
28.74
KB
-rw-r--r--
fbcon.h
492
B
-rw-r--r--
fcdevice.h
988
B
-rw-r--r--
fcntl.h
1.27
KB
-rw-r--r--
fd.h
490
B
-rw-r--r--
fddidevice.h
1.02
KB
-rw-r--r--
fdtable.h
3.28
KB
-rw-r--r--
fec.h
609
B
-rw-r--r--
file.h
2.18
KB
-rw-r--r--
filter.h
27.5
KB
-rw-r--r--
fips.h
167
B
-rw-r--r--
firewire.h
13.4
KB
-rw-r--r--
firmware-map.h
1.32
KB
-rw-r--r--
firmware.h
2.34
KB
-rw-r--r--
fixp-arith.h
4.41
KB
-rw-r--r--
flat.h
1.61
KB
-rw-r--r--
flex_array.h
4.31
KB
-rw-r--r--
flex_proportions.h
2.81
KB
-rw-r--r--
fmc-sdb.h
1.29
KB
-rw-r--r--
fmc.h
9.65
KB
-rw-r--r--
font.h
1.6
KB
-rw-r--r--
frame.h
813
B
-rw-r--r--
freezer.h
8.67
KB
-rw-r--r--
frontswap.h
2.87
KB
-rw-r--r--
fs.h
110.97
KB
-rw-r--r--
fs_enet_pd.h
3.38
KB
-rw-r--r--
fs_pin.h
619
B
-rw-r--r--
fs_stack.h
811
B
-rw-r--r--
fs_struct.h
1.03
KB
-rw-r--r--
fs_uart_pd.h
1.49
KB
-rw-r--r--
fscache-cache.h
18.4
KB
-rw-r--r--
fscache.h
27.54
KB
-rw-r--r--
fscrypt.h
8.93
KB
-rw-r--r--
fscrypt_notsupp.h
4.45
KB
-rw-r--r--
fscrypt_supp.h
6.1
KB
-rw-r--r--
fsi.h
2.37
KB
-rw-r--r--
fsl-diu-fb.h
4.08
KB
-rw-r--r--
fsl_devices.h
4.32
KB
-rw-r--r--
fsl_hypervisor.h
2.76
KB
-rw-r--r--
fsl_ifc.h
25.13
KB
-rw-r--r--
fsldma.h
398
B
-rw-r--r--
fsnotify.h
7.43
KB
-rw-r--r--
fsnotify_backend.h
16.66
KB
-rw-r--r--
ftrace.h
29.91
KB
-rw-r--r--
ftrace_irq.h
823
B
-rw-r--r--
futex.h
2.4
KB
-rw-r--r--
fwnode.h
4.41
KB
-rw-r--r--
gameport.h
5.56
KB
-rw-r--r--
gcd.h
193
B
-rw-r--r--
genalloc.h
5.92
KB
-rw-r--r--
genetlink.h
1.39
KB
-rw-r--r--
genhd.h
22.77
KB
-rw-r--r--
genl_magic_func.h
12.05
KB
-rw-r--r--
genl_magic_struct.h
7.66
KB
-rw-r--r--
getcpu.h
641
B
-rw-r--r--
gfp.h
23.37
KB
-rw-r--r--
glob.h
256
B
-rw-r--r--
goldfish.h
605
B
-rw-r--r--
gpio-pxa.h
571
B
-rw-r--r--
gpio.h
5.19
KB
-rw-r--r--
gpio_keys.h
1.63
KB
-rw-r--r--
hardirq.h
1.95
KB
-rw-r--r--
hash.h
3
KB
-rw-r--r--
hashtable.h
6.63
KB
-rw-r--r--
hdlc.h
3.33
KB
-rw-r--r--
hdlcdrv.h
6.32
KB
-rw-r--r--
hdmi.h
9.36
KB
-rw-r--r--
hid-debug.h
2.07
KB
-rw-r--r--
hid-roccat.h
688
B
-rw-r--r--
hid-sensor-hub.h
9.25
KB
-rw-r--r--
hid-sensor-ids.h
7.27
KB
-rw-r--r--
hid.h
35.93
KB
-rw-r--r--
hiddev.h
2.07
KB
-rw-r--r--
hidraw.h
1.49
KB
-rw-r--r--
highmem.h
5.84
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.23
KB
-rw-r--r--
hmm.h
18.19
KB
-rw-r--r--
host1x.h
9.02
KB
-rw-r--r--
hp_sdc.h
14.02
KB
-rw-r--r--
hpet.h
2.55
KB
-rw-r--r--
hrtimer.h
14.02
KB
-rw-r--r--
htcpld.h
617
B
-rw-r--r--
huge_mm.h
10.1
KB
-rw-r--r--
hugetlb.h
17
KB
-rw-r--r--
hugetlb_cgroup.h
2.93
KB
-rw-r--r--
hugetlb_inline.h
374
B
-rw-r--r--
hw_breakpoint.h
3.85
KB
-rw-r--r--
hw_random.h
2.03
KB
-rw-r--r--
hwmon-sysfs.h
1.98
KB
-rw-r--r--
hwmon-vid.h
1.48
KB
-rw-r--r--
hwmon.h
12.07
KB
-rw-r--r--
hwspinlock.h
11.06
KB
-rw-r--r--
hyperv.h
38.89
KB
-rw-r--r--
hypervisor.h
400
B
-rw-r--r--
i2c-algo-bit.h
2.24
KB
-rw-r--r--
i2c-algo-pca.h
2.89
KB
-rw-r--r--
i2c-algo-pcf.h
1.88
KB
-rw-r--r--
i2c-dev.h
1.03
KB
-rw-r--r--
i2c-gpio.h
1.19
KB
-rw-r--r--
i2c-mux-gpio.h
1.35
KB
-rw-r--r--
i2c-mux.h
2.29
KB
-rw-r--r--
i2c-ocores.h
757
B
-rw-r--r--
i2c-omap.h
1.21
KB
-rw-r--r--
i2c-pca-platform.h
441
B
-rw-r--r--
i2c-pnx.h
923
B
-rw-r--r--
i2c-pxa.h
438
B
-rw-r--r--
i2c-smbus.h
1.94
KB
-rw-r--r--
i2c-xiic.h
1.41
KB
-rw-r--r--
i2c.h
30.91
KB
-rw-r--r--
i7300_idle.h
1.95
KB
-rw-r--r--
i8042.h
2.14
KB
-rw-r--r--
i8253.h
809
B
-rw-r--r--
icmp.h
863
B
-rw-r--r--
icmpv6.h
2.5
KB
-rw-r--r--
ide.h
46.27
KB
-rw-r--r--
idr.h
7.82
KB
-rw-r--r--
ieee80211.h
83.19
KB
-rw-r--r--
ieee802154.h
11.5
KB
-rw-r--r--
if_arp.h
1.86
KB
-rw-r--r--
if_bridge.h
2.65
KB
-rw-r--r--
if_eql.h
1.07
KB
-rw-r--r--
if_ether.h
1.47
KB
-rw-r--r--
if_fddi.h
3.44
KB
-rw-r--r--
if_frad.h
2.87
KB
-rw-r--r--
if_link.h
554
B
-rw-r--r--
if_ltalk.h
188
B
-rw-r--r--
if_macvlan.h
2.2
KB
-rw-r--r--
if_phonet.h
319
B
-rw-r--r--
if_pppol2tp.h
727
B
-rw-r--r--
if_pppox.h
3.05
KB
-rw-r--r--
if_tap.h
2.24
KB
-rw-r--r--
if_team.h
7.65
KB
-rw-r--r--
if_tun.h
1.14
KB
-rw-r--r--
if_tunnel.h
409
B
-rw-r--r--
if_vlan.h
19.2
KB
-rw-r--r--
igmp.h
4.15
KB
-rw-r--r--
ihex.h
1.95
KB
-rw-r--r--
ima.h
2.53
KB
-rw-r--r--
imx-media.h
811
B
-rw-r--r--
in.h
2.43
KB
-rw-r--r--
in6.h
1.85
KB
-rw-r--r--
inet.h
2.8
KB
-rw-r--r--
inet_diag.h
2.42
KB
-rw-r--r--
inetdevice.h
8.25
KB
-rw-r--r--
init.h
9.1
KB
-rw-r--r--
init_ohci1394_dma.h
196
B
-rw-r--r--
init_task.h
7.84
KB
-rw-r--r--
initrd.h
685
B
-rw-r--r--
inotify.h
696
B
-rw-r--r--
input-polldev.h
2.17
KB
-rw-r--r--
input.h
18.7
KB
-rw-r--r--
integrity.h
1.05
KB
-rw-r--r--
intel-iommu.h
16.85
KB
-rw-r--r--
intel-pti.h
1.56
KB
-rw-r--r--
intel-svm.h
4.96
KB
-rw-r--r--
interrupt.h
21.15
KB
-rw-r--r--
interval_tree.h
831
B
-rw-r--r--
interval_tree_generic.h
8
KB
-rw-r--r--
io-64-nonatomic-hi-lo.h
1.14
KB
-rw-r--r--
io-64-nonatomic-lo-hi.h
1.14
KB
-rw-r--r--
io-mapping.h
4.36
KB
-rw-r--r--
io.h
5.86
KB
-rw-r--r--
ioc3.h
3.14
KB
-rw-r--r--
ioc4.h
5.78
KB
-rw-r--r--
iocontext.h
4.76
KB
-rw-r--r--
iomap.h
3.95
KB
-rw-r--r--
iommu-common.h
1.41
KB
-rw-r--r--
iommu-helper.h
950
B
-rw-r--r--
iommu.h
21.74
KB
-rw-r--r--
iopoll.h
5.72
KB
-rw-r--r--
ioport.h
10.74
KB
-rw-r--r--
ioprio.h
1.96
KB
-rw-r--r--
iova.h
7.03
KB
-rw-r--r--
ip.h
1.07
KB
-rw-r--r--
ipack.h
8.85
KB
-rw-r--r--
ipc.h
695
B
-rw-r--r--
ipc_namespace.h
4.81
KB
-rw-r--r--
ipmi-fru.h
3.64
KB
-rw-r--r--
ipmi.h
11.44
KB
-rw-r--r--
ipmi_smi.h
8.9
KB
-rw-r--r--
ipv6.h
8.92
KB
-rw-r--r--
ipv6_route.h
594
B
-rw-r--r--
irq.h
39.04
KB
-rw-r--r--
irq_cpustat.h
949
B
-rw-r--r--
irq_poll.h
575
B
-rw-r--r--
irq_sim.h
1.16
KB
-rw-r--r--
irq_work.h
1.3
KB
-rw-r--r--
irqbypass.h
3.59
KB
-rw-r--r--
irqchip.h
1.54
KB
-rw-r--r--
irqdesc.h
8.15
KB
-rw-r--r--
irqdomain.h
19.21
KB
-rw-r--r--
irqflags.h
4.82
KB
-rw-r--r--
irqhandler.h
362
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
3.8
KB
-rw-r--r--
iscsi_boot_sysfs.h
4.09
KB
-rw-r--r--
iscsi_ibft.h
1.28
KB
-rw-r--r--
isdn.h
22.99
KB
-rw-r--r--
isdn_divertif.h
1.27
KB
-rw-r--r--
isdn_ppp.h
6.64
KB
-rw-r--r--
isdnif.h
19.26
KB
-rw-r--r--
isicom.h
1.49
KB
-rw-r--r--
jbd2.h
47.14
KB
-rw-r--r--
jhash.h
4.62
KB
-rw-r--r--
jiffies.h
15.4
KB
-rw-r--r--
journal-head.h
2.87
KB
-rw-r--r--
joystick.h
1.28
KB
-rw-r--r--
jump_label.h
13.32
KB
-rw-r--r--
jump_label_ratelimit.h
1.12
KB
-rw-r--r--
jz4740-adc.h
1023
B
-rw-r--r--
jz4780-nemc.h
1.16
KB
-rw-r--r--
kallsyms.h
3.59
KB
-rw-r--r--
kasan-checks.h
441
B
-rw-r--r--
kasan.h
4.48
KB
-rw-r--r--
kbd_diacr.h
198
B
-rw-r--r--
kbd_kern.h
3.84
KB
-rw-r--r--
kbuild.h
380
B
-rw-r--r--
kconfig.h
2.53
KB
-rw-r--r--
kcore.h
664
B
-rw-r--r--
kcov.h
802
B
-rw-r--r--
kdb.h
7.3
KB
-rw-r--r--
kdebug.h
487
B
-rw-r--r--
kdev_t.h
1.8
KB
-rw-r--r--
kern_levels.h
1.58
KB
-rw-r--r--
kernel-page-flags.h
505
B
-rw-r--r--
kernel.h
31.31
KB
-rw-r--r--
kernel_stat.h
2.5
KB
-rw-r--r--
kernelcapi.h
4.45
KB
-rw-r--r--
kernfs.h
16.88
KB
-rw-r--r--
kexec.h
10.06
KB
-rw-r--r--
key-type.h
6.16
KB
-rw-r--r--
key.h
12.75
KB
-rw-r--r--
keyboard.h
665
B
-rw-r--r--
kfifo.h
24.84
KB
-rw-r--r--
kgdb.h
10.72
KB
-rw-r--r--
khugepaged.h
2.36
KB
-rw-r--r--
klist.h
1.88
KB
-rw-r--r--
kmemleak.h
3.86
KB
-rw-r--r--
kmod.h
1.71
KB
-rw-r--r--
kmsg_dump.h
2.85
KB
-rw-r--r--
kobj_map.h
545
B
-rw-r--r--
kobject.h
7.62
KB
-rw-r--r--
kobject_ns.h
1.9
KB
-rw-r--r--
kprobes.h
14.71
KB
-rw-r--r--
kref.h
3.28
KB
-rw-r--r--
ks0108.h
1.57
KB
-rw-r--r--
ks8842.h
1.19
KB
-rw-r--r--
ks8851_mll.h
1.04
KB
-rw-r--r--
ksm.h
2.89
KB
-rw-r--r--
kthread.h
6.7
KB
-rw-r--r--
ktime.h
6.71
KB
-rw-r--r--
kvm_host.h
37.83
KB
-rw-r--r--
kvm_irqfd.h
2.39
KB
-rw-r--r--
kvm_para.h
284
B
-rw-r--r--
kvm_types.h
1.67
KB
-rw-r--r--
l2tp.h
261
B
-rw-r--r--
lapb.h
1.71
KB
-rw-r--r--
latencytop.h
1.18
KB
-rw-r--r--
lcd.h
4.19
KB
-rw-r--r--
lcm.h
275
B
-rw-r--r--
led-class-flash.h
5.42
KB
-rw-r--r--
led-lm3530.h
3.7
KB
-rw-r--r--
leds-bd2802.h
642
B
-rw-r--r--
leds-lp3944.h
1.07
KB
-rw-r--r--
leds-lp3952.h
2.5
KB
-rw-r--r--
leds-pca9532.h
1.01
KB
-rw-r--r--
leds-regulator.h
1.29
KB
-rw-r--r--
leds-tca6507.h
1.02
KB
-rw-r--r--
leds.h
13.67
KB
-rw-r--r--
leds_pwm.h
407
B
-rw-r--r--
libata.h
64.88
KB
-rw-r--r--
libfdt.h
244
B
-rw-r--r--
libfdt_env.h
494
B
-rw-r--r--
libgcc.h
1.07
KB
-rw-r--r--
libnvdimm.h
7.16
KB
-rw-r--r--
libps2.h
1.75
KB
-rw-r--r--
license.h
374
B
-rw-r--r--
lightnvm.h
10.95
KB
-rw-r--r--
linkage.h
2.64
KB
-rw-r--r--
linux_logo.h
2.06
KB
-rw-r--r--
lis3lv02d.h
5
KB
-rw-r--r--
list.h
23.71
KB
-rw-r--r--
list_bl.h
4.19
KB
-rw-r--r--
list_lru.h
6.29
KB
-rw-r--r--
list_nulls.h
3.47
KB
-rw-r--r--
list_sort.h
277
B
-rw-r--r--
livepatch.h
6.94
KB
-rw-r--r--
llc.h
749
B
-rw-r--r--
llist.h
9.15
KB
-rw-r--r--
lockdep.h
18.61
KB
-rw-r--r--
lockref.h
1.45
KB
-rw-r--r--
log2.h
5.48
KB
-rw-r--r--
logic_pio.h
3.24
KB
-rw-r--r--
lp.h
2.76
KB
-rw-r--r--
lru_cache.h
12.42
KB
-rw-r--r--
lsm_audit.h
2.73
KB
-rw-r--r--
lsm_hooks.h
88.04
KB
-rw-r--r--
lz4.h
26.44
KB
-rw-r--r--
lzo.h
1.37
KB
-rw-r--r--
mISDNdsp.h
1.19
KB
-rw-r--r--
mISDNhw.h
5.78
KB
-rw-r--r--
mISDNif.h
14.91
KB
-rw-r--r--
mailbox_client.h
1.79
KB
-rw-r--r--
mailbox_controller.h
5.4
KB
-rw-r--r--
maple.h
2.71
KB
-rw-r--r--
marvell_phy.h
1.17
KB
-rw-r--r--
math64.h
6.42
KB
-rw-r--r--
max17040_battery.h
474
B
-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.88
KB
-rw-r--r--
mdev.h
4.9
KB
-rw-r--r--
mdio-bitbang.h
1.18
KB
-rw-r--r--
mdio-mux.h
1021
B
-rw-r--r--
mdio.h
9.01
KB
-rw-r--r--
mei_cl_bus.h
3.28
KB
-rw-r--r--
mem_encrypt.h
1.21
KB
-rw-r--r--
memblock.h
14.6
KB
-rw-r--r--
memcontrol.h
29.63
KB
-rw-r--r--
memory.h
4.52
KB
-rw-r--r--
memory_hotplug.h
10.29
KB
-rw-r--r--
mempolicy.h
7.44
KB
-rw-r--r--
mempool.h
2.39
KB
-rw-r--r--
memremap.h
7.15
KB
-rw-r--r--
memstick.h
9.73
KB
-rw-r--r--
mic_bus.h
3.2
KB
-rw-r--r--
micrel_phy.h
1.42
KB
-rw-r--r--
microchipphy.h
2.84
KB
-rw-r--r--
migrate.h
10.02
KB
-rw-r--r--
migrate_mode.h
758
B
-rw-r--r--
mii.h
8.74
KB
-rw-r--r--
miscdevice.h
2.81
KB
-rw-r--r--
mm-arch-hooks.h
679
B
-rw-r--r--
mm.h
85.89
KB
-rw-r--r--
mm_inline.h
3.44
KB
-rw-r--r--
mm_types.h
19.25
KB
-rw-r--r--
mm_types_task.h
2.4
KB
-rw-r--r--
mman.h
3.26
KB
-rw-r--r--
mmdebug.h
2.32
KB
-rw-r--r--
mmiotrace.h
3.05
KB
-rw-r--r--
mmu_context.h
378
B
-rw-r--r--
mmu_notifier.h
15.84
KB
-rw-r--r--
mmzone.h
39.66
KB
-rw-r--r--
mnt_namespace.h
617
B
-rw-r--r--
mod_devicetable.h
19.33
KB
-rw-r--r--
module.h
22.23
KB
-rw-r--r--
moduleloader.h
2.72
KB
-rw-r--r--
moduleparam.h
19.42
KB
-rw-r--r--
mount.h
3.45
KB
-rw-r--r--
mpage.h
761
B
-rw-r--r--
mpi.h
5.17
KB
-rw-r--r--
mpls.h
394
B
-rw-r--r--
mpls_iptunnel.h
178
B
-rw-r--r--
mroute.h
4.71
KB
-rw-r--r--
mroute6.h
3.27
KB
-rw-r--r--
msdos_fs.h
273
B
-rw-r--r--
msg.h
1.02
KB
-rw-r--r--
msi.h
11.79
KB
-rw-r--r--
mutex.h
6.91
KB
-rw-r--r--
mv643xx.h
52.4
KB
-rw-r--r--
mv643xx_eth.h
1.95
KB
-rw-r--r--
mv643xx_i2c.h
545
B
-rw-r--r--
mvebu-pmsu.h
520
B
-rw-r--r--
mxm-wmi.h
1.05
KB
-rw-r--r--
n_r3964.h
4.06
KB
-rw-r--r--
namei.h
3.41
KB
-rw-r--r--
nd.h
5.71
KB
-rw-r--r--
net.h
11.33
KB
-rw-r--r--
netdev_features.h
9.39
KB
-rw-r--r--
netdevice.h
140.44
KB
-rw-r--r--
netfilter.h
11.74
KB
-rw-r--r--
netfilter_bridge.h
1.82
KB
-rw-r--r--
netfilter_defs.h
239
B
-rw-r--r--
netfilter_ingress.h
1.44
KB
-rw-r--r--
netfilter_ipv4.h
424
B
-rw-r--r--
netfilter_ipv6.h
1.43
KB
-rw-r--r--
netlink.h
6.87
KB
-rw-r--r--
netpoll.h
2.69
KB
-rw-r--r--
nfs.h
1.31
KB
-rw-r--r--
nfs3.h
260
B
-rw-r--r--
nfs4.h
17.5
KB
-rw-r--r--
nfs_fs.h
16.12
KB
-rw-r--r--
nfs_fs_i.h
308
B
-rw-r--r--
nfs_fs_sb.h
8.81
KB
-rw-r--r--
nfs_iostat.h
4.18
KB
-rw-r--r--
nfs_page.h
6.26
KB
-rw-r--r--
nfs_xdr.h
38.79
KB
-rw-r--r--
nfsacl.h
1.15
KB
-rw-r--r--
nl802154.h
4.23
KB
-rw-r--r--
nls.h
3.08
KB
-rw-r--r--
nmi.h
6.56
KB
-rw-r--r--
node.h
3
KB
-rw-r--r--
nodemask.h
17.08
KB
-rw-r--r--
nospec.h
2.21
KB
-rw-r--r--
notifier.h
7.72
KB
-rw-r--r--
ns_common.h
235
B
-rw-r--r--
nsc_gpio.h
1.42
KB
-rw-r--r--
nsproxy.h
2.48
KB
-rw-r--r--
ntb.h
46.52
KB
-rw-r--r--
ntb_transport.h
3.8
KB
-rw-r--r--
nubus.h
4.13
KB
-rw-r--r--
numa.h
292
B
-rw-r--r--
nvme-fc-driver.h
38.22
KB
-rw-r--r--
nvme-fc.h
8.34
KB
-rw-r--r--
nvme-rdma.h
2.44
KB
-rw-r--r--
nvme.h
26.61
KB
-rw-r--r--
nvmem-consumer.h
4.35
KB
-rw-r--r--
nvmem-provider.h
1.52
KB
-rw-r--r--
nvram.h
495
B
-rw-r--r--
of.h
40.4
KB
-rw-r--r--
of_address.h
4.47
KB
-rw-r--r--
of_device.h
3.04
KB
-rw-r--r--
of_dma.h
2.45
KB
-rw-r--r--
of_fdt.h
4.19
KB
-rw-r--r--
of_gpio.h
4.39
KB
-rw-r--r--
of_graph.h
3.56
KB
-rw-r--r--
of_iommu.h
1
KB
-rw-r--r--
of_irq.h
3.6
KB
-rw-r--r--
of_mdio.h
2.98
KB
-rw-r--r--
of_net.h
708
B
-rw-r--r--
of_pci.h
2.23
KB
-rw-r--r--
of_pdt.h
1.4
KB
-rw-r--r--
of_platform.h
4.1
KB
-rw-r--r--
of_reserved_mem.h
2.35
KB
-rw-r--r--
oid_registry.h
3.87
KB
-rw-r--r--
olpc-ec.h
1.08
KB
-rw-r--r--
omap-dma.h
10.5
KB
-rw-r--r--
omap-dmaengine.h
583
B
-rw-r--r--
omap-gpmc.h
2.22
KB
-rw-r--r--
omap-iommu.h
520
B
-rw-r--r--
omap-mailbox.h
777
B
-rw-r--r--
omapfb.h
1.22
KB
-rw-r--r--
once.h
2.8
KB
-rw-r--r--
oom.h
3.15
KB
-rw-r--r--
openvswitch.h
844
B
-rw-r--r--
oprofile.h
6.1
KB
-rw-r--r--
osq_lock.h
1.04
KB
-rw-r--r--
overflow.h
9.26
KB
-rw-r--r--
oxu210hp.h
197
B
-rw-r--r--
padata.h
5.82
KB
-rw-r--r--
page-flags-layout.h
2.99
KB
-rw-r--r--
page-flags.h
23.91
KB
-rw-r--r--
page-isolation.h
1.9
KB
-rw-r--r--
page_counter.h
1.46
KB
-rw-r--r--
page_ext.h
1.89
KB
-rw-r--r--
page_idle.h
2.62
KB
-rw-r--r--
page_owner.h
2.3
KB
-rw-r--r--
page_ref.h
4.99
KB
-rw-r--r--
pageblock-flags.h
3.28
KB
-rw-r--r--
pagemap.h
19.02
KB
-rw-r--r--
pagevec.h
2.3
KB
-rw-r--r--
parman.h
2.87
KB
-rw-r--r--
parport.h
17.84
KB
-rw-r--r--
parport_pc.h
6.56
KB
-rw-r--r--
parser.h
1.04
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
999
B
-rw-r--r--
pci-acpi.h
3.44
KB
-rw-r--r--
pci-aspm.h
882
B
-rw-r--r--
pci-ats.h
1.39
KB
-rw-r--r--
pci-dma-compat.h
4.41
KB
-rw-r--r--
pci-dma.h
454
B
-rw-r--r--
pci-ecam.h
2.54
KB
-rw-r--r--
pci-ep-cfs.h
1.09
KB
-rw-r--r--
pci-epc.h
5.38
KB
-rw-r--r--
pci-epf.h
4.83
KB
-rw-r--r--
pci.h
81.59
KB
-rw-r--r--
pci_hotplug.h
6.91
KB
-rw-r--r--
pci_ids.h
120.12
KB
-rw-r--r--
pcieport_if.h
2.35
KB
-rw-r--r--
pda_power.h
1.12
KB
-rw-r--r--
pe.h
15.6
KB
-rw-r--r--
percpu-defs.h
18.13
KB
-rw-r--r--
percpu-refcount.h
9.93
KB
-rw-r--r--
percpu-rwsem.h
4.09
KB
-rw-r--r--
percpu.h
5.02
KB
-rw-r--r--
percpu_counter.h
4.26
KB
-rw-r--r--
percpu_ida.h
2.32
KB
-rw-r--r--
perf_event.h
38.78
KB
-rw-r--r--
perf_regs.h
1.02
KB
-rw-r--r--
personality.h
393
B
-rw-r--r--
pfn.h
666
B
-rw-r--r--
pfn_t.h
3.23
KB
-rw-r--r--
phonet.h
1.12
KB
-rw-r--r--
phy.h
31.11
KB
-rw-r--r--
phy_fixed.h
1.64
KB
-rw-r--r--
phy_led_triggers.h
1.46
KB
-rw-r--r--
phylink.h
5.06
KB
-rw-r--r--
pid.h
5.77
KB
-rw-r--r--
pid_namespace.h
2.33
KB
-rw-r--r--
pim.h
2.67
KB
-rw-r--r--
pipe_fs_i.h
6.46
KB
-rw-r--r--
pkeys.h
916
B
-rw-r--r--
pktcdvd.h
5.87
KB
-rw-r--r--
pl320-ipc.h
758
B
-rw-r--r--
platform_device.h
12.43
KB
-rw-r--r--
plist.h
8.69
KB
-rw-r--r--
pm-trace.h
940
B
-rw-r--r--
pm.h
34.21
KB
-rw-r--r--
pm2301_charger.h
1.68
KB
-rw-r--r--
pm_clock.h
2.45
KB
-rw-r--r--
pm_domain.h
9.03
KB
-rw-r--r--
pm_opp.h
10.08
KB
-rw-r--r--
pm_qos.h
8.51
KB
-rw-r--r--
pm_runtime.h
8.52
KB
-rw-r--r--
pm_wakeirq.h
1.31
KB
-rw-r--r--
pm_wakeup.h
6.61
KB
-rw-r--r--
pmbus.h
1.58
KB
-rw-r--r--
pmu.h
2.34
KB
-rw-r--r--
pnfs_osd_xdr.h
9.27
KB
-rw-r--r--
pnp.h
14.89
KB
-rw-r--r--
poison.h
2.66
KB
-rw-r--r--
poll.h
3.24
KB
-rw-r--r--
posix-clock.h
4.55
KB
-rw-r--r--
posix-timers.h
3.55
KB
-rw-r--r--
posix_acl.h
3.06
KB
-rw-r--r--
posix_acl_xattr.h
1.58
KB
-rw-r--r--
power_supply.h
13.41
KB
-rw-r--r--
powercap.h
12.59
KB
-rw-r--r--
ppp-comp.h
3.1
KB
-rw-r--r--
ppp_channel.h
3.07
KB
-rw-r--r--
ppp_defs.h
454
B
-rw-r--r--
pps-gpio.h
1.01
KB
-rw-r--r--
pps_kernel.h
3.55
KB
-rw-r--r--
pr.h
566
B
-rw-r--r--
prandom.h
2.81
KB
-rw-r--r--
preempt.h
9.33
KB
-rw-r--r--
prefetch.h
1.54
KB
-rw-r--r--
prime_numbers.h
1.35
KB
-rw-r--r--
printk.h
15.24
KB
-rw-r--r--
proc_fs.h
3.26
KB
-rw-r--r--
proc_ns.h
2.44
KB
-rw-r--r--
processor.h
2.14
KB
-rw-r--r--
profile.h
2.68
KB
-rw-r--r--
projid.h
2.34
KB
-rw-r--r--
property.h
9.79
KB
-rw-r--r--
psci.h
1.87
KB
-rw-r--r--
pstore.h
7.58
KB
-rw-r--r--
pstore_ram.h
2.89
KB
-rw-r--r--
pti.h
240
B
-rw-r--r--
ptp_classify.h
2.89
KB
-rw-r--r--
ptp_clock_kernel.h
8.56
KB
-rw-r--r--
ptr_ring.h
16.29
KB
-rw-r--r--
ptrace.h
14.57
KB
-rw-r--r--
purgatory.h
589
B
-rw-r--r--
pvclock_gtod.h
548
B
-rw-r--r--
pwm.h
16.8
KB
-rw-r--r--
pwm_backlight.h
740
B
-rw-r--r--
pxa168_eth.h
728
B
-rw-r--r--
pxa2xx_ssp.h
9.8
KB
-rw-r--r--
qcom_scm.h
4.12
KB
-rw-r--r--
qnx6_fs.h
3.27
KB
-rw-r--r--
quicklist.h
2.13
KB
-rw-r--r--
quota.h
18.87
KB
-rw-r--r--
quotaops.h
10.17
KB
-rw-r--r--
radix-tree.h
21.77
KB
-rw-r--r--
raid_class.h
2.08
KB
-rw-r--r--
ramfs.h
762
B
-rw-r--r--
random.h
3.98
KB
-rw-r--r--
range.h
651
B
-rw-r--r--
ras.h
1.18
KB
-rw-r--r--
ratelimit.h
2.81
KB
-rw-r--r--
rational.h
639
B
-rw-r--r--
rbtree.h
5.36
KB
-rw-r--r--
rbtree_augmented.h
8.67
KB
-rw-r--r--
rbtree_latch.h
6.62
KB
-rw-r--r--
rcu_node_tree.h
4.34
KB
-rw-r--r--
rcu_segcblist.h
3.26
KB
-rw-r--r--
rcu_sync.h
2.57
KB
-rw-r--r--
rculist.h
23.53
KB
-rw-r--r--
rculist_bl.h
4.36
KB
-rw-r--r--
rculist_nulls.h
6.17
KB
-rw-r--r--
rcupdate.h
33.26
KB
-rw-r--r--
rcupdate_wait.h
1.63
KB
-rw-r--r--
rcutiny.h
3.64
KB
-rw-r--r--
rcutree.h
3.56
KB
-rw-r--r--
rcuwait.h
1.82
KB
-rw-r--r--
reboot-mode.h
600
B
-rw-r--r--
reboot.h
2.05
KB
-rw-r--r--
reciprocal_div.h
1.01
KB
-rw-r--r--
refcount.h
2.6
KB
-rw-r--r--
regmap.h
42.34
KB
-rw-r--r--
regset.h
15.08
KB
-rw-r--r--
relay.h
8.84
KB
-rw-r--r--
remoteproc.h
18.48
KB
-rw-r--r--
reservation.h
8.12
KB
-rw-r--r--
reset-controller.h
2.16
KB
-rw-r--r--
reset.h
13.69
KB
-rw-r--r--
resource.h
339
B
-rw-r--r--
resource_ext.h
2.22
KB
-rw-r--r--
restart_block.h
1.11
KB
-rw-r--r--
rfkill.h
9.89
KB
-rw-r--r--
rhashtable.h
38.24
KB
-rw-r--r--
ring_buffer.h
6.79
KB
-rw-r--r--
rio.h
19.23
KB
-rw-r--r--
rio_drv.h
14.71
KB
-rw-r--r--
rio_ids.h
1.29
KB
-rw-r--r--
rio_regs.h
19.27
KB
-rw-r--r--
rmap.h
9.08
KB
-rw-r--r--
rmi.h
12.13
KB
-rw-r--r--
rndis.h
16.86
KB
-rw-r--r--
rodata_test.h
559
B
-rw-r--r--
root_dev.h
579
B
-rw-r--r--
rpmsg.h
8.37
KB
-rw-r--r--
rslib.h
2.99
KB
-rw-r--r--
rtc.h
8.71
KB
-rw-r--r--
rtmutex.h
3.47
KB
-rw-r--r--
rtnetlink.h
4.27
KB
-rw-r--r--
rtsx_common.h
1.44
KB
-rw-r--r--
rtsx_pci.h
40.14
KB
-rw-r--r--
rtsx_usb.h
15.95
KB
-rw-r--r--
rwlock.h
4.35
KB
-rw-r--r--
rwlock_api_smp.h
7.67
KB
-rw-r--r--
rwlock_types.h
1.12
KB
-rw-r--r--
rwsem-spinlock.h
1.58
KB
-rw-r--r--
rwsem.h
6
KB
-rw-r--r--
s3c_adc_battery.h
971
B
-rw-r--r--
sa11x0-dma.h
572
B
-rw-r--r--
sbitmap.h
13.56
KB
-rw-r--r--
scatterlist.h
13.29
KB
-rw-r--r--
scc.h
2.84
KB
-rw-r--r--
sched.h
47.45
KB
-rw-r--r--
sched_clock.h
661
B
-rw-r--r--
scif.h
58.85
KB
-rw-r--r--
scpi_protocol.h
2.58
KB
-rw-r--r--
screen_info.h
191
B
-rw-r--r--
sctp.h
21.92
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--
sdla.h
6.9
KB
-rw-r--r--
seccomp.h
2.66
KB
-rw-r--r--
securebits.h
239
B
-rw-r--r--
security.h
47.81
KB
-rw-r--r--
sed-opal.h
1.94
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.41
KB
-rw-r--r--
selinux.h
910
B
-rw-r--r--
sem.h
2.02
KB
-rw-r--r--
semaphore.h
1.36
KB
-rw-r--r--
seq_buf.h
3.15
KB
-rw-r--r--
seq_file.h
6.68
KB
-rw-r--r--
seq_file_net.h
713
B
-rw-r--r--
seqlock.h
16.48
KB
-rw-r--r--
seqno-fence.h
3.96
KB
-rw-r--r--
serdev.h
9.48
KB
-rw-r--r--
serial.h
630
B
-rw-r--r--
serial_8250.h
6.01
KB
-rw-r--r--
serial_bcm63xx.h
4.73
KB
-rw-r--r--
serial_core.h
17.72
KB
-rw-r--r--
serial_max3100.h
1.39
KB
-rw-r--r--
serial_pnx8xxx.h
2.61
KB
-rw-r--r--
serial_s3c.h
9.24
KB
-rw-r--r--
serial_sci.h
1.57
KB
-rw-r--r--
serio.h
4.42
KB
-rw-r--r--
set_memory.h
740
B
-rw-r--r--
sfi.h
5.75
KB
-rw-r--r--
sfi_acpi.h
3.39
KB
-rw-r--r--
sfp.h
10.4
KB
-rw-r--r--
sh_clk.h
5.96
KB
-rw-r--r--
sh_dma.h
3.61
KB
-rw-r--r--
sh_eth.h
417
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.41
KB
-rw-r--r--
shm.h
1.71
KB
-rw-r--r--
shmem_fs.h
5.33
KB
-rw-r--r--
shrinker.h
2.82
KB
-rw-r--r--
signal.h
12.57
KB
-rw-r--r--
signal_types.h
1.13
KB
-rw-r--r--
signalfd.h
817
B
-rw-r--r--
siphash.h
5.59
KB
-rw-r--r--
sirfsoc_dma.h
162
B
-rw-r--r--
sizes.h
1.26
KB
-rw-r--r--
skb_array.h
5.17
KB
-rw-r--r--
skbuff.h
120.16
KB
-rw-r--r--
slab.h
21.45
KB
-rw-r--r--
slab_def.h
2.37
KB
-rw-r--r--
slub_def.h
5.44
KB
-rw-r--r--
sm501-regs.h
11.76
KB
-rw-r--r--
sm501.h
4.63
KB
-rw-r--r--
smc911x.h
294
B
-rw-r--r--
smc91x.h
1.57
KB
-rw-r--r--
smp.h
5.67
KB
-rw-r--r--
smpboot.h
2.17
KB
-rw-r--r--
smsc911x.h
2.29
KB
-rw-r--r--
smscphy.h
1.25
KB
-rw-r--r--
sock_diag.h
2.16
KB
-rw-r--r--
socket.h
11.35
KB
-rw-r--r--
sonet.h
469
B
-rw-r--r--
sony-laptop.h
1.28
KB
-rw-r--r--
sonypi.h
2.35
KB
-rw-r--r--
sort.h
247
B
-rw-r--r--
sound.h
807
B
-rw-r--r--
soundcard.h
1.59
KB
-rw-r--r--
spinlock.h
11.04
KB
-rw-r--r--
spinlock_api_smp.h
5.4
KB
-rw-r--r--
spinlock_api_up.h
3.31
KB
-rw-r--r--
spinlock_types.h
1.99
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.01
KB
-rw-r--r--
spmi.h
5.95
KB
-rw-r--r--
sram.h
844
B
-rw-r--r--
srcu.h
6.38
KB
-rw-r--r--
srcutiny.h
3.18
KB
-rw-r--r--
srcutree.h
5.15
KB
-rw-r--r--
ssbi.h
1.11
KB
-rw-r--r--
stackdepot.h
967
B
-rw-r--r--
stackprotector.h
324
B
-rw-r--r--
stacktrace.h
1.45
KB
-rw-r--r--
start_kernel.h
334
B
-rw-r--r--
stat.h
1.18
KB
-rw-r--r--
statfs.h
1.31
KB
-rw-r--r--
static_key.h
30
B
-rw-r--r--
stddef.h
620
B
-rw-r--r--
ste_modem_shm.h
1.59
KB
-rw-r--r--
stm.h
4.75
KB
-rw-r--r--
stmmac.h
5.39
KB
-rw-r--r--
stmp3xxx_rtc_wdt.h
332
B
-rw-r--r--
stmp_device.h
619
B
-rw-r--r--
stop_machine.h
4.68
KB
-rw-r--r--
string.h
14.97
KB
-rw-r--r--
string_helpers.h
2.17
KB
-rw-r--r--
stringhash.h
2.65
KB
-rw-r--r--
stringify.h
341
B
-rw-r--r--
sudmac.h
1.24
KB
-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--
suspend.h
19.13
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.33
KB
-rw-r--r--
swap.h
21.58
KB
-rw-r--r--
swap_cgroup.h
971
B
-rw-r--r--
swap_slots.h
840
B
-rw-r--r--
swapfile.h
556
B
-rw-r--r--
swapops.h
9.27
KB
-rw-r--r--
swiotlb.h
3.8
KB
-rw-r--r--
switchtec.h
8.1
KB
-rw-r--r--
sxgbe_platform.h
1.34
KB
-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.21
KB
-rw-r--r--
syscalls.h
39.85
KB
-rw-r--r--
syscore_ops.h
635
B
-rw-r--r--
sysctl.h
7.55
KB
-rw-r--r--
sysfs.h
15.41
KB
-rw-r--r--
syslog.h
1.89
KB
-rw-r--r--
sysrq.h
1.79
KB
-rw-r--r--
sysv_fs.h
9.03
KB
-rw-r--r--
t10-pi.h
1.21
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
617
B
-rw-r--r--
taskstats_kern.h
957
B
-rw-r--r--
tboot.h
3.99
KB
-rw-r--r--
tc.h
3.45
KB
-rw-r--r--
tca6416_keypad.h
847
B
-rw-r--r--
tcp.h
15.13
KB
-rw-r--r--
tee_drv.h
8.27
KB
-rw-r--r--
textsearch.h
4.73
KB
-rw-r--r--
textsearch_fsm.h
1.19
KB
-rw-r--r--
tfrc.h
1.89
KB
-rw-r--r--
thermal.h
19.62
KB
-rw-r--r--
thinkpad_acpi.h
320
B
-rw-r--r--
thread_info.h
4.1
KB
-rw-r--r--
threads.h
1.28
KB
-rw-r--r--
thunderbolt.h
19.02
KB
-rw-r--r--
ti_wilink_st.h
14.07
KB
-rw-r--r--
tick.h
7.88
KB
-rw-r--r--
tifm.h
4.8
KB
-rw-r--r--
timb_dma.h
1.74
KB
-rw-r--r--
timb_gpio.h
1.28
KB
-rw-r--r--
time.h
3.71
KB
-rw-r--r--
time32.h
5.64
KB
-rw-r--r--
time64.h
4.01
KB
-rw-r--r--
timecounter.h
4.58
KB
-rw-r--r--
timekeeper_internal.h
5.01
KB
-rw-r--r--
timekeeping.h
5.17
KB
-rw-r--r--
timekeeping32.h
3.13
KB
-rw-r--r--
timer.h
6.74
KB
-rw-r--r--
timerfd.h
508
B
-rw-r--r--
timeriomem-rng.h
475
B
-rw-r--r--
timerqueue.h
1.19
KB
-rw-r--r--
timex.h
6.61
KB
-rw-r--r--
tnum.h
2.74
KB
-rw-r--r--
topology.h
4.85
KB
-rw-r--r--
torture.h
3.58
KB
-rw-r--r--
toshiba.h
904
B
-rw-r--r--
tpm.h
3
KB
-rw-r--r--
tpm_command.h
847
B
-rw-r--r--
trace.h
964
B
-rw-r--r--
trace_clock.h
667
B
-rw-r--r--
trace_events.h
16.65
KB
-rw-r--r--
trace_seq.h
3.74
KB
-rw-r--r--
tracefs.h
1.19
KB
-rw-r--r--
tracehook.h
7.08
KB
-rw-r--r--
tracepoint-defs.h
778
B
-rw-r--r--
tracepoint.h
16.26
KB
-rw-r--r--
transport_class.h
2.5
KB
-rw-r--r--
ts-nbus.h
532
B
-rw-r--r--
tsacct_kern.h
1.2
KB
-rw-r--r--
tty.h
28.03
KB
-rw-r--r--
tty_driver.h
15.45
KB
-rw-r--r--
tty_flip.h
1.62
KB
-rw-r--r--
tty_ldisc.h
7.69
KB
-rw-r--r--
typecheck.h
624
B
-rw-r--r--
types.h
5.61
KB
-rw-r--r--
u64_stats_sync.h
5.43
KB
-rw-r--r--
uaccess.h
9.95
KB
-rw-r--r--
ucb1400.h
4.26
KB
-rw-r--r--
ucs2_string.h
662
B
-rw-r--r--
udp.h
3.65
KB
-rw-r--r--
uidgid.h
4.07
KB
-rw-r--r--
uio.h
7.66
KB
-rw-r--r--
uio_driver.h
4.07
KB
-rw-r--r--
umh.h
1.79
KB
-rw-r--r--
uprobes.h
6.28
KB
-rw-r--r--
usb.h
75.97
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
4.34
KB
-rw-r--r--
userfaultfd_k.h
3.57
KB
-rw-r--r--
util_macros.h
1.17
KB
-rw-r--r--
uts.h
388
B
-rw-r--r--
utsname.h
1.72
KB
-rw-r--r--
uuid.h
2.35
KB
-rw-r--r--
uwb.h
25.22
KB
-rw-r--r--
verification.h
1.57
KB
-rw-r--r--
vermagic.h
1.05
KB
-rw-r--r--
vexpress.h
1.44
KB
-rw-r--r--
vfio.h
6.32
KB
-rw-r--r--
vfs.h
116
B
-rw-r--r--
vga_switcheroo.h
8.4
KB
-rw-r--r--
vgaarb.h
5.12
KB
-rw-r--r--
via-core.h
7.27
KB
-rw-r--r--
via-gpio.h
334
B
-rw-r--r--
via.h
932
B
-rw-r--r--
via_i2c.h
1.48
KB
-rw-r--r--
videodev2.h
2.68
KB
-rw-r--r--
virtio.h
7.07
KB
-rw-r--r--
virtio_byteorder.h
1.46
KB
-rw-r--r--
virtio_caif.h
492
B
-rw-r--r--
virtio_config.h
12.82
KB
-rw-r--r--
virtio_console.h
1.93
KB
-rw-r--r--
virtio_net.h
5.33
KB
-rw-r--r--
virtio_ring.h
2.96
KB
-rw-r--r--
virtio_vsock.h
5.05
KB
-rw-r--r--
vlynq.h
3.88
KB
-rw-r--r--
vm_event_item.h
2.96
KB
-rw-r--r--
vm_sockets.h
703
B
-rw-r--r--
vmacache.h
932
B
-rw-r--r--
vmalloc.h
6.29
KB
-rw-r--r--
vme.h
5.66
KB
-rw-r--r--
vmpressure.h
1.7
KB
-rw-r--r--
vmstat.h
10.93
KB
-rw-r--r--
vmw_vmci_api.h
3.19
KB
-rw-r--r--
vmw_vmci_defs.h
27.93
KB
-rw-r--r--
vringh.h
7.76
KB
-rw-r--r--
vt.h
611
B
-rw-r--r--
vt_buffer.h
1.49
KB
-rw-r--r--
vt_kern.h
6.21
KB
-rw-r--r--
vtime.h
3.57
KB
-rw-r--r--
w1-gpio.h
729
B
-rw-r--r--
w1.h
9.13
KB
-rw-r--r--
wait.h
36.36
KB
-rw-r--r--
wait_bit.h
9.85
KB
-rw-r--r--
wanrouter.h
210
B
-rw-r--r--
watchdog.h
7.81
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.53
KB
-rw-r--r--
wl12xx.h
1.39
KB
-rw-r--r--
wm97xx.h
10.61
KB
-rw-r--r--
wmi.h
1.94
KB
-rw-r--r--
workqueue.h
21.56
KB
-rw-r--r--
writeback.h
12.13
KB
-rw-r--r--
ww_mutex.h
12.42
KB
-rw-r--r--
xattr.h
3.38
KB
-rw-r--r--
xxhash.h
7.65
KB
-rw-r--r--
xz.h
11.16
KB
-rw-r--r--
yam.h
2.82
KB
-rw-r--r--
z2_battery.h
318
B
-rw-r--r--
zbud.h
740
B
-rw-r--r--
zconf.h
1.73
KB
-rw-r--r--
zlib.h
27.97
KB
-rw-r--r--
zorro.h
3.94
KB
-rw-r--r--
zpool.h
2.99
KB
-rw-r--r--
zsmalloc.h
1.64
KB
-rw-r--r--
zstd.h
48.64
KB
-rw-r--r--
zutil.h
2.73
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : scif.h
/* * Intel MIC Platform Software Stack (MPSS) * * This file is provided under a dual BSD/GPLv2 license. When using or * redistributing this file, you may do so under either license. * * GPL LICENSE SUMMARY * * Copyright(c) 2014 Intel Corporation. * * This program is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * BSD LICENSE * * Copyright(c) 2014 Intel Corporation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * Neither the name of Intel Corporation nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Intel SCIF driver. * */ #ifndef __SCIF_H__ #define __SCIF_H__ #include <linux/types.h> #include <linux/poll.h> #include <linux/device.h> #include <linux/scif_ioctl.h> #define SCIF_ACCEPT_SYNC 1 #define SCIF_SEND_BLOCK 1 #define SCIF_RECV_BLOCK 1 enum { SCIF_PROT_READ = (1 << 0), SCIF_PROT_WRITE = (1 << 1) }; enum { SCIF_MAP_FIXED = 0x10, SCIF_MAP_KERNEL = 0x20, }; enum { SCIF_FENCE_INIT_SELF = (1 << 0), SCIF_FENCE_INIT_PEER = (1 << 1), SCIF_SIGNAL_LOCAL = (1 << 4), SCIF_SIGNAL_REMOTE = (1 << 5) }; enum { SCIF_RMA_USECPU = (1 << 0), SCIF_RMA_USECACHE = (1 << 1), SCIF_RMA_SYNC = (1 << 2), SCIF_RMA_ORDERED = (1 << 3) }; /* End of SCIF Admin Reserved Ports */ #define SCIF_ADMIN_PORT_END 1024 /* End of SCIF Reserved Ports */ #define SCIF_PORT_RSVD 1088 typedef struct scif_endpt *scif_epd_t; typedef struct scif_pinned_pages *scif_pinned_pages_t; /** * struct scif_range - SCIF registered range used in kernel mode * @cookie: cookie used internally by SCIF * @nr_pages: number of pages of PAGE_SIZE * @prot_flags: R/W protection * @phys_addr: Array of bus addresses * @va: Array of kernel virtual addresses backed by the pages in the phys_addr * array. The va is populated only when called on the host for a remote * SCIF connection on MIC. This is required to support the use case of DMA * between MIC and another device which is not a SCIF node e.g., an IB or * ethernet NIC. */ struct scif_range { void *cookie; int nr_pages; int prot_flags; dma_addr_t *phys_addr; void __iomem **va; }; /** * struct scif_pollepd - SCIF endpoint to be monitored via scif_poll * @epd: SCIF endpoint * @events: requested events * @revents: returned events */ struct scif_pollepd { scif_epd_t epd; short events; short revents; }; /** * scif_peer_dev - representation of a peer SCIF device * * Peer devices show up as PCIe devices for the mgmt node but not the cards. * The mgmt node discovers all the cards on the PCIe bus and informs the other * cards about their peers. Upon notification of a peer a node adds a peer * device to the peer bus to maintain symmetry in the way devices are * discovered across all nodes in the SCIF network. * * @dev: underlying device * @dnode - The destination node which this device will communicate with. */ struct scif_peer_dev { struct device dev; u8 dnode; }; /** * scif_client - representation of a SCIF client * @name: client name * @probe - client method called when a peer device is registered * @remove - client method called when a peer device is unregistered * @si - subsys_interface used internally for implementing SCIF clients */ struct scif_client { const char *name; void (*probe)(struct scif_peer_dev *spdev); void (*remove)(struct scif_peer_dev *spdev); struct subsys_interface si; }; #define SCIF_OPEN_FAILED ((scif_epd_t)-1) #define SCIF_REGISTER_FAILED ((off_t)-1) #define SCIF_MMAP_FAILED ((void *)-1) /** * scif_open() - Create an endpoint * * Return: * Upon successful completion, scif_open() returns an endpoint descriptor to * be used in subsequent SCIF functions calls to refer to that endpoint; * otherwise in user mode SCIF_OPEN_FAILED (that is ((scif_epd_t)-1)) is * returned and errno is set to indicate the error; in kernel mode a NULL * scif_epd_t is returned. * * Errors: * ENOMEM - Insufficient kernel memory was available */ scif_epd_t scif_open(void); /** * scif_bind() - Bind an endpoint to a port * @epd: endpoint descriptor * @pn: port number * * scif_bind() binds endpoint epd to port pn, where pn is a port number on the * local node. If pn is zero, a port number greater than or equal to * SCIF_PORT_RSVD is assigned and returned. Each endpoint may be bound to * exactly one local port. Ports less than 1024 when requested can only be bound * by system (or root) processes or by processes executed by privileged users. * * Return: * Upon successful completion, scif_bind() returns the port number to which epd * is bound; otherwise in user mode -1 is returned and errno is set to * indicate the error; in kernel mode the negative of one of the following * errors is returned. * * Errors: * EBADF, ENOTTY - epd is not a valid endpoint descriptor * EINVAL - the endpoint or the port is already bound * EISCONN - The endpoint is already connected * ENOSPC - No port number available for assignment * EACCES - The port requested is protected and the user is not the superuser */ int scif_bind(scif_epd_t epd, u16 pn); /** * scif_listen() - Listen for connections on an endpoint * @epd: endpoint descriptor * @backlog: maximum pending connection requests * * scif_listen() marks the endpoint epd as a listening endpoint - that is, as * an endpoint that will be used to accept incoming connection requests. Once * so marked, the endpoint is said to be in the listening state and may not be * used as the endpoint of a connection. * * The endpoint, epd, must have been bound to a port. * * The backlog argument defines the maximum length to which the queue of * pending connections for epd may grow. If a connection request arrives when * the queue is full, the client may receive an error with an indication that * the connection was refused. * * Return: * Upon successful completion, scif_listen() returns 0; otherwise in user mode * -1 is returned and errno is set to indicate the error; in kernel mode the * negative of one of the following errors is returned. * * Errors: * EBADF, ENOTTY - epd is not a valid endpoint descriptor * EINVAL - the endpoint is not bound to a port * EISCONN - The endpoint is already connected or listening */ int scif_listen(scif_epd_t epd, int backlog); /** * scif_connect() - Initiate a connection on a port * @epd: endpoint descriptor * @dst: global id of port to which to connect * * The scif_connect() function requests the connection of endpoint epd to remote * port dst. If the connection is successful, a peer endpoint, bound to dst, is * created on node dst.node. On successful return, the connection is complete. * * If the endpoint epd has not already been bound to a port, scif_connect() * will bind it to an unused local port. * * A connection is terminated when an endpoint of the connection is closed, * either explicitly by scif_close(), or when a process that owns one of the * endpoints of the connection is terminated. * * In user space, scif_connect() supports an asynchronous connection mode * if the application has set the O_NONBLOCK flag on the endpoint via the * fcntl() system call. Setting this flag will result in the calling process * not to wait during scif_connect(). * * Return: * Upon successful completion, scif_connect() returns the port ID to which the * endpoint, epd, is bound; otherwise in user mode -1 is returned and errno is * set to indicate the error; in kernel mode the negative of one of the * following errors is returned. * * Errors: * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNREFUSED - The destination was not listening for connections or refused * the connection request * EINVAL - dst.port is not a valid port ID * EISCONN - The endpoint is already connected * ENOMEM - No buffer space is available * ENODEV - The destination node does not exist, or the node is lost or existed, * but is not currently in the network since it may have crashed * ENOSPC - No port number available for assignment * EOPNOTSUPP - The endpoint is listening and cannot be connected */ int scif_connect(scif_epd_t epd, struct scif_port_id *dst); /** * scif_accept() - Accept a connection on an endpoint * @epd: endpoint descriptor * @peer: global id of port to which connected * @newepd: new connected endpoint descriptor * @flags: flags * * The scif_accept() call extracts the first connection request from the queue * of pending connections for the port on which epd is listening. scif_accept() * creates a new endpoint, bound to the same port as epd, and allocates a new * SCIF endpoint descriptor, returned in newepd, for the endpoint. The new * endpoint is connected to the endpoint through which the connection was * requested. epd is unaffected by this call, and remains in the listening * state. * * On successful return, peer holds the global port identifier (node id and * local port number) of the port which requested the connection. * * A connection is terminated when an endpoint of the connection is closed, * either explicitly by scif_close(), or when a process that owns one of the * endpoints of the connection is terminated. * * The number of connections that can (subsequently) be accepted on epd is only * limited by system resources (memory). * * The flags argument is formed by OR'ing together zero or more of the * following values. * SCIF_ACCEPT_SYNC - block until a connection request is presented. If * SCIF_ACCEPT_SYNC is not in flags, and no pending * connections are present on the queue, scif_accept() * fails with an EAGAIN error * * In user mode, the select() and poll() functions can be used to determine * when there is a connection request. In kernel mode, the scif_poll() * function may be used for this purpose. A readable event will be delivered * when a connection is requested. * * Return: * Upon successful completion, scif_accept() returns 0; otherwise in user mode * -1 is returned and errno is set to indicate the error; in kernel mode the * negative of one of the following errors is returned. * * Errors: * EAGAIN - SCIF_ACCEPT_SYNC is not set and no connections are present to be * accepted or SCIF_ACCEPT_SYNC is not set and remote node failed to complete * its connection request * EBADF, ENOTTY - epd is not a valid endpoint descriptor * EINTR - Interrupted function * EINVAL - epd is not a listening endpoint, or flags is invalid, or peer is * NULL, or newepd is NULL * ENODEV - The requesting node is lost or existed, but is not currently in the * network since it may have crashed * ENOMEM - Not enough space * ENOENT - Secondary part of epd registration failed */ int scif_accept(scif_epd_t epd, struct scif_port_id *peer, scif_epd_t *newepd, int flags); /** * scif_close() - Close an endpoint * @epd: endpoint descriptor * * scif_close() closes an endpoint and performs necessary teardown of * facilities associated with that endpoint. * * If epd is a listening endpoint then it will no longer accept connection * requests on the port to which it is bound. Any pending connection requests * are rejected. * * If epd is a connected endpoint, then its peer endpoint is also closed. RMAs * which are in-process through epd or its peer endpoint will complete before * scif_close() returns. Registered windows of the local and peer endpoints are * released as if scif_unregister() was called against each window. * * Closing a SCIF endpoint does not affect local registered memory mapped by * a SCIF endpoint on a remote node. The local memory remains mapped by the peer * SCIF endpoint explicitly removed by calling munmap(..) by the peer. * * If the peer endpoint's receive queue is not empty at the time that epd is * closed, then the peer endpoint can be passed as the endpoint parameter to * scif_recv() until the receive queue is empty. * * epd is freed and may no longer be accessed. * * Return: * Upon successful completion, scif_close() returns 0; otherwise in user mode * -1 is returned and errno is set to indicate the error; in kernel mode the * negative of one of the following errors is returned. * * Errors: * EBADF, ENOTTY - epd is not a valid endpoint descriptor */ int scif_close(scif_epd_t epd); /** * scif_send() - Send a message * @epd: endpoint descriptor * @msg: message buffer address * @len: message length * @flags: blocking mode flags * * scif_send() sends data to the peer of endpoint epd. Up to len bytes of data * are copied from memory starting at address msg. On successful execution the * return value of scif_send() is the number of bytes that were sent, and is * zero if no bytes were sent because len was zero. scif_send() may be called * only when the endpoint is in a connected state. * * If a scif_send() call is non-blocking, then it sends only those bytes which * can be sent without waiting, up to a maximum of len bytes. * * If a scif_send() call is blocking, then it normally returns after sending * all len bytes. If a blocking call is interrupted or the connection is * reset, the call is considered successful if some bytes were sent or len is * zero, otherwise the call is considered unsuccessful. * * In user mode, the select() and poll() functions can be used to determine * when the send queue is not full. In kernel mode, the scif_poll() function * may be used for this purpose. * * It is recommended that scif_send()/scif_recv() only be used for short * control-type message communication between SCIF endpoints. The SCIF RMA * APIs are expected to provide better performance for transfer sizes of * 1024 bytes or longer for the current MIC hardware and software * implementation. * * scif_send() will block until the entire message is sent if SCIF_SEND_BLOCK * is passed as the flags argument. * * Return: * Upon successful completion, scif_send() returns the number of bytes sent; * otherwise in user mode -1 is returned and errno is set to indicate the * error; in kernel mode the negative of one of the following errors is * returned. * * Errors: * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * EINVAL - flags is invalid, or len is negative * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOMEM - Not enough space * ENOTCONN - The endpoint is not connected */ int scif_send(scif_epd_t epd, void *msg, int len, int flags); /** * scif_recv() - Receive a message * @epd: endpoint descriptor * @msg: message buffer address * @len: message buffer length * @flags: blocking mode flags * * scif_recv() receives data from the peer of endpoint epd. Up to len bytes of * data are copied to memory starting at address msg. On successful execution * the return value of scif_recv() is the number of bytes that were received, * and is zero if no bytes were received because len was zero. scif_recv() may * be called only when the endpoint is in a connected state. * * If a scif_recv() call is non-blocking, then it receives only those bytes * which can be received without waiting, up to a maximum of len bytes. * * If a scif_recv() call is blocking, then it normally returns after receiving * all len bytes. If the blocking call was interrupted due to a disconnection, * subsequent calls to scif_recv() will copy all bytes received upto the point * of disconnection. * * In user mode, the select() and poll() functions can be used to determine * when data is available to be received. In kernel mode, the scif_poll() * function may be used for this purpose. * * It is recommended that scif_send()/scif_recv() only be used for short * control-type message communication between SCIF endpoints. The SCIF RMA * APIs are expected to provide better performance for transfer sizes of * 1024 bytes or longer for the current MIC hardware and software * implementation. * * scif_recv() will block until the entire message is received if * SCIF_RECV_BLOCK is passed as the flags argument. * * Return: * Upon successful completion, scif_recv() returns the number of bytes * received; otherwise in user mode -1 is returned and errno is set to * indicate the error; in kernel mode the negative of one of the following * errors is returned. * * Errors: * EAGAIN - The destination node is returning from a low power state * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * EINVAL - flags is invalid, or len is negative * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOMEM - Not enough space * ENOTCONN - The endpoint is not connected */ int scif_recv(scif_epd_t epd, void *msg, int len, int flags); /** * scif_register() - Mark a memory region for remote access. * @epd: endpoint descriptor * @addr: starting virtual address * @len: length of range * @offset: offset of window * @prot_flags: read/write protection flags * @map_flags: mapping flags * * The scif_register() function opens a window, a range of whole pages of the * registered address space of the endpoint epd, starting at offset po and * continuing for len bytes. The value of po, further described below, is a * function of the parameters offset and len, and the value of map_flags. Each * page of the window represents the physical memory page which backs the * corresponding page of the range of virtual address pages starting at addr * and continuing for len bytes. addr and len are constrained to be multiples * of the page size. A successful scif_register() call returns po. * * When SCIF_MAP_FIXED is set in the map_flags argument, po will be offset * exactly, and offset is constrained to be a multiple of the page size. The * mapping established by scif_register() will not replace any existing * registration; an error is returned if any page within the range [offset, * offset + len - 1] intersects an existing window. * * When SCIF_MAP_FIXED is not set, the implementation uses offset in an * implementation-defined manner to arrive at po. The po value so chosen will * be an area of the registered address space that the implementation deems * suitable for a mapping of len bytes. An offset value of 0 is interpreted as * granting the implementation complete freedom in selecting po, subject to * constraints described below. A non-zero value of offset is taken to be a * suggestion of an offset near which the mapping should be placed. When the * implementation selects a value for po, it does not replace any extant * window. In all cases, po will be a multiple of the page size. * * The physical pages which are so represented by a window are available for * access in calls to mmap(), scif_readfrom(), scif_writeto(), * scif_vreadfrom(), and scif_vwriteto(). While a window is registered, the * physical pages represented by the window will not be reused by the memory * subsystem for any other purpose. Note that the same physical page may be * represented by multiple windows. * * Subsequent operations which change the memory pages to which virtual * addresses are mapped (such as mmap(), munmap()) have no effect on * existing window. * * If the process will fork(), it is recommended that the registered * virtual address range be marked with MADV_DONTFORK. Doing so will prevent * problems due to copy-on-write semantics. * * The prot_flags argument is formed by OR'ing together one or more of the * following values. * SCIF_PROT_READ - allow read operations from the window * SCIF_PROT_WRITE - allow write operations to the window * * Return: * Upon successful completion, scif_register() returns the offset at which the * mapping was placed (po); otherwise in user mode SCIF_REGISTER_FAILED (that * is (off_t *)-1) is returned and errno is set to indicate the error; in * kernel mode the negative of one of the following errors is returned. * * Errors: * EADDRINUSE - SCIF_MAP_FIXED is set in map_flags, and pages in the range * [offset, offset + len -1] are already registered * EAGAIN - The mapping could not be performed due to lack of resources * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * EINVAL - map_flags is invalid, or prot_flags is invalid, or SCIF_MAP_FIXED is * set in flags, and offset is not a multiple of the page size, or addr is not a * multiple of the page size, or len is not a multiple of the page size, or is * 0, or offset is negative * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOMEM - Not enough space * ENOTCONN -The endpoint is not connected */ off_t scif_register(scif_epd_t epd, void *addr, size_t len, off_t offset, int prot_flags, int map_flags); /** * scif_unregister() - Mark a memory region for remote access. * @epd: endpoint descriptor * @offset: start of range to unregister * @len: length of range to unregister * * The scif_unregister() function closes those previously registered windows * which are entirely within the range [offset, offset + len - 1]. It is an * error to specify a range which intersects only a subrange of a window. * * On a successful return, pages within the window may no longer be specified * in calls to mmap(), scif_readfrom(), scif_writeto(), scif_vreadfrom(), * scif_vwriteto(), scif_get_pages, and scif_fence_signal(). The window, * however, continues to exist until all previous references against it are * removed. A window is referenced if there is a mapping to it created by * mmap(), or if scif_get_pages() was called against the window * (and the pages have not been returned via scif_put_pages()). A window is * also referenced while an RMA, in which some range of the window is a source * or destination, is in progress. Finally a window is referenced while some * offset in that window was specified to scif_fence_signal(), and the RMAs * marked by that call to scif_fence_signal() have not completed. While a * window is in this state, its registered address space pages are not * available for use in a new registered window. * * When all such references to the window have been removed, its references to * all the physical pages which it represents are removed. Similarly, the * registered address space pages of the window become available for * registration in a new window. * * Return: * Upon successful completion, scif_unregister() returns 0; otherwise in user * mode -1 is returned and errno is set to indicate the error; in kernel mode * the negative of one of the following errors is returned. In the event of an * error, no windows are unregistered. * * Errors: * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * EINVAL - the range [offset, offset + len - 1] intersects a subrange of a * window, or offset is negative * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOTCONN - The endpoint is not connected * ENXIO - Offsets in the range [offset, offset + len - 1] are invalid for the * registered address space of epd */ int scif_unregister(scif_epd_t epd, off_t offset, size_t len); /** * scif_readfrom() - Copy from a remote address space * @epd: endpoint descriptor * @loffset: offset in local registered address space to * which to copy * @len: length of range to copy * @roffset: offset in remote registered address space * from which to copy * @rma_flags: transfer mode flags * * scif_readfrom() copies len bytes from the remote registered address space of * the peer of endpoint epd, starting at the offset roffset to the local * registered address space of epd, starting at the offset loffset. * * Each of the specified ranges [loffset, loffset + len - 1] and [roffset, * roffset + len - 1] must be within some registered window or windows of the * local and remote nodes. A range may intersect multiple registered windows, * but only if those windows are contiguous in the registered address space. * * If rma_flags includes SCIF_RMA_USECPU, then the data is copied using * programmed read/writes. Otherwise the data is copied using DMA. If rma_- * flags includes SCIF_RMA_SYNC, then scif_readfrom() will return after the * transfer is complete. Otherwise, the transfer may be performed asynchron- * ously. The order in which any two asynchronous RMA operations complete * is non-deterministic. The synchronization functions, scif_fence_mark()/ * scif_fence_wait() and scif_fence_signal(), can be used to synchronize to * the completion of asynchronous RMA operations on the same endpoint. * * The DMA transfer of individual bytes is not guaranteed to complete in * address order. If rma_flags includes SCIF_RMA_ORDERED, then the last * cacheline or partial cacheline of the source range will become visible on * the destination node after all other transferred data in the source * range has become visible on the destination node. * * The optimal DMA performance will likely be realized if both * loffset and roffset are cacheline aligned (are a multiple of 64). Lower * performance will likely be realized if loffset and roffset are not * cacheline aligned but are separated by some multiple of 64. The lowest level * of performance is likely if loffset and roffset are not separated by a * multiple of 64. * * The rma_flags argument is formed by ORing together zero or more of the * following values. * SCIF_RMA_USECPU - perform the transfer using the CPU, otherwise use the DMA * engine. * SCIF_RMA_SYNC - perform the transfer synchronously, returning after the * transfer has completed. Passing this flag results in the * current implementation busy waiting and consuming CPU cycles * while the DMA transfer is in progress for best performance by * avoiding the interrupt latency. * SCIF_RMA_ORDERED - ensure that the last cacheline or partial cacheline of * the source range becomes visible on the destination node * after all other transferred data in the source range has * become visible on the destination * * Return: * Upon successful completion, scif_readfrom() returns 0; otherwise in user * mode -1 is returned and errno is set to indicate the error; in kernel mode * the negative of one of the following errors is returned. * * Errors: * EACCESS - Attempt to write to a read-only range * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * EINVAL - rma_flags is invalid * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOTCONN - The endpoint is not connected * ENXIO - The range [loffset, loffset + len - 1] is invalid for the registered * address space of epd, or, The range [roffset, roffset + len - 1] is invalid * for the registered address space of the peer of epd, or loffset or roffset * is negative */ int scif_readfrom(scif_epd_t epd, off_t loffset, size_t len, off_t roffset, int rma_flags); /** * scif_writeto() - Copy to a remote address space * @epd: endpoint descriptor * @loffset: offset in local registered address space * from which to copy * @len: length of range to copy * @roffset: offset in remote registered address space to * which to copy * @rma_flags: transfer mode flags * * scif_writeto() copies len bytes from the local registered address space of * epd, starting at the offset loffset to the remote registered address space * of the peer of endpoint epd, starting at the offset roffset. * * Each of the specified ranges [loffset, loffset + len - 1] and [roffset, * roffset + len - 1] must be within some registered window or windows of the * local and remote nodes. A range may intersect multiple registered windows, * but only if those windows are contiguous in the registered address space. * * If rma_flags includes SCIF_RMA_USECPU, then the data is copied using * programmed read/writes. Otherwise the data is copied using DMA. If rma_- * flags includes SCIF_RMA_SYNC, then scif_writeto() will return after the * transfer is complete. Otherwise, the transfer may be performed asynchron- * ously. The order in which any two asynchronous RMA operations complete * is non-deterministic. The synchronization functions, scif_fence_mark()/ * scif_fence_wait() and scif_fence_signal(), can be used to synchronize to * the completion of asynchronous RMA operations on the same endpoint. * * The DMA transfer of individual bytes is not guaranteed to complete in * address order. If rma_flags includes SCIF_RMA_ORDERED, then the last * cacheline or partial cacheline of the source range will become visible on * the destination node after all other transferred data in the source * range has become visible on the destination node. * * The optimal DMA performance will likely be realized if both * loffset and roffset are cacheline aligned (are a multiple of 64). Lower * performance will likely be realized if loffset and roffset are not cacheline * aligned but are separated by some multiple of 64. The lowest level of * performance is likely if loffset and roffset are not separated by a multiple * of 64. * * The rma_flags argument is formed by ORing together zero or more of the * following values. * SCIF_RMA_USECPU - perform the transfer using the CPU, otherwise use the DMA * engine. * SCIF_RMA_SYNC - perform the transfer synchronously, returning after the * transfer has completed. Passing this flag results in the * current implementation busy waiting and consuming CPU cycles * while the DMA transfer is in progress for best performance by * avoiding the interrupt latency. * SCIF_RMA_ORDERED - ensure that the last cacheline or partial cacheline of * the source range becomes visible on the destination node * after all other transferred data in the source range has * become visible on the destination * * Return: * Upon successful completion, scif_readfrom() returns 0; otherwise in user * mode -1 is returned and errno is set to indicate the error; in kernel mode * the negative of one of the following errors is returned. * * Errors: * EACCESS - Attempt to write to a read-only range * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * EINVAL - rma_flags is invalid * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOTCONN - The endpoint is not connected * ENXIO - The range [loffset, loffset + len - 1] is invalid for the registered * address space of epd, or, The range [roffset , roffset + len -1] is invalid * for the registered address space of the peer of epd, or loffset or roffset * is negative */ int scif_writeto(scif_epd_t epd, off_t loffset, size_t len, off_t roffset, int rma_flags); /** * scif_vreadfrom() - Copy from a remote address space * @epd: endpoint descriptor * @addr: address to which to copy * @len: length of range to copy * @roffset: offset in remote registered address space * from which to copy * @rma_flags: transfer mode flags * * scif_vreadfrom() copies len bytes from the remote registered address * space of the peer of endpoint epd, starting at the offset roffset, to local * memory, starting at addr. * * The specified range [roffset, roffset + len - 1] must be within some * registered window or windows of the remote nodes. The range may * intersect multiple registered windows, but only if those windows are * contiguous in the registered address space. * * If rma_flags includes SCIF_RMA_USECPU, then the data is copied using * programmed read/writes. Otherwise the data is copied using DMA. If rma_- * flags includes SCIF_RMA_SYNC, then scif_vreadfrom() will return after the * transfer is complete. Otherwise, the transfer may be performed asynchron- * ously. The order in which any two asynchronous RMA operations complete * is non-deterministic. The synchronization functions, scif_fence_mark()/ * scif_fence_wait() and scif_fence_signal(), can be used to synchronize to * the completion of asynchronous RMA operations on the same endpoint. * * The DMA transfer of individual bytes is not guaranteed to complete in * address order. If rma_flags includes SCIF_RMA_ORDERED, then the last * cacheline or partial cacheline of the source range will become visible on * the destination node after all other transferred data in the source * range has become visible on the destination node. * * If rma_flags includes SCIF_RMA_USECACHE, then the physical pages which back * the specified local memory range may be remain in a pinned state even after * the specified transfer completes. This may reduce overhead if some or all of * the same virtual address range is referenced in a subsequent call of * scif_vreadfrom() or scif_vwriteto(). * * The optimal DMA performance will likely be realized if both * addr and roffset are cacheline aligned (are a multiple of 64). Lower * performance will likely be realized if addr and roffset are not * cacheline aligned but are separated by some multiple of 64. The lowest level * of performance is likely if addr and roffset are not separated by a * multiple of 64. * * The rma_flags argument is formed by ORing together zero or more of the * following values. * SCIF_RMA_USECPU - perform the transfer using the CPU, otherwise use the DMA * engine. * SCIF_RMA_USECACHE - enable registration caching * SCIF_RMA_SYNC - perform the transfer synchronously, returning after the * transfer has completed. Passing this flag results in the * current implementation busy waiting and consuming CPU cycles * while the DMA transfer is in progress for best performance by * avoiding the interrupt latency. * SCIF_RMA_ORDERED - ensure that the last cacheline or partial cacheline of * the source range becomes visible on the destination node * after all other transferred data in the source range has * become visible on the destination * * Return: * Upon successful completion, scif_vreadfrom() returns 0; otherwise in user * mode -1 is returned and errno is set to indicate the error; in kernel mode * the negative of one of the following errors is returned. * * Errors: * EACCESS - Attempt to write to a read-only range * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * EINVAL - rma_flags is invalid * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOTCONN - The endpoint is not connected * ENXIO - Offsets in the range [roffset, roffset + len - 1] are invalid for the * registered address space of epd */ int scif_vreadfrom(scif_epd_t epd, void *addr, size_t len, off_t roffset, int rma_flags); /** * scif_vwriteto() - Copy to a remote address space * @epd: endpoint descriptor * @addr: address from which to copy * @len: length of range to copy * @roffset: offset in remote registered address space to * which to copy * @rma_flags: transfer mode flags * * scif_vwriteto() copies len bytes from the local memory, starting at addr, to * the remote registered address space of the peer of endpoint epd, starting at * the offset roffset. * * The specified range [roffset, roffset + len - 1] must be within some * registered window or windows of the remote nodes. The range may intersect * multiple registered windows, but only if those windows are contiguous in the * registered address space. * * If rma_flags includes SCIF_RMA_USECPU, then the data is copied using * programmed read/writes. Otherwise the data is copied using DMA. If rma_- * flags includes SCIF_RMA_SYNC, then scif_vwriteto() will return after the * transfer is complete. Otherwise, the transfer may be performed asynchron- * ously. The order in which any two asynchronous RMA operations complete * is non-deterministic. The synchronization functions, scif_fence_mark()/ * scif_fence_wait() and scif_fence_signal(), can be used to synchronize to * the completion of asynchronous RMA operations on the same endpoint. * * The DMA transfer of individual bytes is not guaranteed to complete in * address order. If rma_flags includes SCIF_RMA_ORDERED, then the last * cacheline or partial cacheline of the source range will become visible on * the destination node after all other transferred data in the source * range has become visible on the destination node. * * If rma_flags includes SCIF_RMA_USECACHE, then the physical pages which back * the specified local memory range may be remain in a pinned state even after * the specified transfer completes. This may reduce overhead if some or all of * the same virtual address range is referenced in a subsequent call of * scif_vreadfrom() or scif_vwriteto(). * * The optimal DMA performance will likely be realized if both * addr and offset are cacheline aligned (are a multiple of 64). Lower * performance will likely be realized if addr and offset are not cacheline * aligned but are separated by some multiple of 64. The lowest level of * performance is likely if addr and offset are not separated by a multiple of * 64. * * The rma_flags argument is formed by ORing together zero or more of the * following values. * SCIF_RMA_USECPU - perform the transfer using the CPU, otherwise use the DMA * engine. * SCIF_RMA_USECACHE - allow registration caching * SCIF_RMA_SYNC - perform the transfer synchronously, returning after the * transfer has completed. Passing this flag results in the * current implementation busy waiting and consuming CPU cycles * while the DMA transfer is in progress for best performance by * avoiding the interrupt latency. * SCIF_RMA_ORDERED - ensure that the last cacheline or partial cacheline of * the source range becomes visible on the destination node * after all other transferred data in the source range has * become visible on the destination * * Return: * Upon successful completion, scif_vwriteto() returns 0; otherwise in user * mode -1 is returned and errno is set to indicate the error; in kernel mode * the negative of one of the following errors is returned. * * Errors: * EACCESS - Attempt to write to a read-only range * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * EINVAL - rma_flags is invalid * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOTCONN - The endpoint is not connected * ENXIO - Offsets in the range [roffset, roffset + len - 1] are invalid for the * registered address space of epd */ int scif_vwriteto(scif_epd_t epd, void *addr, size_t len, off_t roffset, int rma_flags); /** * scif_fence_mark() - Mark previously issued RMAs * @epd: endpoint descriptor * @flags: control flags * @mark: marked value returned as output. * * scif_fence_mark() returns after marking the current set of all uncompleted * RMAs initiated through the endpoint epd or the current set of all * uncompleted RMAs initiated through the peer of endpoint epd. The RMAs are * marked with a value returned at mark. The application may subsequently call * scif_fence_wait(), passing the value returned at mark, to await completion * of all RMAs so marked. * * The flags argument has exactly one of the following values. * SCIF_FENCE_INIT_SELF - RMA operations initiated through endpoint * epd are marked * SCIF_FENCE_INIT_PEER - RMA operations initiated through the peer * of endpoint epd are marked * * Return: * Upon successful completion, scif_fence_mark() returns 0; otherwise in user * mode -1 is returned and errno is set to indicate the error; in kernel mode * the negative of one of the following errors is returned. * * Errors: * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * EINVAL - flags is invalid * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOTCONN - The endpoint is not connected * ENOMEM - Insufficient kernel memory was available */ int scif_fence_mark(scif_epd_t epd, int flags, int *mark); /** * scif_fence_wait() - Wait for completion of marked RMAs * @epd: endpoint descriptor * @mark: mark request * * scif_fence_wait() returns after all RMAs marked with mark have completed. * The value passed in mark must have been obtained in a previous call to * scif_fence_mark(). * * Return: * Upon successful completion, scif_fence_wait() returns 0; otherwise in user * mode -1 is returned and errno is set to indicate the error; in kernel mode * the negative of one of the following errors is returned. * * Errors: * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOTCONN - The endpoint is not connected * ENOMEM - Insufficient kernel memory was available */ int scif_fence_wait(scif_epd_t epd, int mark); /** * scif_fence_signal() - Request a memory update on completion of RMAs * @epd: endpoint descriptor * @loff: local offset * @lval: local value to write to loffset * @roff: remote offset * @rval: remote value to write to roffset * @flags: flags * * scif_fence_signal() returns after marking the current set of all uncompleted * RMAs initiated through the endpoint epd or marking the current set of all * uncompleted RMAs initiated through the peer of endpoint epd. * * If flags includes SCIF_SIGNAL_LOCAL, then on completion of the RMAs in the * marked set, lval is written to memory at the address corresponding to offset * loff in the local registered address space of epd. loff must be within a * registered window. If flags includes SCIF_SIGNAL_REMOTE, then on completion * of the RMAs in the marked set, rval is written to memory at the address * corresponding to offset roff in the remote registered address space of epd. * roff must be within a remote registered window of the peer of epd. Note * that any specified offset must be DWORD (4 byte / 32 bit) aligned. * * The flags argument is formed by OR'ing together the following. * Exactly one of the following values. * SCIF_FENCE_INIT_SELF - RMA operations initiated through endpoint * epd are marked * SCIF_FENCE_INIT_PEER - RMA operations initiated through the peer * of endpoint epd are marked * One or more of the following values. * SCIF_SIGNAL_LOCAL - On completion of the marked set of RMAs, write lval to * memory at the address corresponding to offset loff in the local * registered address space of epd. * SCIF_SIGNAL_REMOTE - On completion of the marked set of RMAs, write rval to * memory at the address corresponding to offset roff in the remote * registered address space of epd. * * Return: * Upon successful completion, scif_fence_signal() returns 0; otherwise in * user mode -1 is returned and errno is set to indicate the error; in kernel * mode the negative of one of the following errors is returned. * * Errors: * EBADF, ENOTTY - epd is not a valid endpoint descriptor * ECONNRESET - Connection reset by peer * EINVAL - flags is invalid, or loff or roff are not DWORD aligned * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOTCONN - The endpoint is not connected * ENXIO - loff is invalid for the registered address of epd, or roff is invalid * for the registered address space, of the peer of epd */ int scif_fence_signal(scif_epd_t epd, off_t loff, u64 lval, off_t roff, u64 rval, int flags); /** * scif_get_node_ids() - Return information about online nodes * @nodes: array in which to return online node IDs * @len: number of entries in the nodes array * @self: address to place the node ID of the local node * * scif_get_node_ids() fills in the nodes array with up to len node IDs of the * nodes in the SCIF network. If there is not enough space in nodes, as * indicated by the len parameter, only len node IDs are returned in nodes. The * return value of scif_get_node_ids() is the total number of nodes currently in * the SCIF network. By checking the return value against the len parameter, * the user may determine if enough space for nodes was allocated. * * The node ID of the local node is returned at self. * * Return: * Upon successful completion, scif_get_node_ids() returns the actual number of * online nodes in the SCIF network including 'self'; otherwise in user mode * -1 is returned and errno is set to indicate the error; in kernel mode no * errors are returned. */ int scif_get_node_ids(u16 *nodes, int len, u16 *self); /** * scif_pin_pages() - Pin a set of pages * @addr: Virtual address of range to pin * @len: Length of range to pin * @prot_flags: Page protection flags * @map_flags: Page classification flags * @pinned_pages: Handle to pinned pages * * scif_pin_pages() pins (locks in physical memory) the physical pages which * back the range of virtual address pages starting at addr and continuing for * len bytes. addr and len are constrained to be multiples of the page size. A * successful scif_pin_pages() call returns a handle to pinned_pages which may * be used in subsequent calls to scif_register_pinned_pages(). * * The pages will remain pinned as long as there is a reference against the * scif_pinned_pages_t value returned by scif_pin_pages() and until * scif_unpin_pages() is called, passing the scif_pinned_pages_t value. A * reference is added to a scif_pinned_pages_t value each time a window is * created by calling scif_register_pinned_pages() and passing the * scif_pinned_pages_t value. A reference is removed from a * scif_pinned_pages_t value each time such a window is deleted. * * Subsequent operations which change the memory pages to which virtual * addresses are mapped (such as mmap(), munmap()) have no effect on the * scif_pinned_pages_t value or windows created against it. * * If the process will fork(), it is recommended that the registered * virtual address range be marked with MADV_DONTFORK. Doing so will prevent * problems due to copy-on-write semantics. * * The prot_flags argument is formed by OR'ing together one or more of the * following values. * SCIF_PROT_READ - allow read operations against the pages * SCIF_PROT_WRITE - allow write operations against the pages * The map_flags argument can be set as SCIF_MAP_KERNEL to interpret addr as a * kernel space address. By default, addr is interpreted as a user space * address. * * Return: * Upon successful completion, scif_pin_pages() returns 0; otherwise the * negative of one of the following errors is returned. * * Errors: * EINVAL - prot_flags is invalid, map_flags is invalid, or offset is negative * ENOMEM - Not enough space */ int scif_pin_pages(void *addr, size_t len, int prot_flags, int map_flags, scif_pinned_pages_t *pinned_pages); /** * scif_unpin_pages() - Unpin a set of pages * @pinned_pages: Handle to pinned pages to be unpinned * * scif_unpin_pages() prevents scif_register_pinned_pages() from registering new * windows against pinned_pages. The physical pages represented by pinned_pages * will remain pinned until all windows previously registered against * pinned_pages are deleted (the window is scif_unregister()'d and all * references to the window are removed (see scif_unregister()). * * pinned_pages must have been obtain from a previous call to scif_pin_pages(). * After calling scif_unpin_pages(), it is an error to pass pinned_pages to * scif_register_pinned_pages(). * * Return: * Upon successful completion, scif_unpin_pages() returns 0; otherwise the * negative of one of the following errors is returned. * * Errors: * EINVAL - pinned_pages is not valid */ int scif_unpin_pages(scif_pinned_pages_t pinned_pages); /** * scif_register_pinned_pages() - Mark a memory region for remote access. * @epd: endpoint descriptor * @pinned_pages: Handle to pinned pages * @offset: Registered address space offset * @map_flags: Flags which control where pages are mapped * * The scif_register_pinned_pages() function opens a window, a range of whole * pages of the registered address space of the endpoint epd, starting at * offset po. The value of po, further described below, is a function of the * parameters offset and pinned_pages, and the value of map_flags. Each page of * the window represents a corresponding physical memory page of the range * represented by pinned_pages; the length of the window is the same as the * length of range represented by pinned_pages. A successful * scif_register_pinned_pages() call returns po as the return value. * * When SCIF_MAP_FIXED is set in the map_flags argument, po will be offset * exactly, and offset is constrained to be a multiple of the page size. The * mapping established by scif_register_pinned_pages() will not replace any * existing registration; an error is returned if any page of the new window * would intersect an existing window. * * When SCIF_MAP_FIXED is not set, the implementation uses offset in an * implementation-defined manner to arrive at po. The po so chosen will be an * area of the registered address space that the implementation deems suitable * for a mapping of the required size. An offset value of 0 is interpreted as * granting the implementation complete freedom in selecting po, subject to * constraints described below. A non-zero value of offset is taken to be a * suggestion of an offset near which the mapping should be placed. When the * implementation selects a value for po, it does not replace any extant * window. In all cases, po will be a multiple of the page size. * * The physical pages which are so represented by a window are available for * access in calls to scif_get_pages(), scif_readfrom(), scif_writeto(), * scif_vreadfrom(), and scif_vwriteto(). While a window is registered, the * physical pages represented by the window will not be reused by the memory * subsystem for any other purpose. Note that the same physical page may be * represented by multiple windows. * * Windows created by scif_register_pinned_pages() are unregistered by * scif_unregister(). * * The map_flags argument can be set to SCIF_MAP_FIXED which interprets a * fixed offset. * * Return: * Upon successful completion, scif_register_pinned_pages() returns the offset * at which the mapping was placed (po); otherwise the negative of one of the * following errors is returned. * * Errors: * EADDRINUSE - SCIF_MAP_FIXED is set in map_flags and pages in the new window * would intersect an existing window * EAGAIN - The mapping could not be performed due to lack of resources * ECONNRESET - Connection reset by peer * EINVAL - map_flags is invalid, or SCIF_MAP_FIXED is set in map_flags, and * offset is not a multiple of the page size, or offset is negative * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOMEM - Not enough space * ENOTCONN - The endpoint is not connected */ off_t scif_register_pinned_pages(scif_epd_t epd, scif_pinned_pages_t pinned_pages, off_t offset, int map_flags); /** * scif_get_pages() - Add references to remote registered pages * @epd: endpoint descriptor * @offset: remote registered offset * @len: length of range of pages * @pages: returned scif_range structure * * scif_get_pages() returns the addresses of the physical pages represented by * those pages of the registered address space of the peer of epd, starting at * offset and continuing for len bytes. offset and len are constrained to be * multiples of the page size. * * All of the pages in the specified range [offset, offset + len - 1] must be * within a single window of the registered address space of the peer of epd. * * The addresses are returned as a virtually contiguous array pointed to by the * phys_addr component of the scif_range structure whose address is returned in * pages. The nr_pages component of scif_range is the length of the array. The * prot_flags component of scif_range holds the protection flag value passed * when the pages were registered. * * Each physical page whose address is returned by scif_get_pages() remains * available and will not be released for reuse until the scif_range structure * is returned in a call to scif_put_pages(). The scif_range structure returned * by scif_get_pages() must be unmodified. * * It is an error to call scif_close() on an endpoint on which a scif_range * structure of that endpoint has not been returned to scif_put_pages(). * * Return: * Upon successful completion, scif_get_pages() returns 0; otherwise the * negative of one of the following errors is returned. * Errors: * ECONNRESET - Connection reset by peer. * EINVAL - offset is not a multiple of the page size, or offset is negative, or * len is not a multiple of the page size * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOTCONN - The endpoint is not connected * ENXIO - Offsets in the range [offset, offset + len - 1] are invalid * for the registered address space of the peer epd */ int scif_get_pages(scif_epd_t epd, off_t offset, size_t len, struct scif_range **pages); /** * scif_put_pages() - Remove references from remote registered pages * @pages: pages to be returned * * scif_put_pages() releases a scif_range structure previously obtained by * calling scif_get_pages(). The physical pages represented by pages may * be reused when the window which represented those pages is unregistered. * Therefore, those pages must not be accessed after calling scif_put_pages(). * * Return: * Upon successful completion, scif_put_pages() returns 0; otherwise the * negative of one of the following errors is returned. * Errors: * EINVAL - pages does not point to a valid scif_range structure, or * the scif_range structure pointed to by pages was already returned * ENODEV - The remote node is lost or existed, but is not currently in the * network since it may have crashed * ENOTCONN - The endpoint is not connected */ int scif_put_pages(struct scif_range *pages); /** * scif_poll() - Wait for some event on an endpoint * @epds: Array of endpoint descriptors * @nepds: Length of epds * @timeout: Upper limit on time for which scif_poll() will block * * scif_poll() waits for one of a set of endpoints to become ready to perform * an I/O operation. * * The epds argument specifies the endpoint descriptors to be examined and the * events of interest for each endpoint descriptor. epds is a pointer to an * array with one member for each open endpoint descriptor of interest. * * The number of items in the epds array is specified in nepds. The epd field * of scif_pollepd is an endpoint descriptor of an open endpoint. The field * events is a bitmask specifying the events which the application is * interested in. The field revents is an output parameter, filled by the * kernel with the events that actually occurred. The bits returned in revents * can include any of those specified in events, or one of the values POLLERR, * POLLHUP, or POLLNVAL. (These three bits are meaningless in the events * field, and will be set in the revents field whenever the corresponding * condition is true.) * * If none of the events requested (and no error) has occurred for any of the * endpoint descriptors, then scif_poll() blocks until one of the events occurs. * * The timeout argument specifies an upper limit on the time for which * scif_poll() will block, in milliseconds. Specifying a negative value in * timeout means an infinite timeout. * * The following bits may be set in events and returned in revents. * POLLIN - Data may be received without blocking. For a connected * endpoint, this means that scif_recv() may be called without blocking. For a * listening endpoint, this means that scif_accept() may be called without * blocking. * POLLOUT - Data may be sent without blocking. For a connected endpoint, this * means that scif_send() may be called without blocking. POLLOUT may also be * used to block waiting for a non-blocking connect to complete. This bit value * has no meaning for a listening endpoint and is ignored if specified. * * The following bits are only returned in revents, and are ignored if set in * events. * POLLERR - An error occurred on the endpoint * POLLHUP - The connection to the peer endpoint was disconnected * POLLNVAL - The specified endpoint descriptor is invalid. * * Return: * Upon successful completion, scif_poll() returns a non-negative value. A * positive value indicates the total number of endpoint descriptors that have * been selected (that is, endpoint descriptors for which the revents member is * non-zero). A value of 0 indicates that the call timed out and no endpoint * descriptors have been selected. Otherwise in user mode -1 is returned and * errno is set to indicate the error; in kernel mode the negative of one of * the following errors is returned. * * Errors: * EINTR - A signal occurred before any requested event * EINVAL - The nepds argument is greater than {OPEN_MAX} * ENOMEM - There was no space to allocate file descriptor tables */ int scif_poll(struct scif_pollepd *epds, unsigned int nepds, long timeout); /** * scif_client_register() - Register a SCIF client * @client: client to be registered * * scif_client_register() registers a SCIF client. The probe() method * of the client is called when SCIF peer devices come online and the * remove() method is called when the peer devices disappear. * * Return: * Upon successful completion, scif_client_register() returns a non-negative * value. Otherwise the return value is the same as subsys_interface_register() * in the kernel. */ int scif_client_register(struct scif_client *client); /** * scif_client_unregister() - Unregister a SCIF client * @client: client to be unregistered * * scif_client_unregister() unregisters a SCIF client. * * Return: * None */ void scif_client_unregister(struct scif_client *client); #endif /* __SCIF_H__ */
Close