/
usr
/
include
/
linux
/
/usr/include/linux
mkdir
upload
Name
Size
Mode
Actions
android/
-
0755
rm
byteorder/
-
0755
rm
caif/
-
0755
rm
can/
-
0755
rm
cifs/
-
0755
rm
dvb/
-
0755
rm
genwqe/
-
0755
rm
hdlc/
-
0755
rm
hsi/
-
0755
rm
iio/
-
0755
rm
isdn/
-
0755
rm
misc/
-
0755
rm
mmc/
-
0755
rm
netfilter/
-
0755
rm
netfilter_arp/
-
0755
rm
netfilter_bridge/
-
0755
rm
netfilter_ipv4/
-
0755
rm
netfilter_ipv6/
-
0755
rm
nfsd/
-
0755
rm
raid/
-
0755
rm
sched/
-
0755
rm
spi/
-
0755
rm
sunrpc/
-
0755
rm
surface_aggregator/
-
0755
rm
tc_act/
-
0755
rm
tc_ematch/
-
0755
rm
usb/
-
0755
rm
a.out.h
6892
0644
edit
dl
rm
acct.h
3913
0644
edit
dl
rm
acrn.h
16686
0644
edit
dl
rm
adb.h
1140
0644
edit
dl
rm
adfs_fs.h
993
0644
edit
dl
rm
affs_hardblocks.h
1578
0644
edit
dl
rm
agpgart.h
3940
0644
edit
dl
rm
aio_abi.h
3398
0644
edit
dl
rm
am437x-vpfe.h
3681
0644
edit
dl
rm
apm_bios.h
3683
0644
edit
dl
rm
arcfb.h
213
0644
edit
dl
rm
arm_sdei.h
2751
0644
edit
dl
rm
aspeed-lpc-ctrl.h
1780
0644
edit
dl
rm
aspeed-p2a-ctrl.h
1906
0644
edit
dl
rm
atalk.h
1023
0644
edit
dl
rm
atm.h
7888
0644
edit
dl
rm
atmapi.h
952
0644
edit
dl
rm
atmarp.h
1296
0644
edit
dl
rm
atmbr2684.h
3271
0644
edit
dl
rm
atmclip.h
576
0644
edit
dl
rm
atmdev.h
7677
0644
edit
dl
rm
atmioc.h
1647
0644
edit
dl
rm
atmlec.h
2381
0644
edit
dl
rm
atmmpc.h
4226
0644
edit
dl
rm
atmppp.h
639
0644
edit
dl
rm
atmsap.h
4970
0644
edit
dl
rm
atmsvc.h
1853
0644
edit
dl
rm
atm_eni.h
648
0644
edit
dl
rm
atm_he.h
406
0644
edit
dl
rm
atm_idt77105.h
955
0644
edit
dl
rm
atm_nicstar.h
1278
0644
edit
dl
rm
atm_tcp.h
1622
0644
edit
dl
rm
atm_zatm.h
1540
0644
edit
dl
rm
audit.h
21570
0644
edit
dl
rm
auto_dev-ioctl.h
4986
0644
edit
dl
rm
auto_fs.h
6428
0644
edit
dl
rm
auto_fs4.h
451
0644
edit
dl
rm
auxvec.h
1597
0644
edit
dl
rm
ax25.h
2824
0644
edit
dl
rm
batadv_packet.h
20345
0644
edit
dl
rm
batman_adv.h
16887
0644
edit
dl
rm
baycom.h
883
0644
edit
dl
rm
bcm933xx_hcs.h
419
0644
edit
dl
rm
bfs_fs.h
1905
0644
edit
dl
rm
binfmts.h
776
0644
edit
dl
rm
bits.h
447
0644
edit
dl
rm
blkpg.h
904
0644
edit
dl
rm
blktrace_api.h
4701
0644
edit
dl
rm
blkzoned.h
6493
0644
edit
dl
rm
bpf.h
278639
0644
edit
dl
rm
bpfilter.h
465
0644
edit
dl
rm
bpf_common.h
1367
0644
edit
dl
rm
bpf_perf_event.h
529
0644
edit
dl
rm
bpqether.h
981
0644
edit
dl
rm
bsg.h
2494
0644
edit
dl
rm
bt-bmc.h
572
0644
edit
dl
rm
btf.h
5591
0644
edit
dl
rm
btrfs.h
30570
0644
edit
dl
rm
btrfs_tree.h
25829
0644
edit
dl
rm
cachefiles.h
1650
0644
edit
dl
rm
can.h
11496
0644
edit
dl
rm
capability.h
13491
0644
edit
dl
rm
capi.h
3124
0644
edit
dl
rm
cciss_defs.h
3281
0644
edit
dl
rm
cciss_ioctl.h
2761
0644
edit
dl
rm
ccs.h
767
0644
edit
dl
rm
cdrom.h
29561
0644
edit
dl
rm
cec-funcs.h
54419
0644
edit
dl
rm
cec.h
41437
0644
edit
dl
rm
cfm_bridge.h
1456
0644
edit
dl
rm
cgroupstats.h
2219
0644
edit
dl
rm
chio.h
5282
0644
edit
dl
rm
close_range.h
377
0644
edit
dl
rm
cm4000_cs.h
1806
0644
edit
dl
rm
cn_proc.h
4149
0644
edit
dl
rm
coda.h
18216
0644
edit
dl
rm
coff.h
12549
0644
edit
dl
rm
connector.h
2253
0644
edit
dl
rm
const.h
987
0644
edit
dl
rm
coresight-stm.h
747
0644
edit
dl
rm
cramfs_fs.h
3555
0644
edit
dl
rm
cryptouser.h
5321
0644
edit
dl
rm
cuda.h
905
0644
edit
dl
rm
cxl_mem.h
7915
0644
edit
dl
rm
cycx_cfm.h
2990
0644
edit
dl
rm
dcbnl.h
25292
0644
edit
dl
rm
dccp.h
6436
0644
edit
dl
rm
devlink.h
23316
0644
edit
dl
rm
dlm.h
2553
0644
edit
dl
rm
dlmconstants.h
5080
0644
edit
dl
rm
dlm_device.h
2543
0644
edit
dl
rm
dlm_netlink.h
1159
0644
edit
dl
rm
dlm_plock.h
894
0644
edit
dl
rm
dm-ioctl.h
11753
0644
edit
dl
rm
dm-log-userspace.h
15191
0644
edit
dl
rm
dma-buf.h
5247
0644
edit
dl
rm
dma-heap.h
1394
0644
edit
dl
rm
dn.h
4642
0644
edit
dl
rm
dns_resolver.h
3949
0644
edit
dl
rm
dpll.h
8697
0644
edit
dl
rm
dqblk_xfs.h
9388
0644
edit
dl
rm
edd.h
5604
0644
edit
dl
rm
efs_fs_sb.h
2227
0644
edit
dl
rm
elf-em.h
2627
0644
edit
dl
rm
elf-fdpic.h
1124
0644
edit
dl
rm
elf.h
15042
0644
edit
dl
rm
errno.h
23
0644
edit
dl
rm
errqueue.h
1983
0644
edit
dl
rm
erspan.h
1059
0644
edit
dl
rm
ethtool.h
103855
0644
edit
dl
rm
ethtool_netlink.h
6314
0644
edit
dl
rm
ethtool_netlink_generated.h
19626
0644
edit
dl
rm
eventfd.h
264
0644
edit
dl
rm
eventpoll.h
2913
0644
edit
dl
rm
f2fs.h
3301
0644
edit
dl
rm
fadvise.h
842
0644
edit
dl
rm
falloc.h
3643
0644
edit
dl
rm
fanotify.h
7886
0644
edit
dl
rm
fb.h
16477
0644
edit
dl
rm
fcntl.h
4319
0644
edit
dl
rm
fd.h
12117
0644
edit
dl
rm
fdreg.h
5364
0644
edit
dl
rm
fib_rules.h
2036
0644
edit
dl
rm
fiemap.h
2775
0644
edit
dl
rm
filter.h
2216
0644
edit
dl
rm
firewire-cdev.h
44240
0644
edit
dl
rm
firewire-constants.h
3231
0644
edit
dl
rm
fou.h
819
0644
edit
dl
rm
fpga-dfl.h
8728
0644
edit
dl
rm
fs.h
13186
0644
edit
dl
rm
fscrypt.h
6565
0644
edit
dl
rm
fsi.h
2255
0644
edit
dl
rm
fsl_hypervisor.h
7301
0644
edit
dl
rm
fsl_mc.h
734
0644
edit
dl
rm
fsmap.h
4393
0644
edit
dl
rm
fsverity.h
3185
0644
edit
dl
rm
fuse.h
25968
0644
edit
dl
rm
futex.h
6127
0644
edit
dl
rm
gameport.h
897
0644
edit
dl
rm
genetlink.h
2238
0644
edit
dl
rm
gen_stats.h
1526
0644
edit
dl
rm
gfs2_ondisk.h
14773
0644
edit
dl
rm
gpio.h
19922
0644
edit
dl
rm
gsmmux.h
4509
0644
edit
dl
rm
gtp.h
734
0644
edit
dl
rm
handshake.h
1646
0644
edit
dl
rm
hash_info.h
971
0644
edit
dl
rm
hdlc.h
637
0644
edit
dl
rm
hdlcdrv.h
2908
0644
edit
dl
rm
hdreg.h
22703
0644
edit
dl
rm
hid.h
2086
0644
edit
dl
rm
hiddev.h
6345
0644
edit
dl
rm
hidraw.h
1993
0644
edit
dl
rm
hpet.h
743
0644
edit
dl
rm
hsr_netlink.h
1101
0644
edit
dl
rm
hw_breakpoint.h
742
0644
edit
dl
rm
hyperv.h
11152
0644
edit
dl
rm
i2c-dev.h
1875
0644
edit
dl
rm
i2c.h
6890
0644
edit
dl
rm
i2o-dev.h
11555
0644
edit
dl
rm
i8k.h
1528
0644
edit
dl
rm
icmp.h
4785
0644
edit
dl
rm
icmpv6.h
4300
0644
edit
dl
rm
idxd.h
9328
0644
edit
dl
rm
if.h
10925
0644
edit
dl
rm
ife.h
351
0644
edit
dl
rm
if_addr.h
1886
0644
edit
dl
rm
if_addrlabel.h
721
0644
edit
dl
rm
if_alg.h
1566
0644
edit
dl
rm
if_arcnet.h
3717
0644
edit
dl
rm
if_arp.h
6565
0644
edit
dl
rm
if_bonding.h
5145
0644
edit
dl
rm
if_bridge.h
20755
0644
edit
dl
rm
if_cablemodem.h
986
0644
edit
dl
rm
if_eql.h
1349
0644
edit
dl
rm
if_ether.h
8410
0644
edit
dl
rm
if_fc.h
1738
0644
edit
dl
rm
if_fddi.h
4369
0644
edit
dl
rm
if_hippi.h
4235
0644
edit
dl
rm
if_infiniband.h
1245
0644
edit
dl
rm
if_link.h
54131
0644
edit
dl
rm
if_ltalk.h
210
0644
edit
dl
rm
if_macsec.h
6503
0644
edit
dl
rm
if_packet.h
8183
0644
edit
dl
rm
if_phonet.h
424
0644
edit
dl
rm
if_plip.h
660
0644
edit
dl
rm
if_ppp.h
29
0644
edit
dl
rm
if_pppol2tp.h
3303
0644
edit
dl
rm
if_pppox.h
4879
0644
edit
dl
rm
if_slip.h
872
0644
edit
dl
rm
if_team.h
2600
0644
edit
dl
rm
if_tun.h
4098
0644
edit
dl
rm
if_tunnel.h
5488
0644
edit
dl
rm
if_vlan.h
1831
0644
edit
dl
rm
if_x25.h
881
0644
edit
dl
rm
if_xdp.h
5414
0644
edit
dl
rm
igmp.h
3064
0644
edit
dl
rm
ila.h
1246
0644
edit
dl
rm
in.h
10486
0644
edit
dl
rm
in6.h
7537
0644
edit
dl
rm
inet_diag.h
5017
0644
edit
dl
rm
inotify.h
3292
0644
edit
dl
rm
input-event-codes.h
30203
0644
edit
dl
rm
input.h
16217
0644
edit
dl
rm
in_route.h
936
0644
edit
dl
rm
ioctl.h
163
0644
edit
dl
rm
iommufd.h
37327
0644
edit
dl
rm
ioprio.h
4175
0644
edit
dl
rm
io_uring.h
20887
0644
edit
dl
rm
ip.h
4813
0644
edit
dl
rm
ip6_tunnel.h
1953
0644
edit
dl
rm
ipc.h
2101
0644
edit
dl
rm
ipmi.h
15442
0644
edit
dl
rm
ipmi_bmc.h
488
0644
edit
dl
rm
ipmi_msgdefs.h
3430
0644
edit
dl
rm
ipmi_ssif_bmc.h
441
0644
edit
dl
rm
ipsec.h
947
0644
edit
dl
rm
ipv6.h
4169
0644
edit
dl
rm
ipv6_route.h
1908
0644
edit
dl
rm
ipx.h
2347
0644
edit
dl
rm
ip_vs.h
14135
0644
edit
dl
rm
irqnr.h
104
0644
edit
dl
rm
iso_fs.h
6485
0644
edit
dl
rm
isst_if.h
15281
0644
edit
dl
rm
ivtv.h
3022
0644
edit
dl
rm
ivtvfb.h
1207
0644
edit
dl
rm
jffs2.h
6815
0644
edit
dl
rm
joystick.h
3434
0644
edit
dl
rm
kcm.h
822
0644
edit
dl
rm
kcmp.h
522
0644
edit
dl
rm
kcov.h
1963
0644
edit
dl
rm
kd.h
6452
0644
edit
dl
rm
kdev_t.h
383
0644
edit
dl
rm
kernel-page-flags.h
900
0644
edit
dl
rm
kernel.h
194
0644
edit
dl
rm
kernelcapi.h
1019
0644
edit
dl
rm
kexec.h
2097
0644
edit
dl
rm
keyboard.h
13459
0644
edit
dl
rm
keyctl.h
5996
0644
edit
dl
rm
kfd_ioctl.h
58428
0644
edit
dl
rm
kfd_sysfs.h
5379
0644
edit
dl
rm
kvm.h
48372
0644
edit
dl
rm
kvm_para.h
1001
0644
edit
dl
rm
l2tp.h
5746
0644
edit
dl
rm
landlock.h
11828
0644
edit
dl
rm
libc-compat.h
8289
0644
edit
dl
rm
limits.h
937
0644
edit
dl
rm
lirc.h
8144
0644
edit
dl
rm
llc.h
3164
0644
edit
dl
rm
loadpin.h
834
0644
edit
dl
rm
loop.h
3396
0644
edit
dl
rm
lp.h
4190
0644
edit
dl
rm
lsm.h
1549
0644
edit
dl
rm
lwtunnel.h
2367
0644
edit
dl
rm
magic.h
3824
0644
edit
dl
rm
major.h
4657
0644
edit
dl
rm
map_to_7segment.h
6608
0644
edit
dl
rm
matroxfb.h
1464
0644
edit
dl
rm
max2175.h
1035
0644
edit
dl
rm
mdio.h
24350
0644
edit
dl
rm
media-bus-format.h
6909
0644
edit
dl
rm
media.h
12754
0644
edit
dl
rm
mei.h
3479
0644
edit
dl
rm
mei_uuid.h
738
0644
edit
dl
rm
membarrier.h
9362
0644
edit
dl
rm
memfd.h
1467
0644
edit
dl
rm
mempolicy.h
2568
0644
edit
dl
rm
meye.h
2529
0644
edit
dl
rm
mii.h
9496
0644
edit
dl
rm
minix_fs.h
2122
0644
edit
dl
rm
mman.h
1787
0644
edit
dl
rm
mmtimer.h
2117
0644
edit
dl
rm
module.h
293
0644
edit
dl
rm
mount.h
5019
0644
edit
dl
rm
mpls.h
2302
0644
edit
dl
rm
mpls_iptunnel.h
761
0644
edit
dl
rm
mptcp.h
3763
0644
edit
dl
rm
mptcp_pm.h
4407
0644
edit
dl
rm
mqueue.h
2201
0644
edit
dl
rm
mroute.h
5922
0644
edit
dl
rm
mroute6.h
4930
0644
edit
dl
rm
mrp_bridge.h
1708
0644
edit
dl
rm
msdos_fs.h
6731
0644
edit
dl
rm
msg.h
3386
0644
edit
dl
rm
mshv.h
8122
0644
edit
dl
rm
mtio.h
8175
0644
edit
dl
rm
nbd-netlink.h
2408
0644
edit
dl
rm
nbd.h
3862
0644
edit
dl
rm
ncsi.h
4828
0644
edit
dl
rm
ndctl.h
6829
0644
edit
dl
rm
neighbour.h
6054
0644
edit
dl
rm
net.h
2085
0644
edit
dl
rm
netconf.h
614
0644
edit
dl
rm
netdev.h
5786
0644
edit
dl
rm
netdevice.h
2253
0644
edit
dl
rm
netfilter.h
1731
0644
edit
dl
rm
netfilter_arp.h
445
0644
edit
dl
rm
netfilter_bridge.h
1168
0644
edit
dl
rm
netfilter_decnet.h
1758
0644
edit
dl
rm
netfilter_ipv4.h
1488
0644
edit
dl
rm
netfilter_ipv6.h
1383
0644
edit
dl
rm
netlink.h
12381
0644
edit
dl
rm
netlink_diag.h
1524
0644
edit
dl
rm
netrom.h
807
0644
edit
dl
rm
net_dropmon.h
2922
0644
edit
dl
rm
net_namespace.h
715
0644
edit
dl
rm
net_shaper.h
2583
0644
edit
dl
rm
net_tstamp.h
6455
0644
edit
dl
rm
nexthop.h
4066
0644
edit
dl
rm
nfc.h
11209
0644
edit
dl
rm
nfs.h
4463
0644
edit
dl
rm
nfs2.h
1468
0644
edit
dl
rm
nfs3.h
2453
0644
edit
dl
rm
nfs4.h
6695
0644
edit
dl
rm
nfs4_mount.h
1932
0644
edit
dl
rm
nfsacl.h
718
0644
edit
dl
rm
nfsd_netlink.h
1995
0644
edit
dl
rm
nfs_fs.h
1654
0644
edit
dl
rm
nfs_idmap.h
2243
0644
edit
dl
rm
nfs_mount.h
2142
0644
edit
dl
rm
nilfs2_api.h
7589
0644
edit
dl
rm
nilfs2_ondisk.h
18085
0644
edit
dl
rm
nitro_enclaves.h
13161
0644
edit
dl
rm
nl80211.h
349518
0644
edit
dl
rm
nsfs.h
639
0644
edit
dl
rm
nubus.h
8191
0644
edit
dl
rm
nvme_ioctl.h
2490
0644
edit
dl
rm
nvram.h
532
0644
edit
dl
rm
omap3isp.h
20853
0644
edit
dl
rm
omapfb.h
5918
0644
edit
dl
rm
oom.h
511
0644
edit
dl
rm
openat2.h
1450
0644
edit
dl
rm
openvswitch.h
41733
0644
edit
dl
rm
packet_diag.h
1672
0644
edit
dl
rm
param.h
141
0644
edit
dl
rm
parport.h
3644
0644
edit
dl
rm
patchkey.h
892
0644
edit
dl
rm
pci.h
1380
0644
edit
dl
rm
pcitest.h
920
0644
edit
dl
rm
pci_regs.h
63374
0644
edit
dl
rm
perf_event.h
43709
0644
edit
dl
rm
personality.h
2097
0644
edit
dl
rm
pfkeyv2.h
10569
0644
edit
dl
rm
pfrut.h
7987
0644
edit
dl
rm
pg.h
2394
0644
edit
dl
rm
phantom.h
1654
0644
edit
dl
rm
phonet.h
4677
0644
edit
dl
rm
pidfd.h
256
0644
edit
dl
rm
pktcdvd.h
2698
0644
edit
dl
rm
pkt_cls.h
19096
0644
edit
dl
rm
pkt_sched.h
29443
0644
edit
dl
rm
pmu.h
5444
0644
edit
dl
rm
poll.h
22
0644
edit
dl
rm
posix_acl.h
1254
0644
edit
dl
rm
posix_acl_xattr.h
1115
0644
edit
dl
rm
posix_types.h
1098
0644
edit
dl
rm
ppdev.h
3285
0644
edit
dl
rm
ppp-comp.h
2527
0644
edit
dl
rm
ppp-ioctl.h
5729
0644
edit
dl
rm
ppp_defs.h
5557
0644
edit
dl
rm
pps.h
4734
0644
edit
dl
rm
pr.h
1630
0644
edit
dl
rm
prctl.h
11065
0644
edit
dl
rm
psample.h
2634
0644
edit
dl
rm
psci.h
5340
0644
edit
dl
rm
psp-dbc.h
5279
0644
edit
dl
rm
psp-sev.h
7769
0644
edit
dl
rm
ptp_clock.h
7527
0644
edit
dl
rm
ptrace.h
4396
0644
edit
dl
rm
qemu_fw_cfg.h
2469
0644
edit
dl
rm
qnx4_fs.h
2328
0644
edit
dl
rm
qnxtypes.h
624
0644
edit
dl
rm
qrtr.h
893
0644
edit
dl
rm
quota.h
6312
0644
edit
dl
rm
radeonfb.h
360
0644
edit
dl
rm
random.h
1415
0644
edit
dl
rm
rds.h
11168
0644
edit
dl
rm
reboot.h
1343
0644
edit
dl
rm
reiserfs_fs.h
775
0644
edit
dl
rm
reiserfs_xattr.h
533
0644
edit
dl
rm
remoteproc_cdev.h
1102
0644
edit
dl
rm
resource.h
2373
0644
edit
dl
rm
rfkill.h
6608
0644
edit
dl
rm
rio_cm_cdev.h
3248
0644
edit
dl
rm
rio_mport_cdev.h
9330
0644
edit
dl
rm
rkisp1-config.h
31362
0644
edit
dl
rm
romfs_fs.h
1238
0644
edit
dl
rm
rose.h
2232
0644
edit
dl
rm
route.h
2332
0644
edit
dl
rm
rpl.h
814
0644
edit
dl
rm
rpl_iptunnel.h
424
0644
edit
dl
rm
rpmsg.h
1054
0644
edit
dl
rm
rpmsg_types.h
288
0644
edit
dl
rm
rseq.h
4904
0644
edit
dl
rm
rtc.h
5316
0644
edit
dl
rm
rtnetlink.h
21300
0644
edit
dl
rm
rxrpc.h
4922
0644
edit
dl
rm
scc.h
4624
0644
edit
dl
rm
sched.h
6266
0644
edit
dl
rm
scif_ioctl.h
6382
0644
edit
dl
rm
screen_info.h
2479
0644
edit
dl
rm
sctp.h
36022
0644
edit
dl
rm
seccomp.h
5732
0644
edit
dl
rm
securebits.h
2704
0644
edit
dl
rm
sed-opal.h
5414
0644
edit
dl
rm
seg6.h
1170
0644
edit
dl
rm
seg6_genl.h
589
0644
edit
dl
rm
seg6_hmac.h
423
0644
edit
dl
rm
seg6_iptunnel.h
984
0644
edit
dl
rm
seg6_local.h
3867
0644
edit
dl
rm
selinux_netlink.h
1195
0644
edit
dl
rm
sem.h
3051
0644
edit
dl
rm
serial.h
5019
0644
edit
dl
rm
serial_core.h
5046
0644
edit
dl
rm
serial_reg.h
16023
0644
edit
dl
rm
serio.h
2139
0644
edit
dl
rm
sev-guest.h
2526
0644
edit
dl
rm
shm.h
3794
0644
edit
dl
rm
signal.h
388
0644
edit
dl
rm
signalfd.h
1233
0644
edit
dl
rm
smc.h
8663
0644
edit
dl
rm
smc_diag.h
2951
0644
edit
dl
rm
smiapp.h
1058
0644
edit
dl
rm
snmp.h
14347
0644
edit
dl
rm
socket.h
919
0644
edit
dl
rm
sockios.h
6846
0644
edit
dl
rm
sock_diag.h
1301
0644
edit
dl
rm
sonet.h
2290
0644
edit
dl
rm
sonypi.h
5309
0644
edit
dl
rm
sound.h
1237
0644
edit
dl
rm
soundcard.h
46038
0644
edit
dl
rm
stat.h
7404
0644
edit
dl
rm
stddef.h
1726
0644
edit
dl
rm
stm.h
1275
0644
edit
dl
rm
string.h
238
0644
edit
dl
rm
suspend_ioctls.h
1431
0644
edit
dl
rm
swab.h
6921
0644
edit
dl
rm
switchtec_ioctl.h
5262
0644
edit
dl
rm
synclink.h
8985
0644
edit
dl
rm
sync_file.h
3578
0644
edit
dl
rm
sysctl.h
25910
0644
edit
dl
rm
sysinfo.h
1049
0644
edit
dl
rm
target_core_user.h
4633
0644
edit
dl
rm
taskstats.h
8322
0644
edit
dl
rm
tcp.h
11934
0644
edit
dl
rm
tcp_metrics.h
1985
0644
edit
dl
rm
tdx-guest.h
1305
0644
edit
dl
rm
tee.h
13405
0644
edit
dl
rm
termios.h
172
0644
edit
dl
rm
thermal.h
3310
0644
edit
dl
rm
time.h
1752
0644
edit
dl
rm
timerfd.h
936
0644
edit
dl
rm
times.h
278
0644
edit
dl
rm
timex.h
7817
0644
edit
dl
rm
time_types.h
1267
0644
edit
dl
rm
tiocl.h
1729
0644
edit
dl
rm
tipc.h
8825
0644
edit
dl
rm
tipc_config.h
14864
0644
edit
dl
rm
tipc_netlink.h
9395
0644
edit
dl
rm
tipc_sockets_diag.h
468
0644
edit
dl
rm
tls.h
7226
0644
edit
dl
rm
toshiba.h
1930
0644
edit
dl
rm
tps6594_pfsm.h
1160
0644
edit
dl
rm
tty.h
1585
0644
edit
dl
rm
tty_flags.h
4501
0644
edit
dl
rm
types.h
1636
0644
edit
dl
rm
udf_fs_i.h
697
0644
edit
dl
rm
udmabuf.h
643
0644
edit
dl
rm
udp.h
1688
0644
edit
dl
rm
uhid.h
4648
0644
edit
dl
rm
uinput.h
9261
0644
edit
dl
rm
uio.h
732
0644
edit
dl
rm
uleds.h
798
0644
edit
dl
rm
ultrasound.h
4562
0644
edit
dl
rm
um_timetravel.h
3961
0644
edit
dl
rm
un.h
384
0644
edit
dl
rm
unistd.h
220
0644
edit
dl
rm
unix_diag.h
1328
0644
edit
dl
rm
usbdevice_fs.h
8317
0644
edit
dl
rm
usbip.h
1503
0644
edit
dl
rm
userfaultfd.h
10940
0644
edit
dl
rm
userio.h
1516
0644
edit
dl
rm
utime.h
223
0644
edit
dl
rm
utsname.h
669
0644
edit
dl
rm
uuid.h
28
0644
edit
dl
rm
uvcvideo.h
2627
0644
edit
dl
rm
v4l2-common.h
2056
0644
edit
dl
rm
v4l2-controls.h
96860
0644
edit
dl
rm
v4l2-dv-timings.h
31123
0644
edit
dl
rm
v4l2-mediabus.h
5431
0644
edit
dl
rm
v4l2-subdev.h
9998
0644
edit
dl
rm
vboxguest.h
9368
0644
edit
dl
rm
vbox_err.h
7257
0644
edit
dl
rm
vbox_vmmdev_types.h
11651
0644
edit
dl
rm
vdpa.h
1785
0644
edit
dl
rm
vduse.h
9808
0644
edit
dl
rm
version.h
374
0644
edit
dl
rm
veth.h
224
0644
edit
dl
rm
vfio.h
71812
0644
edit
dl
rm
vfio_ccw.h
1317
0644
edit
dl
rm
vfio_zdev.h
2542
0644
edit
dl
rm
vhost.h
8438
0644
edit
dl
rm
vhost_types.h
4882
0644
edit
dl
rm
videodev2.h
101685
0644
edit
dl
rm
virtio_9p.h
2053
0644
edit
dl
rm
virtio_balloon.h
5279
0644
edit
dl
rm
virtio_blk.h
9979
0644
edit
dl
rm
virtio_bt.h
910
0644
edit
dl
rm
virtio_config.h
4461
0644
edit
dl
rm
virtio_console.h
3156
0644
edit
dl
rm
virtio_crypto.h
13887
0644
edit
dl
rm
virtio_fs.h
573
0644
edit
dl
rm
virtio_gpio.h
1738
0644
edit
dl
rm
virtio_gpu.h
11554
0644
edit
dl
rm
virtio_i2c.h
1186
0644
edit
dl
rm
virtio_ids.h
3793
0644
edit
dl
rm
virtio_input.h
2515
0644
edit
dl
rm
virtio_iommu.h
3931
0644
edit
dl
rm
virtio_mem.h
7157
0644
edit
dl
rm
virtio_mmio.h
4969
0644
edit
dl
rm
virtio_net.h
15078
0644
edit
dl
rm
virtio_pci.h
7480
0644
edit
dl
rm
virtio_pcidev.h
2389
0644
edit
dl
rm
virtio_pmem.h
641
0644
edit
dl
rm
virtio_ring.h
8724
0644
edit
dl
rm
virtio_rng.h
265
0644
edit
dl
rm
virtio_scmi.h
637
0644
edit
dl
rm
virtio_scsi.h
6085
0644
edit
dl
rm
virtio_snd.h
13170
0644
edit
dl
rm
virtio_types.h
2153
0644
edit
dl
rm
virtio_vsock.h
3348
0644
edit
dl
rm
vmcore.h
455
0644
edit
dl
rm
vm_sockets.h
7354
0644
edit
dl
rm
vm_sockets_diag.h
963
0644
edit
dl
rm
vsockmon.h
1885
0644
edit
dl
rm
vt.h
3059
0644
edit
dl
rm
vtpm_proxy.h
1719
0644
edit
dl
rm
wait.h
682
0644
edit
dl
rm
watchdog.h
2335
0644
edit
dl
rm
watch_queue.h
3490
0644
edit
dl
rm
wireguard.h
7748
0644
edit
dl
rm
wireless.h
42704
0644
edit
dl
rm
wmi.h
1761
0644
edit
dl
rm
wwan.h
295
0644
edit
dl
rm
x25.h
3562
0644
edit
dl
rm
xattr.h
3023
0644
edit
dl
rm
xdp_diag.h
1468
0644
edit
dl
rm
xfrm.h
12621
0644
edit
dl
rm
xilinx-v4l2-controls.h
2976
0644
edit
dl
rm
zorro.h
3296
0644
edit
dl
rm
zorro_ids.h
29963
0644
edit
dl
rm
Edit:
/usr/include/linux/firewire-cdev.h
(44240B)
/* * Char device interface. * * Copyright (C) 2005-2007 Kristian Hoegsberg <krh@bitplanet.net> * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ #ifndef _LINUX_FIREWIRE_CDEV_H #define _LINUX_FIREWIRE_CDEV_H #include <linux/ioctl.h> #include <linux/types.h> #include <linux/firewire-constants.h> /* available since kernel version 2.6.22 */ #define FW_CDEV_EVENT_BUS_RESET 0x00 #define FW_CDEV_EVENT_RESPONSE 0x01 #define FW_CDEV_EVENT_REQUEST 0x02 #define FW_CDEV_EVENT_ISO_INTERRUPT 0x03 /* available since kernel version 2.6.30 */ #define FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED 0x04 #define FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED 0x05 /* available since kernel version 2.6.36 */ #define FW_CDEV_EVENT_REQUEST2 0x06 #define FW_CDEV_EVENT_PHY_PACKET_SENT 0x07 #define FW_CDEV_EVENT_PHY_PACKET_RECEIVED 0x08 #define FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL 0x09 /** * struct fw_cdev_event_common - Common part of all fw_cdev_event_* types * @closure: For arbitrary use by userspace * @type: Discriminates the fw_cdev_event_* types * * This struct may be used to access generic members of all fw_cdev_event_* * types regardless of the specific type. * * Data passed in the @closure field for a request will be returned in the * corresponding event. It is big enough to hold a pointer on all platforms. * The ioctl used to set @closure depends on the @type of event. */ struct fw_cdev_event_common { __u64 closure; __u32 type; }; /** * struct fw_cdev_event_bus_reset - Sent when a bus reset occurred * @closure: See &fw_cdev_event_common; set by %FW_CDEV_IOC_GET_INFO ioctl * @type: See &fw_cdev_event_common; always %FW_CDEV_EVENT_BUS_RESET * @node_id: New node ID of this node * @local_node_id: Node ID of the local node, i.e. of the controller * @bm_node_id: Node ID of the bus manager * @irm_node_id: Node ID of the iso resource manager * @root_node_id: Node ID of the root node * @generation: New bus generation * * This event is sent when the bus the device belongs to goes through a bus * reset. It provides information about the new bus configuration, such as * new node ID for this device, new root ID, and others. * * If @bm_node_id is 0xffff right after bus reset it can be reread by an * %FW_CDEV_IOC_GET_INFO ioctl after bus manager selection was finished. * Kernels with ABI version < 4 do not set @bm_node_id. */ struct fw_cdev_event_bus_reset { __u64 closure; __u32 type; __u32 node_id; __u32 local_node_id; __u32 bm_node_id; __u32 irm_node_id; __u32 root_node_id; __u32 generation; }; /** * struct fw_cdev_event_response - Sent when a response packet was received * @closure: See &fw_cdev_event_common; set by %FW_CDEV_IOC_SEND_REQUEST * or %FW_CDEV_IOC_SEND_BROADCAST_REQUEST * or %FW_CDEV_IOC_SEND_STREAM_PACKET ioctl * @type: See &fw_cdev_event_common; always %FW_CDEV_EVENT_RESPONSE * @rcode: Response code returned by the remote node * @length: Data length, i.e. the response's payload size in bytes * @data: Payload data, if any * * This event is sent when the stack receives a response to an outgoing request * sent by %FW_CDEV_IOC_SEND_REQUEST ioctl. The payload data for responses * carrying data (read and lock responses) follows immediately and can be * accessed through the @data field. * * The event is also generated after conclusions of transactions that do not * involve response packets. This includes unified write transactions, * broadcast write transactions, and transmission of asynchronous stream * packets. @rcode indicates success or failure of such transmissions. */ struct fw_cdev_event_response { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 data[0]; }; /** * struct fw_cdev_event_request - Old version of &fw_cdev_event_request2 * @closure: See &fw_cdev_event_common; set by %FW_CDEV_IOC_ALLOCATE ioctl * @type: See &fw_cdev_event_common; always %FW_CDEV_EVENT_REQUEST * @tcode: Transaction code of the incoming request * @offset: The offset into the 48-bit per-node address space * @handle: Reference to the kernel-side pending request * @length: Data length, i.e. the request's payload size in bytes * @data: Incoming data, if any * * This event is sent instead of &fw_cdev_event_request2 if the kernel or * the client implements ABI version <= 3. &fw_cdev_event_request lacks * essential information; use &fw_cdev_event_request2 instead. */ struct fw_cdev_event_request { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 handle; __u32 length; __u32 data[0]; }; /** * struct fw_cdev_event_request2 - Sent on incoming request to an address region * @closure: See &fw_cdev_event_common; set by %FW_CDEV_IOC_ALLOCATE ioctl * @type: See &fw_cdev_event_common; always %FW_CDEV_EVENT_REQUEST2 * @tcode: Transaction code of the incoming request * @offset: The offset into the 48-bit per-node address space * @source_node_id: Sender node ID * @destination_node_id: Destination node ID * @card: The index of the card from which the request came * @generation: Bus generation in which the request is valid * @handle: Reference to the kernel-side pending request * @length: Data length, i.e. the request's payload size in bytes * @data: Incoming data, if any * * This event is sent when the stack receives an incoming request to an address * region registered using the %FW_CDEV_IOC_ALLOCATE ioctl. The request is * guaranteed to be completely contained in the specified region. Userspace is * responsible for sending the response by %FW_CDEV_IOC_SEND_RESPONSE ioctl, * using the same @handle. * * The payload data for requests carrying data (write and lock requests) * follows immediately and can be accessed through the @data field. * * Unlike &fw_cdev_event_request, @tcode of lock requests is one of the * firewire-core specific %TCODE_LOCK_MASK_SWAP...%TCODE_LOCK_VENDOR_DEPENDENT, * i.e. encodes the extended transaction code. * * @card may differ from &fw_cdev_get_info.card because requests are received * from all cards of the Linux host. @source_node_id, @destination_node_id, and * @generation pertain to that card. Destination node ID and bus generation may * therefore differ from the corresponding fields of the last * &fw_cdev_event_bus_reset. * * @destination_node_id may also differ from the current node ID because of a * non-local bus ID part or in case of a broadcast write request. Note, a * client must call an %FW_CDEV_IOC_SEND_RESPONSE ioctl even in case of a * broadcast write request; the kernel will then release the kernel-side pending * request but will not actually send a response packet. * * In case of a write request to FCP_REQUEST or FCP_RESPONSE, the kernel already * sent a write response immediately after the request was received; in this * case the client must still call an %FW_CDEV_IOC_SEND_RESPONSE ioctl to * release the kernel-side pending request, though another response won't be * sent. * * If the client subsequently needs to initiate requests to the sender node of * an &fw_cdev_event_request2, it needs to use a device file with matching * card index, node ID, and generation for outbound requests. */ struct fw_cdev_event_request2 { __u64 closure; __u32 type; __u32 tcode; __u64 offset; __u32 source_node_id; __u32 destination_node_id; __u32 card; __u32 generation; __u32 handle; __u32 length; __u32 data[0]; }; /** * struct fw_cdev_event_iso_interrupt - Sent when an iso packet was completed * @closure: See &fw_cdev_event_common; * set by %FW_CDEV_CREATE_ISO_CONTEXT ioctl * @type: See &fw_cdev_event_common; always %FW_CDEV_EVENT_ISO_INTERRUPT * @cycle: Cycle counter of the last completed packet * @header_length: Total length of following headers, in bytes * @header: Stripped headers, if any * * This event is sent when the controller has completed an &fw_cdev_iso_packet * with the %FW_CDEV_ISO_INTERRUPT bit set, when explicitly requested with * %FW_CDEV_IOC_FLUSH_ISO, or when there have been so many completed packets * without the interrupt bit set that the kernel's internal buffer for @header * is about to overflow. (In the last case, ABI versions < 5 drop header data * up to the next interrupt packet.) * * Isochronous transmit events (context type %FW_CDEV_ISO_CONTEXT_TRANSMIT): * * In version 3 and some implementations of version 2 of the ABI, &header_length * is a multiple of 4 and &header contains timestamps of all packets up until * the interrupt packet. The format of the timestamps is as described below for * isochronous reception. In version 1 of the ABI, &header_length was 0. * * Isochronous receive events (context type %FW_CDEV_ISO_CONTEXT_RECEIVE): * * The headers stripped of all packets up until and including the interrupt * packet are returned in the @header field. The amount of header data per * packet is as specified at iso context creation by * &fw_cdev_create_iso_context.header_size. * * Hence, _interrupt.header_length / _context.header_size is the number of * packets received in this interrupt event. The client can now iterate * through the mmap()'ed DMA buffer according to this number of packets and * to the buffer sizes as the client specified in &fw_cdev_queue_iso. * * Since version 2 of this ABI, the portion for each packet in _interrupt.header * consists of the 1394 isochronous packet header, followed by a timestamp * quadlet if &fw_cdev_create_iso_context.header_size > 4, followed by quadlets * from the packet payload if &fw_cdev_create_iso_context.header_size > 8. * * Format of 1394 iso packet header: 16 bits data_length, 2 bits tag, 6 bits * channel, 4 bits tcode, 4 bits sy, in big endian byte order. * data_length is the actual received size of the packet without the four * 1394 iso packet header bytes. * * Format of timestamp: 16 bits invalid, 3 bits cycleSeconds, 13 bits * cycleCount, in big endian byte order. * * In version 1 of the ABI, no timestamp quadlet was inserted; instead, payload * data followed directly after the 1394 is header if header_size > 4. * Behaviour of ver. 1 of this ABI is no longer available since ABI ver. 2. */ struct fw_cdev_event_iso_interrupt { __u64 closure; __u32 type; __u32 cycle; __u32 header_length; __u32 header[0]; }; /** * struct fw_cdev_event_iso_interrupt_mc - An iso buffer chunk was completed * @closure: See &fw_cdev_event_common; * set by %FW_CDEV_CREATE_ISO_CONTEXT ioctl * @type: %FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL * @completed: Offset into the receive buffer; data before this offset is valid * * This event is sent in multichannel contexts (context type * %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL) for &fw_cdev_iso_packet buffer * chunks that have been completely filled and that have the * %FW_CDEV_ISO_INTERRUPT bit set, or when explicitly requested with * %FW_CDEV_IOC_FLUSH_ISO. * * The buffer is continuously filled with the following data, per packet: * - the 1394 iso packet header as described at &fw_cdev_event_iso_interrupt, * but in little endian byte order, * - packet payload (as many bytes as specified in the data_length field of * the 1394 iso packet header) in big endian byte order, * - 0...3 padding bytes as needed to align the following trailer quadlet, * - trailer quadlet, containing the reception timestamp as described at * &fw_cdev_event_iso_interrupt, but in little endian byte order. * * Hence the per-packet size is data_length (rounded up to a multiple of 4) + 8. * When processing the data, stop before a packet that would cross the * @completed offset. * * A packet near the end of a buffer chunk will typically spill over into the * next queued buffer chunk. It is the responsibility of the client to check * for this condition, assemble a broken-up packet from its parts, and not to * re-queue any buffer chunks in which as yet unread packet parts reside. */ struct fw_cdev_event_iso_interrupt_mc { __u64 closure; __u32 type; __u32 completed; }; /** * struct fw_cdev_event_iso_resource - Iso resources were allocated or freed * @closure: See &fw_cdev_event_common; * set by``FW_CDEV_IOC_(DE)ALLOCATE_ISO_RESOURCE(_ONCE)`` ioctl * @type: %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED or * %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED * @handle: Reference by which an allocated resource can be deallocated * @channel: Isochronous channel which was (de)allocated, if any * @bandwidth: Bandwidth allocation units which were (de)allocated, if any * * An %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED event is sent after an isochronous * resource was allocated at the IRM. The client has to check @channel and * @bandwidth for whether the allocation actually succeeded. * * An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event is sent after an isochronous * resource was deallocated at the IRM. It is also sent when automatic * reallocation after a bus reset failed. * * @channel is <0 if no channel was (de)allocated or if reallocation failed. * @bandwidth is 0 if no bandwidth was (de)allocated or if reallocation failed. */ struct fw_cdev_event_iso_resource { __u64 closure; __u32 type; __u32 handle; __s32 channel; __s32 bandwidth; }; /** * struct fw_cdev_event_phy_packet - A PHY packet was transmitted or received * @closure: See &fw_cdev_event_common; set by %FW_CDEV_IOC_SEND_PHY_PACKET * or %FW_CDEV_IOC_RECEIVE_PHY_PACKETS ioctl * @type: %FW_CDEV_EVENT_PHY_PACKET_SENT or %..._RECEIVED * @rcode: %RCODE_..., indicates success or failure of transmission * @length: Data length in bytes * @data: Incoming data * * If @type is %FW_CDEV_EVENT_PHY_PACKET_SENT, @length is 0 and @data empty, * except in case of a ping packet: Then, @length is 4, and @data[0] is the * ping time in 49.152MHz clocks if @rcode is %RCODE_COMPLETE. * * If @type is %FW_CDEV_EVENT_PHY_PACKET_RECEIVED, @length is 8 and @data * consists of the two PHY packet quadlets, in host byte order. */ struct fw_cdev_event_phy_packet { __u64 closure; __u32 type; __u32 rcode; __u32 length; __u32 data[0]; }; /** * union fw_cdev_event - Convenience union of fw_cdev_event_* types * @common: Valid for all types * @bus_reset: Valid if @common.type == %FW_CDEV_EVENT_BUS_RESET * @response: Valid if @common.type == %FW_CDEV_EVENT_RESPONSE * @request: Valid if @common.type == %FW_CDEV_EVENT_REQUEST * @request2: Valid if @common.type == %FW_CDEV_EVENT_REQUEST2 * @iso_interrupt: Valid if @common.type == %FW_CDEV_EVENT_ISO_INTERRUPT * @iso_interrupt_mc: Valid if @common.type == * %FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL * @iso_resource: Valid if @common.type == * %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED or * %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED * @phy_packet: Valid if @common.type == * %FW_CDEV_EVENT_PHY_PACKET_SENT or * %FW_CDEV_EVENT_PHY_PACKET_RECEIVED * * Convenience union for userspace use. Events could be read(2) into an * appropriately aligned char buffer and then cast to this union for further * processing. Note that for a request, response or iso_interrupt event, * the data[] or header[] may make the size of the full event larger than * sizeof(union fw_cdev_event). Also note that if you attempt to read(2) * an event into a buffer that is not large enough for it, the data that does * not fit will be discarded so that the next read(2) will return a new event. */ union fw_cdev_event { struct fw_cdev_event_common common; struct fw_cdev_event_bus_reset bus_reset; struct fw_cdev_event_response response; struct fw_cdev_event_request request; struct fw_cdev_event_request2 request2; /* added in 2.6.36 */ struct fw_cdev_event_iso_interrupt iso_interrupt; struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc; /* added in 2.6.36 */ struct fw_cdev_event_iso_resource iso_resource; /* added in 2.6.30 */ struct fw_cdev_event_phy_packet phy_packet; /* added in 2.6.36 */ }; /* available since kernel version 2.6.22 */ #define FW_CDEV_IOC_GET_INFO _IOWR('#', 0x00, struct fw_cdev_get_info) #define FW_CDEV_IOC_SEND_REQUEST _IOW('#', 0x01, struct fw_cdev_send_request) #define FW_CDEV_IOC_ALLOCATE _IOWR('#', 0x02, struct fw_cdev_allocate) #define FW_CDEV_IOC_DEALLOCATE _IOW('#', 0x03, struct fw_cdev_deallocate) #define FW_CDEV_IOC_SEND_RESPONSE _IOW('#', 0x04, struct fw_cdev_send_response) #define FW_CDEV_IOC_INITIATE_BUS_RESET _IOW('#', 0x05, struct fw_cdev_initiate_bus_reset) #define FW_CDEV_IOC_ADD_DESCRIPTOR _IOWR('#', 0x06, struct fw_cdev_add_descriptor) #define FW_CDEV_IOC_REMOVE_DESCRIPTOR _IOW('#', 0x07, struct fw_cdev_remove_descriptor) #define FW_CDEV_IOC_CREATE_ISO_CONTEXT _IOWR('#', 0x08, struct fw_cdev_create_iso_context) #define FW_CDEV_IOC_QUEUE_ISO _IOWR('#', 0x09, struct fw_cdev_queue_iso) #define FW_CDEV_IOC_START_ISO _IOW('#', 0x0a, struct fw_cdev_start_iso) #define FW_CDEV_IOC_STOP_ISO _IOW('#', 0x0b, struct fw_cdev_stop_iso) /* available since kernel version 2.6.24 */ #define FW_CDEV_IOC_GET_CYCLE_TIMER _IOR('#', 0x0c, struct fw_cdev_get_cycle_timer) /* available since kernel version 2.6.30 */ #define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE _IOWR('#', 0x0d, struct fw_cdev_allocate_iso_resource) #define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE _IOW('#', 0x0e, struct fw_cdev_deallocate) #define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x0f, struct fw_cdev_allocate_iso_resource) #define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x10, struct fw_cdev_allocate_iso_resource) #define FW_CDEV_IOC_GET_SPEED _IO('#', 0x11) /* returns speed code */ #define FW_CDEV_IOC_SEND_BROADCAST_REQUEST _IOW('#', 0x12, struct fw_cdev_send_request) #define FW_CDEV_IOC_SEND_STREAM_PACKET _IOW('#', 0x13, struct fw_cdev_send_stream_packet) /* available since kernel version 2.6.34 */ #define FW_CDEV_IOC_GET_CYCLE_TIMER2 _IOWR('#', 0x14, struct fw_cdev_get_cycle_timer2) /* available since kernel version 2.6.36 */ #define FW_CDEV_IOC_SEND_PHY_PACKET _IOWR('#', 0x15, struct fw_cdev_send_phy_packet) #define FW_CDEV_IOC_RECEIVE_PHY_PACKETS _IOW('#', 0x16, struct fw_cdev_receive_phy_packets) #define FW_CDEV_IOC_SET_ISO_CHANNELS _IOW('#', 0x17, struct fw_cdev_set_iso_channels) /* available since kernel version 3.4 */ #define FW_CDEV_IOC_FLUSH_ISO _IOW('#', 0x18, struct fw_cdev_flush_iso) /* * ABI version history * 1 (2.6.22) - initial version * (2.6.24) - added %FW_CDEV_IOC_GET_CYCLE_TIMER * 2 (2.6.30) - changed &fw_cdev_event_iso_interrupt.header if * &fw_cdev_create_iso_context.header_size is 8 or more * - added %FW_CDEV_IOC_*_ISO_RESOURCE*, * %FW_CDEV_IOC_GET_SPEED, %FW_CDEV_IOC_SEND_BROADCAST_REQUEST, * %FW_CDEV_IOC_SEND_STREAM_PACKET * (2.6.32) - added time stamp to xmit &fw_cdev_event_iso_interrupt * (2.6.33) - IR has always packet-per-buffer semantics now, not one of * dual-buffer or packet-per-buffer depending on hardware * - shared use and auto-response for FCP registers * 3 (2.6.34) - made &fw_cdev_get_cycle_timer reliable * - added %FW_CDEV_IOC_GET_CYCLE_TIMER2 * 4 (2.6.36) - added %FW_CDEV_EVENT_REQUEST2, %FW_CDEV_EVENT_PHY_PACKET_*, * and &fw_cdev_allocate.region_end * - implemented &fw_cdev_event_bus_reset.bm_node_id * - added %FW_CDEV_IOC_SEND_PHY_PACKET, _RECEIVE_PHY_PACKETS * - added %FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL, * %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL, and * %FW_CDEV_IOC_SET_ISO_CHANNELS * 5 (3.4) - send %FW_CDEV_EVENT_ISO_INTERRUPT events when needed to * avoid dropping data * - added %FW_CDEV_IOC_FLUSH_ISO */ /** * struct fw_cdev_get_info - General purpose information ioctl * @version: The version field is just a running serial number. Both an * input parameter (ABI version implemented by the client) and * output parameter (ABI version implemented by the kernel). * A client shall fill in the ABI @version for which the client * was implemented. This is necessary for forward compatibility. * @rom_length: If @rom is non-zero, up to @rom_length bytes of Configuration * ROM will be copied into that user space address. In either * case, @rom_length is updated with the actual length of the * Configuration ROM. * @rom: If non-zero, address of a buffer to be filled by a copy of the * device's Configuration ROM * @bus_reset: If non-zero, address of a buffer to be filled by a * &struct fw_cdev_event_bus_reset with the current state * of the bus. This does not cause a bus reset to happen. * @bus_reset_closure: Value of &closure in this and subsequent bus reset events * @card: The index of the card this device belongs to * * The %FW_CDEV_IOC_GET_INFO ioctl is usually the very first one which a client * performs right after it opened a /dev/fw* file. * * As a side effect, reception of %FW_CDEV_EVENT_BUS_RESET events to be read(2) * is started by this ioctl. */ struct fw_cdev_get_info { __u32 version; __u32 rom_length; __u64 rom; __u64 bus_reset; __u64 bus_reset_closure; __u32 card; }; /** * struct fw_cdev_send_request - Send an asynchronous request packet * @tcode: Transaction code of the request * @length: Length of outgoing payload, in bytes * @offset: 48-bit offset at destination node * @closure: Passed back to userspace in the response event * @data: Userspace pointer to payload * @generation: The bus generation where packet is valid * * Send a request to the device. This ioctl implements all outgoing requests. * Both quadlet and block request specify the payload as a pointer to the data * in the @data field. Once the transaction completes, the kernel writes an * &fw_cdev_event_response event back. The @closure field is passed back to * user space in the response event. */ struct fw_cdev_send_request { __u32 tcode; __u32 length; __u64 offset; __u64 closure; __u64 data; __u32 generation; }; /** * struct fw_cdev_send_response - Send an asynchronous response packet * @rcode: Response code as determined by the userspace handler * @length: Length of outgoing payload, in bytes * @data: Userspace pointer to payload * @handle: The handle from the &fw_cdev_event_request * * Send a response to an incoming request. By setting up an address range using * the %FW_CDEV_IOC_ALLOCATE ioctl, userspace can listen for incoming requests. An * incoming request will generate an %FW_CDEV_EVENT_REQUEST, and userspace must * send a reply using this ioctl. The event has a handle to the kernel-side * pending transaction, which should be used with this ioctl. */ struct fw_cdev_send_response { __u32 rcode; __u32 length; __u64 data; __u32 handle; }; /** * struct fw_cdev_allocate - Allocate a CSR in an address range * @offset: Start offset of the address range * @closure: To be passed back to userspace in request events * @length: Length of the CSR, in bytes * @handle: Handle to the allocation, written by the kernel * @region_end: First address above the address range (added in ABI v4, 2.6.36) * * Allocate an address range in the 48-bit address space on the local node * (the controller). This allows userspace to listen for requests with an * offset within that address range. Every time when the kernel receives a * request within the range, an &fw_cdev_event_request2 event will be emitted. * (If the kernel or the client implements ABI version <= 3, an * &fw_cdev_event_request will be generated instead.) * * The @closure field is passed back to userspace in these request events. * The @handle field is an out parameter, returning a handle to the allocated * range to be used for later deallocation of the range. * * The address range is allocated on all local nodes. The address allocation * is exclusive except for the FCP command and response registers. If an * exclusive address region is already in use, the ioctl fails with errno set * to %EBUSY. * * If kernel and client implement ABI version >= 4, the kernel looks up a free * spot of size @length inside [@offset..@region_end) and, if found, writes * the start address of the new CSR back in @offset. I.e. @offset is an * in and out parameter. If this automatic placement of a CSR in a bigger * address range is not desired, the client simply needs to set @region_end * = @offset + @length. * * If the kernel or the client implements ABI version <= 3, @region_end is * ignored and effectively assumed to be @offset + @length. * * @region_end is only present in a kernel header >= 2.6.36. If necessary, * this can for example be tested by #ifdef FW_CDEV_EVENT_REQUEST2. */ struct fw_cdev_allocate { __u64 offset; __u64 closure; __u32 length; __u32 handle; __u64 region_end; /* available since kernel version 2.6.36 */ }; /** * struct fw_cdev_deallocate - Free a CSR address range or isochronous resource * @handle: Handle to the address range or iso resource, as returned by the * kernel when the range or resource was allocated */ struct fw_cdev_deallocate { __u32 handle; }; #define FW_CDEV_LONG_RESET 0 #define FW_CDEV_SHORT_RESET 1 /** * struct fw_cdev_initiate_bus_reset - Initiate a bus reset * @type: %FW_CDEV_SHORT_RESET or %FW_CDEV_LONG_RESET * * Initiate a bus reset for the bus this device is on. The bus reset can be * either the original (long) bus reset or the arbitrated (short) bus reset * introduced in 1394a-2000. * * The ioctl returns immediately. A subsequent &fw_cdev_event_bus_reset * indicates when the reset actually happened. Since ABI v4, this may be * considerably later than the ioctl because the kernel ensures a grace period * between subsequent bus resets as per IEEE 1394 bus management specification. */ struct fw_cdev_initiate_bus_reset { __u32 type; }; /** * struct fw_cdev_add_descriptor - Add contents to the local node's config ROM * @immediate: If non-zero, immediate key to insert before pointer * @key: Upper 8 bits of root directory pointer * @data: Userspace pointer to contents of descriptor block * @length: Length of descriptor block data, in quadlets * @handle: Handle to the descriptor, written by the kernel * * Add a descriptor block and optionally a preceding immediate key to the local * node's Configuration ROM. * * The @key field specifies the upper 8 bits of the descriptor root directory * pointer and the @data and @length fields specify the contents. The @key * should be of the form 0xXX000000. The offset part of the root directory entry * will be filled in by the kernel. * * If not 0, the @immediate field specifies an immediate key which will be * inserted before the root directory pointer. * * @immediate, @key, and @data array elements are CPU-endian quadlets. * * If successful, the kernel adds the descriptor and writes back a @handle to * the kernel-side object to be used for later removal of the descriptor block * and immediate key. The kernel will also generate a bus reset to signal the * change of the Configuration ROM to other nodes. * * This ioctl affects the Configuration ROMs of all local nodes. * The ioctl only succeeds on device files which represent a local node. */ struct fw_cdev_add_descriptor { __u32 immediate; __u32 key; __u64 data; __u32 length; __u32 handle; }; /** * struct fw_cdev_remove_descriptor - Remove contents from the Configuration ROM * @handle: Handle to the descriptor, as returned by the kernel when the * descriptor was added * * Remove a descriptor block and accompanying immediate key from the local * nodes' Configuration ROMs. The kernel will also generate a bus reset to * signal the change of the Configuration ROM to other nodes. */ struct fw_cdev_remove_descriptor { __u32 handle; }; #define FW_CDEV_ISO_CONTEXT_TRANSMIT 0 #define FW_CDEV_ISO_CONTEXT_RECEIVE 1 #define FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL 2 /* added in 2.6.36 */ /** * struct fw_cdev_create_iso_context - Create a context for isochronous I/O * @type: %FW_CDEV_ISO_CONTEXT_TRANSMIT or %FW_CDEV_ISO_CONTEXT_RECEIVE or * %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL * @header_size: Header size to strip in single-channel reception * @channel: Channel to bind to in single-channel reception or transmission * @speed: Transmission speed * @closure: To be returned in &fw_cdev_event_iso_interrupt or * &fw_cdev_event_iso_interrupt_multichannel * @handle: Handle to context, written back by kernel * * Prior to sending or receiving isochronous I/O, a context must be created. * The context records information about the transmit or receive configuration * and typically maps to an underlying hardware resource. A context is set up * for either sending or receiving. It is bound to a specific isochronous * @channel. * * In case of multichannel reception, @header_size and @channel are ignored * and the channels are selected by %FW_CDEV_IOC_SET_ISO_CHANNELS. * * For %FW_CDEV_ISO_CONTEXT_RECEIVE contexts, @header_size must be at least 4 * and must be a multiple of 4. It is ignored in other context types. * * @speed is ignored in receive context types. * * If a context was successfully created, the kernel writes back a handle to the * context, which must be passed in for subsequent operations on that context. * * Limitations: * No more than one iso context can be created per fd. * The total number of contexts that all userspace and kernelspace drivers can * create on a card at a time is a hardware limit, typically 4 or 8 contexts per * direction, and of them at most one multichannel receive context. */ struct fw_cdev_create_iso_context { __u32 type; __u32 header_size; __u32 channel; __u32 speed; __u64 closure; __u32 handle; }; /** * struct fw_cdev_set_iso_channels - Select channels in multichannel reception * @channels: Bitmask of channels to listen to * @handle: Handle of the mutichannel receive context * * @channels is the bitwise or of 1ULL << n for each channel n to listen to. * * The ioctl fails with errno %EBUSY if there is already another receive context * on a channel in @channels. In that case, the bitmask of all unoccupied * channels is returned in @channels. */ struct fw_cdev_set_iso_channels { __u64 channels; __u32 handle; }; #define FW_CDEV_ISO_PAYLOAD_LENGTH(v) (v) #define FW_CDEV_ISO_INTERRUPT (1 << 16) #define FW_CDEV_ISO_SKIP (1 << 17) #define FW_CDEV_ISO_SYNC (1 << 17) #define FW_CDEV_ISO_TAG(v) ((v) << 18) #define FW_CDEV_ISO_SY(v) ((v) << 20) #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24) /** * struct fw_cdev_iso_packet - Isochronous packet * @control: Contains the header length (8 uppermost bits), * the sy field (4 bits), the tag field (2 bits), a sync flag * or a skip flag (1 bit), an interrupt flag (1 bit), and the * payload length (16 lowermost bits) * @header: Header and payload in case of a transmit context. * * &struct fw_cdev_iso_packet is used to describe isochronous packet queues. * Use the FW_CDEV_ISO_* macros to fill in @control. * The @header array is empty in case of receive contexts. * * Context type %FW_CDEV_ISO_CONTEXT_TRANSMIT: * * @control.HEADER_LENGTH must be a multiple of 4. It specifies the numbers of * bytes in @header that will be prepended to the packet's payload. These bytes * are copied into the kernel and will not be accessed after the ioctl has * returned. * * The @control.SY and TAG fields are copied to the iso packet header. These * fields are specified by IEEE 1394a and IEC 61883-1. * * The @control.SKIP flag specifies that no packet is to be sent in a frame. * When using this, all other fields except @control.INTERRUPT must be zero. * * When a packet with the @control.INTERRUPT flag set has been completed, an * &fw_cdev_event_iso_interrupt event will be sent. * * Context type %FW_CDEV_ISO_CONTEXT_RECEIVE: * * @control.HEADER_LENGTH must be a multiple of the context's header_size. * If the HEADER_LENGTH is larger than the context's header_size, multiple * packets are queued for this entry. * * The @control.SY and TAG fields are ignored. * * If the @control.SYNC flag is set, the context drops all packets until a * packet with a sy field is received which matches &fw_cdev_start_iso.sync. * * @control.PAYLOAD_LENGTH defines how many payload bytes can be received for * one packet (in addition to payload quadlets that have been defined as headers * and are stripped and returned in the &fw_cdev_event_iso_interrupt structure). * If more bytes are received, the additional bytes are dropped. If less bytes * are received, the remaining bytes in this part of the payload buffer will not * be written to, not even by the next packet. I.e., packets received in * consecutive frames will not necessarily be consecutive in memory. If an * entry has queued multiple packets, the PAYLOAD_LENGTH is divided equally * among them. * * When a packet with the @control.INTERRUPT flag set has been completed, an * &fw_cdev_event_iso_interrupt event will be sent. An entry that has queued * multiple receive packets is completed when its last packet is completed. * * Context type %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL: * * Here, &fw_cdev_iso_packet would be more aptly named _iso_buffer_chunk since * it specifies a chunk of the mmap()'ed buffer, while the number and alignment * of packets to be placed into the buffer chunk is not known beforehand. * * @control.PAYLOAD_LENGTH is the size of the buffer chunk and specifies room * for header, payload, padding, and trailer bytes of one or more packets. * It must be a multiple of 4. * * @control.HEADER_LENGTH, TAG and SY are ignored. SYNC is treated as described * for single-channel reception. * * When a buffer chunk with the @control.INTERRUPT flag set has been filled * entirely, an &fw_cdev_event_iso_interrupt_mc event will be sent. */ struct fw_cdev_iso_packet { __u32 control; __u32 header[0]; }; /** * struct fw_cdev_queue_iso - Queue isochronous packets for I/O * @packets: Userspace pointer to an array of &fw_cdev_iso_packet * @data: Pointer into mmap()'ed payload buffer * @size: Size of the @packets array, in bytes * @handle: Isochronous context handle * * Queue a number of isochronous packets for reception or transmission. * This ioctl takes a pointer to an array of &fw_cdev_iso_packet structs, * which describe how to transmit from or receive into a contiguous region * of a mmap()'ed payload buffer. As part of transmit packet descriptors, * a series of headers can be supplied, which will be prepended to the * payload during DMA. * * The kernel may or may not queue all packets, but will write back updated * values of the @packets, @data and @size fields, so the ioctl can be * resubmitted easily. * * In case of a multichannel receive context, @data must be quadlet-aligned * relative to the buffer start. */ struct fw_cdev_queue_iso { __u64 packets; __u64 data; __u32 size; __u32 handle; }; #define FW_CDEV_ISO_CONTEXT_MATCH_TAG0 1 #define FW_CDEV_ISO_CONTEXT_MATCH_TAG1 2 #define FW_CDEV_ISO_CONTEXT_MATCH_TAG2 4 #define FW_CDEV_ISO_CONTEXT_MATCH_TAG3 8 #define FW_CDEV_ISO_CONTEXT_MATCH_ALL_TAGS 15 /** * struct fw_cdev_start_iso - Start an isochronous transmission or reception * @cycle: Cycle in which to start I/O. If @cycle is greater than or * equal to 0, the I/O will start on that cycle. * @sync: Determines the value to wait for receive packets that have * the %FW_CDEV_ISO_SYNC bit set * @tags: Tag filter bit mask. Only valid for isochronous reception. * Determines the tag values for which packets will be accepted. * Use FW_CDEV_ISO_CONTEXT_MATCH_* macros to set @tags. * @handle: Isochronous context handle within which to transmit or receive */ struct fw_cdev_start_iso { __s32 cycle; __u32 sync; __u32 tags; __u32 handle; }; /** * struct fw_cdev_stop_iso - Stop an isochronous transmission or reception * @handle: Handle of isochronous context to stop */ struct fw_cdev_stop_iso { __u32 handle; }; /** * struct fw_cdev_flush_iso - flush completed iso packets * @handle: handle of isochronous context to flush * * For %FW_CDEV_ISO_CONTEXT_TRANSMIT or %FW_CDEV_ISO_CONTEXT_RECEIVE contexts, * report any completed packets. * * For %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL contexts, report the current * offset in the receive buffer, if it has changed; this is typically in the * middle of some buffer chunk. * * Any %FW_CDEV_EVENT_ISO_INTERRUPT or %FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL * events generated by this ioctl are sent synchronously, i.e., are available * for reading from the file descriptor when this ioctl returns. */ struct fw_cdev_flush_iso { __u32 handle; }; /** * struct fw_cdev_get_cycle_timer - read cycle timer register * @local_time: system time, in microseconds since the Epoch * @cycle_timer: Cycle Time register contents * * Same as %FW_CDEV_IOC_GET_CYCLE_TIMER2, but fixed to use %CLOCK_REALTIME * and only with microseconds resolution. * * In version 1 and 2 of the ABI, this ioctl returned unreliable (non- * monotonic) @cycle_timer values on certain controllers. */ struct fw_cdev_get_cycle_timer { __u64 local_time; __u32 cycle_timer; }; /** * struct fw_cdev_get_cycle_timer2 - read cycle timer register * @tv_sec: system time, seconds * @tv_nsec: system time, sub-seconds part in nanoseconds * @clk_id: input parameter, clock from which to get the system time * @cycle_timer: Cycle Time register contents * * The %FW_CDEV_IOC_GET_CYCLE_TIMER2 ioctl reads the isochronous cycle timer * and also the system clock. This allows to correlate reception time of * isochronous packets with system time. * * @clk_id lets you choose a clock like with POSIX' clock_gettime function. * Supported @clk_id values are POSIX' %CLOCK_REALTIME and %CLOCK_MONOTONIC * and Linux' %CLOCK_MONOTONIC_RAW. * * @cycle_timer consists of 7 bits cycleSeconds, 13 bits cycleCount, and * 12 bits cycleOffset, in host byte order. Cf. the Cycle Time register * per IEEE 1394 or Isochronous Cycle Timer register per OHCI-1394. */ struct fw_cdev_get_cycle_timer2 { __s64 tv_sec; __s32 tv_nsec; __s32 clk_id; __u32 cycle_timer; }; /** * struct fw_cdev_allocate_iso_resource - (De)allocate a channel or bandwidth * @closure: Passed back to userspace in corresponding iso resource events * @channels: Isochronous channels of which one is to be (de)allocated * @bandwidth: Isochronous bandwidth units to be (de)allocated * @handle: Handle to the allocation, written by the kernel (only valid in * case of %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE ioctls) * * The %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE ioctl initiates allocation of an * isochronous channel and/or of isochronous bandwidth at the isochronous * resource manager (IRM). Only one of the channels specified in @channels is * allocated. An %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED is sent after * communication with the IRM, indicating success or failure in the event data. * The kernel will automatically reallocate the resources after bus resets. * Should a reallocation fail, an %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event * will be sent. The kernel will also automatically deallocate the resources * when the file descriptor is closed. * * The %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE ioctl can be used to initiate * deallocation of resources which were allocated as described above. * An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation. * * The %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE ioctl is a variant of allocation * without automatic re- or deallocation. * An %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED event concludes this operation, * indicating success or failure in its data. * * The %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE ioctl works like * %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE except that resources are freed * instead of allocated. * An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation. * * To summarize, %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE allocates iso resources * for the lifetime of the fd or @handle. * In contrast, %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE allocates iso resources * for the duration of a bus generation. * * @channels is a host-endian bitfield with the least significant bit * representing channel 0 and the most significant bit representing channel 63: * 1ULL << c for each channel c that is a candidate for (de)allocation. * * @bandwidth is expressed in bandwidth allocation units, i.e. the time to send * one quadlet of data (payload or header data) at speed S1600. */ struct fw_cdev_allocate_iso_resource { __u64 closure; __u64 channels; __u32 bandwidth; __u32 handle; }; /** * struct fw_cdev_send_stream_packet - send an asynchronous stream packet * @length: Length of outgoing payload, in bytes * @tag: Data format tag * @channel: Isochronous channel to transmit to * @sy: Synchronization code * @closure: Passed back to userspace in the response event * @data: Userspace pointer to payload * @generation: The bus generation where packet is valid * @speed: Speed to transmit at * * The %FW_CDEV_IOC_SEND_STREAM_PACKET ioctl sends an asynchronous stream packet * to every device which is listening to the specified channel. The kernel * writes an &fw_cdev_event_response event which indicates success or failure of * the transmission. */ struct fw_cdev_send_stream_packet { __u32 length; __u32 tag; __u32 channel; __u32 sy; __u64 closure; __u64 data; __u32 generation; __u32 speed; }; /** * struct fw_cdev_send_phy_packet - send a PHY packet * @closure: Passed back to userspace in the PHY-packet-sent event * @data: First and second quadlet of the PHY packet * @generation: The bus generation where packet is valid * * The %FW_CDEV_IOC_SEND_PHY_PACKET ioctl sends a PHY packet to all nodes * on the same card as this device. After transmission, an * %FW_CDEV_EVENT_PHY_PACKET_SENT event is generated. * * The payload @data\[\] shall be specified in host byte order. Usually, * @data\[1\] needs to be the bitwise inverse of @data\[0\]. VersaPHY packets * are an exception to this rule. * * The ioctl is only permitted on device files which represent a local node. */ struct fw_cdev_send_phy_packet { __u64 closure; __u32 data[2]; __u32 generation; }; /** * struct fw_cdev_receive_phy_packets - start reception of PHY packets * @closure: Passed back to userspace in phy packet events * * This ioctl activates issuing of %FW_CDEV_EVENT_PHY_PACKET_RECEIVED due to * incoming PHY packets from any node on the same bus as the device. * * The ioctl is only permitted on device files which represent a local node. */ struct fw_cdev_receive_phy_packets { __u64 closure; }; #define FW_CDEV_VERSION 3 /* Meaningless legacy macro; don't use it. */ #endif /* _LINUX_FIREWIRE_CDEV_H */
Save
cmd:
run