2012-10-03 01:01:35 +08:00
|
|
|
# UAPI Header export list
|
2014-10-16 20:40:38 +08:00
|
|
|
header-y += android/
|
2012-10-03 01:01:35 +08:00
|
|
|
header-y += byteorder/
|
|
|
|
header-y += can/
|
|
|
|
header-y += caif/
|
|
|
|
header-y += dvb/
|
|
|
|
header-y += hdlc/
|
|
|
|
header-y += hsi/
|
2015-02-11 00:33:51 +08:00
|
|
|
header-y += iio/
|
2012-10-03 01:01:35 +08:00
|
|
|
header-y += isdn/
|
|
|
|
header-y += mmc/
|
|
|
|
header-y += nfsd/
|
|
|
|
header-y += raid/
|
|
|
|
header-y += spi/
|
|
|
|
header-y += sunrpc/
|
|
|
|
header-y += tc_act/
|
|
|
|
header-y += tc_ematch/
|
|
|
|
header-y += netfilter/
|
|
|
|
header-y += netfilter_arp/
|
|
|
|
header-y += netfilter_bridge/
|
|
|
|
header-y += netfilter_ipv4/
|
|
|
|
header-y += netfilter_ipv6/
|
|
|
|
header-y += usb/
|
|
|
|
header-y += wimax/
|
2012-10-03 01:01:57 +08:00
|
|
|
|
|
|
|
genhdr-y += version.h
|
2012-10-13 17:46:48 +08:00
|
|
|
|
|
|
|
ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/a.out.h \
|
|
|
|
$(srctree)/arch/$(SRCARCH)/include/asm/a.out.h),)
|
|
|
|
header-y += a.out.h
|
|
|
|
endif
|
|
|
|
|
|
|
|
header-y += acct.h
|
|
|
|
header-y += adb.h
|
|
|
|
header-y += adfs_fs.h
|
|
|
|
header-y += affs_hardblocks.h
|
|
|
|
header-y += agpgart.h
|
|
|
|
header-y += aio_abi.h
|
2014-12-10 03:43:44 +08:00
|
|
|
header-y += am437x-vpfe.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += apm_bios.h
|
|
|
|
header-y += arcfb.h
|
|
|
|
header-y += atalk.h
|
|
|
|
header-y += atmapi.h
|
|
|
|
header-y += atmarp.h
|
|
|
|
header-y += atmbr2684.h
|
|
|
|
header-y += atmclip.h
|
|
|
|
header-y += atmdev.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += atm_eni.h
|
|
|
|
header-y += atm.h
|
|
|
|
header-y += atm_he.h
|
|
|
|
header-y += atm_idt77105.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += atmioc.h
|
|
|
|
header-y += atmlec.h
|
|
|
|
header-y += atmmpc.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += atm_nicstar.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += atmppp.h
|
|
|
|
header-y += atmsap.h
|
|
|
|
header-y += atmsvc.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += atm_tcp.h
|
|
|
|
header-y += atm_zatm.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += audit.h
|
|
|
|
header-y += auto_fs4.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += auto_fs.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += auxvec.h
|
|
|
|
header-y += ax25.h
|
|
|
|
header-y += b1lli.h
|
2016-12-11 20:16:07 +08:00
|
|
|
header-y += batman_adv.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += baycom.h
|
2013-06-19 00:55:41 +08:00
|
|
|
header-y += bcm933xx_hcs.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += bfs_fs.h
|
|
|
|
header-y += binfmts.h
|
|
|
|
header-y += blkpg.h
|
|
|
|
header-y += blktrace_api.h
|
2016-10-18 14:40:33 +08:00
|
|
|
header-y += blkzoned.h
|
2014-10-14 17:08:54 +08:00
|
|
|
header-y += bpf_common.h
|
2016-09-02 09:37:22 +08:00
|
|
|
header-y += bpf_perf_event.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += bpf.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += bpqether.h
|
|
|
|
header-y += bsg.h
|
2016-09-20 15:01:38 +08:00
|
|
|
header-y += bt-bmc.h
|
2013-01-29 14:04:50 +08:00
|
|
|
header-y += btrfs.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += can.h
|
|
|
|
header-y += capability.h
|
|
|
|
header-y += capi.h
|
|
|
|
header-y += cciss_defs.h
|
|
|
|
header-y += cciss_ioctl.h
|
|
|
|
header-y += cdrom.h
|
2016-11-02 18:25:28 +08:00
|
|
|
header-y += cec.h
|
|
|
|
header-y += cec-funcs.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += cgroupstats.h
|
|
|
|
header-y += chio.h
|
|
|
|
header-y += cm4000_cs.h
|
|
|
|
header-y += cn_proc.h
|
|
|
|
header-y += coda.h
|
|
|
|
header-y += coda_psdev.h
|
|
|
|
header-y += coff.h
|
|
|
|
header-y += connector.h
|
|
|
|
header-y += const.h
|
|
|
|
header-y += cramfs_fs.h
|
|
|
|
header-y += cuda.h
|
|
|
|
header-y += cyclades.h
|
|
|
|
header-y += cycx_cfm.h
|
|
|
|
header-y += dcbnl.h
|
|
|
|
header-y += dccp.h
|
2016-04-12 04:39:08 +08:00
|
|
|
header-y += devlink.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += dlmconstants.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += dlm_device.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += dlm.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += dlm_netlink.h
|
|
|
|
header-y += dlm_plock.h
|
|
|
|
header-y += dm-ioctl.h
|
|
|
|
header-y += dm-log-userspace.h
|
2017-02-15 04:00:47 +08:00
|
|
|
header-y += dma-buf.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += dn.h
|
|
|
|
header-y += dqblk_xfs.h
|
|
|
|
header-y += edd.h
|
|
|
|
header-y += efs_fs_sb.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += elfcore.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += elf-em.h
|
|
|
|
header-y += elf-fdpic.h
|
|
|
|
header-y += elf.h
|
|
|
|
header-y += errno.h
|
|
|
|
header-y += errqueue.h
|
|
|
|
header-y += ethtool.h
|
|
|
|
header-y += eventpoll.h
|
|
|
|
header-y += fadvise.h
|
|
|
|
header-y += falloc.h
|
|
|
|
header-y += fanotify.h
|
|
|
|
header-y += fb.h
|
|
|
|
header-y += fcntl.h
|
|
|
|
header-y += fd.h
|
|
|
|
header-y += fdreg.h
|
|
|
|
header-y += fib_rules.h
|
|
|
|
header-y += fiemap.h
|
|
|
|
header-y += filter.h
|
|
|
|
header-y += firewire-cdev.h
|
|
|
|
header-y += firewire-constants.h
|
|
|
|
header-y += flat.h
|
2014-11-03 03:31:41 +08:00
|
|
|
header-y += fou.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += fs.h
|
|
|
|
header-y += fsl_hypervisor.h
|
|
|
|
header-y += fuse.h
|
|
|
|
header-y += futex.h
|
|
|
|
header-y += gameport.h
|
|
|
|
header-y += genetlink.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += gen_stats.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += gfs2_ondisk.h
|
|
|
|
header-y += gigaset_dev.h
|
gpio: add a userspace chardev ABI for GPIOs
A new chardev that is to be used for userspace GPIO access is
added in this patch. It is intended to gradually replace the
horribly broken sysfs ABI.
Using a chardev has many upsides:
- All operations are per-gpiochip, which is the actual
device underlying the GPIOs, making us tie in to the
kernel device model properly.
- Hotpluggable GPIO controllers can come and go, as this
kind of problem has been know to userspace for character
devices since ages, and if a gpiochip handle is held in
userspace we know we will break something, whereas the
sysfs is stateless.
- The one-value-per-file rule of sysfs is really hard to
maintain when you want to twist more than one knob at a time,
for example have in-kernel APIs to switch several GPIO
lines at the same time, and this will be possible to do
with a single ioctl() from userspace, saving a lot of
context switching.
We also need to add a new bus type for GPIO. This is
necessary for example for userspace coldplug, where sysfs is
traversed to find the boot-time device nodes and create the
character devices in /dev.
This new chardev ABI is *non* *optional* and can be counted
on to be present in the future, emphasizing the preference
of this ABI.
The ABI only implements one single ioctl() to get the name
and number of GPIO lines of a chip. Even this is debatable:
see it as a minimal example for review. This ABI shall be
ruthlessly reviewed and etched in stone.
The old /sys/class/gpio is still optional to compile in,
but will be deprecated.
Unique device IDs are created using IDR, which is overkill
and insanely scalable, but also well tested.
Cc: Johan Hovold <johan@kernel.org>
Cc: Michael Welling <mwelling@ieee.org>
Cc: Markus Pargmann <mpa@pengutronix.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2015-10-21 21:29:53 +08:00
|
|
|
header-y += gpio.h
|
2015-05-27 19:57:46 +08:00
|
|
|
header-y += gsmmux.h
|
2016-05-09 06:55:48 +08:00
|
|
|
header-y += gtp.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += hdlcdrv.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += hdlc.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += hdreg.h
|
|
|
|
header-y += hiddev.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += hid.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += hidraw.h
|
|
|
|
header-y += hpet.h
|
2014-11-03 03:31:41 +08:00
|
|
|
header-y += hsr_netlink.h
|
2014-01-22 17:16:58 +08:00
|
|
|
header-y += hyperv.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += hysdn_if.h
|
|
|
|
header-y += i2c-dev.h
|
|
|
|
header-y += i2c.h
|
|
|
|
header-y += i2o-dev.h
|
|
|
|
header-y += i8k.h
|
|
|
|
header-y += icmp.h
|
|
|
|
header-y += icmpv6.h
|
|
|
|
header-y += if_addr.h
|
|
|
|
header-y += if_addrlabel.h
|
|
|
|
header-y += if_alg.h
|
|
|
|
header-y += if_arcnet.h
|
|
|
|
header-y += if_arp.h
|
|
|
|
header-y += if_bonding.h
|
|
|
|
header-y += if_bridge.h
|
|
|
|
header-y += if_cablemodem.h
|
|
|
|
header-y += if_eql.h
|
|
|
|
header-y += if_ether.h
|
|
|
|
header-y += if_fc.h
|
|
|
|
header-y += if_fddi.h
|
|
|
|
header-y += if_frad.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += if.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += if_hippi.h
|
|
|
|
header-y += if_infiniband.h
|
|
|
|
header-y += if_link.h
|
|
|
|
header-y += if_ltalk.h
|
2016-03-12 01:07:31 +08:00
|
|
|
header-y += if_macsec.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += if_packet.h
|
|
|
|
header-y += if_phonet.h
|
|
|
|
header-y += if_plip.h
|
|
|
|
header-y += if_ppp.h
|
|
|
|
header-y += if_pppol2tp.h
|
|
|
|
header-y += if_pppox.h
|
|
|
|
header-y += if_slip.h
|
|
|
|
header-y += if_team.h
|
|
|
|
header-y += if_tun.h
|
|
|
|
header-y += if_tunnel.h
|
|
|
|
header-y += if_vlan.h
|
|
|
|
header-y += if_x25.h
|
2017-02-01 21:30:02 +08:00
|
|
|
header-y += ife.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += igmp.h
|
2015-12-11 01:14:20 +08:00
|
|
|
header-y += ila.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += in6.h
|
|
|
|
header-y += inet_diag.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += in.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += inotify.h
|
|
|
|
header-y += input.h
|
2015-10-15 08:03:35 +08:00
|
|
|
header-y += input-event-codes.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += in_route.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += ioctl.h
|
|
|
|
header-y += ip6_tunnel.h
|
|
|
|
header-y += ipc.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += ip.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += ipmi.h
|
|
|
|
header-y += ipmi_msgdefs.h
|
|
|
|
header-y += ipsec.h
|
|
|
|
header-y += ipv6.h
|
|
|
|
header-y += ipv6_route.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += ip_vs.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += ipx.h
|
|
|
|
header-y += irda.h
|
|
|
|
header-y += irqnr.h
|
|
|
|
header-y += isdn_divertif.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += isdn.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += isdnif.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += isdn_ppp.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += iso_fs.h
|
|
|
|
header-y += ivtvfb.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += ivtv.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += ixjuser.h
|
|
|
|
header-y += jffs2.h
|
|
|
|
header-y += joystick.h
|
2014-12-02 13:52:06 +08:00
|
|
|
header-y += kcmp.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += kdev_t.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += kd.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += kernelcapi.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += kernel.h
|
|
|
|
header-y += kernel-page-flags.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += kexec.h
|
|
|
|
header-y += keyboard.h
|
|
|
|
header-y += keyctl.h
|
|
|
|
|
|
|
|
ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm.h \
|
|
|
|
$(srctree)/arch/$(SRCARCH)/include/asm/kvm.h),)
|
|
|
|
header-y += kvm.h
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm_para.h \
|
|
|
|
$(srctree)/arch/$(SRCARCH)/include/asm/kvm_para.h),)
|
|
|
|
header-y += kvm_para.h
|
|
|
|
endif
|
|
|
|
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += hw_breakpoint.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += l2tp.h
|
2013-08-15 17:28:10 +08:00
|
|
|
header-y += libc-compat.h
|
2016-07-15 03:07:15 +08:00
|
|
|
header-y += lirc.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += limits.h
|
|
|
|
header-y += llc.h
|
|
|
|
header-y += loop.h
|
|
|
|
header-y += lp.h
|
2015-07-23 21:43:56 +08:00
|
|
|
header-y += lwtunnel.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += magic.h
|
|
|
|
header-y += major.h
|
|
|
|
header-y += map_to_7segment.h
|
|
|
|
header-y += matroxfb.h
|
|
|
|
header-y += mdio.h
|
|
|
|
header-y += media.h
|
2014-11-11 01:28:26 +08:00
|
|
|
header-y += media-bus-format.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += mei.h
|
sys_membarrier(): system-wide memory barrier (generic, x86)
Here is an implementation of a new system call, sys_membarrier(), which
executes a memory barrier on all threads running on the system. It is
implemented by calling synchronize_sched(). It can be used to
distribute the cost of user-space memory barriers asymmetrically by
transforming pairs of memory barriers into pairs consisting of
sys_membarrier() and a compiler barrier. For synchronization primitives
that distinguish between read-side and write-side (e.g. userspace RCU
[1], rwlocks), the read-side can be accelerated significantly by moving
the bulk of the memory barrier overhead to the write-side.
The existing applications of which I am aware that would be improved by
this system call are as follows:
* Through Userspace RCU library (http://urcu.so)
- DNS server (Knot DNS) https://www.knot-dns.cz/
- Network sniffer (http://netsniff-ng.org/)
- Distributed object storage (https://sheepdog.github.io/sheepdog/)
- User-space tracing (http://lttng.org)
- Network storage system (https://www.gluster.org/)
- Virtual routers (https://events.linuxfoundation.org/sites/events/files/slides/DPDK_RCU_0MQ.pdf)
- Financial software (https://lkml.org/lkml/2015/3/23/189)
Those projects use RCU in userspace to increase read-side speed and
scalability compared to locking. Especially in the case of RCU used by
libraries, sys_membarrier can speed up the read-side by moving the bulk of
the memory barrier cost to synchronize_rcu().
* Direct users of sys_membarrier
- core dotnet garbage collector (https://github.com/dotnet/coreclr/issues/198)
Microsoft core dotnet GC developers are planning to use the mprotect()
side-effect of issuing memory barriers through IPIs as a way to implement
Windows FlushProcessWriteBuffers() on Linux. They are referring to
sys_membarrier in their github thread, specifically stating that
sys_membarrier() is what they are looking for.
To explain the benefit of this scheme, let's introduce two example threads:
Thread A (non-frequent, e.g. executing liburcu synchronize_rcu())
Thread B (frequent, e.g. executing liburcu
rcu_read_lock()/rcu_read_unlock())
In a scheme where all smp_mb() in thread A are ordering memory accesses
with respect to smp_mb() present in Thread B, we can change each
smp_mb() within Thread A into calls to sys_membarrier() and each
smp_mb() within Thread B into compiler barriers "barrier()".
Before the change, we had, for each smp_mb() pairs:
Thread A Thread B
previous mem accesses previous mem accesses
smp_mb() smp_mb()
following mem accesses following mem accesses
After the change, these pairs become:
Thread A Thread B
prev mem accesses prev mem accesses
sys_membarrier() barrier()
follow mem accesses follow mem accesses
As we can see, there are two possible scenarios: either Thread B memory
accesses do not happen concurrently with Thread A accesses (1), or they
do (2).
1) Non-concurrent Thread A vs Thread B accesses:
Thread A Thread B
prev mem accesses
sys_membarrier()
follow mem accesses
prev mem accesses
barrier()
follow mem accesses
In this case, thread B accesses will be weakly ordered. This is OK,
because at that point, thread A is not particularly interested in
ordering them with respect to its own accesses.
2) Concurrent Thread A vs Thread B accesses
Thread A Thread B
prev mem accesses prev mem accesses
sys_membarrier() barrier()
follow mem accesses follow mem accesses
In this case, thread B accesses, which are ensured to be in program
order thanks to the compiler barrier, will be "upgraded" to full
smp_mb() by synchronize_sched().
* Benchmarks
On Intel Xeon E5405 (8 cores)
(one thread is calling sys_membarrier, the other 7 threads are busy
looping)
1000 non-expedited sys_membarrier calls in 33s =3D 33 milliseconds/call.
* User-space user of this system call: Userspace RCU library
Both the signal-based and the sys_membarrier userspace RCU schemes
permit us to remove the memory barrier from the userspace RCU
rcu_read_lock() and rcu_read_unlock() primitives, thus significantly
accelerating them. These memory barriers are replaced by compiler
barriers on the read-side, and all matching memory barriers on the
write-side are turned into an invocation of a memory barrier on all
active threads in the process. By letting the kernel perform this
synchronization rather than dumbly sending a signal to every process
threads (as we currently do), we diminish the number of unnecessary wake
ups and only issue the memory barriers on active threads. Non-running
threads do not need to execute such barrier anyway, because these are
implied by the scheduler context switches.
Results in liburcu:
Operations in 10s, 6 readers, 2 writers:
memory barriers in reader: 1701557485 reads, 2202847 writes
signal-based scheme: 9830061167 reads, 6700 writes
sys_membarrier: 9952759104 reads, 425 writes
sys_membarrier (dyn. check): 7970328887 reads, 425 writes
The dynamic sys_membarrier availability check adds some overhead to
the read-side compared to the signal-based scheme, but besides that,
sys_membarrier slightly outperforms the signal-based scheme. However,
this non-expedited sys_membarrier implementation has a much slower grace
period than signal and memory barrier schemes.
Besides diminishing the number of wake-ups, one major advantage of the
membarrier system call over the signal-based scheme is that it does not
need to reserve a signal. This plays much more nicely with libraries,
and with processes injected into for tracing purposes, for which we
cannot expect that signals will be unused by the application.
An expedited version of this system call can be added later on to speed
up the grace period. Its implementation will likely depend on reading
the cpu_curr()->mm without holding each CPU's rq lock.
This patch adds the system call to x86 and to asm-generic.
[1] http://urcu.so
membarrier(2) man page:
MEMBARRIER(2) Linux Programmer's Manual MEMBARRIER(2)
NAME
membarrier - issue memory barriers on a set of threads
SYNOPSIS
#include <linux/membarrier.h>
int membarrier(int cmd, int flags);
DESCRIPTION
The cmd argument is one of the following:
MEMBARRIER_CMD_QUERY
Query the set of supported commands. It returns a bitmask of
supported commands.
MEMBARRIER_CMD_SHARED
Execute a memory barrier on all threads running on the system.
Upon return from system call, the caller thread is ensured that
all running threads have passed through a state where all memory
accesses to user-space addresses match program order between
entry to and return from the system call (non-running threads
are de facto in such a state). This covers threads from all pro=E2=80=90
cesses running on the system. This command returns 0.
The flags argument needs to be 0. For future extensions.
All memory accesses performed in program order from each targeted
thread is guaranteed to be ordered with respect to sys_membarrier(). If
we use the semantic "barrier()" to represent a compiler barrier forcing
memory accesses to be performed in program order across the barrier,
and smp_mb() to represent explicit memory barriers forcing full memory
ordering across the barrier, we have the following ordering table for
each pair of barrier(), sys_membarrier() and smp_mb():
The pair ordering is detailed as (O: ordered, X: not ordered):
barrier() smp_mb() sys_membarrier()
barrier() X X O
smp_mb() X O O
sys_membarrier() O O O
RETURN VALUE
On success, these system calls return zero. On error, -1 is returned,
and errno is set appropriately. For a given command, with flags
argument set to 0, this system call is guaranteed to always return the
same value until reboot.
ERRORS
ENOSYS System call is not implemented.
EINVAL Invalid arguments.
Linux 2015-04-15 MEMBARRIER(2)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Nicholas Miell <nmiell@comcast.net>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Alan Cox <gnomes@lxorguk.ukuu.org.uk>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: David Howells <dhowells@redhat.com>
Cc: Pranith Kumar <bobby.prani@gmail.com>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Shuah Khan <shuahkh@osg.samsung.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2015-09-12 04:07:39 +08:00
|
|
|
header-y += membarrier.h
|
2014-09-10 05:50:57 +08:00
|
|
|
header-y += memfd.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += mempolicy.h
|
|
|
|
header-y += meye.h
|
2013-09-06 07:41:55 +08:00
|
|
|
header-y += mic_common.h
|
2013-09-06 07:42:18 +08:00
|
|
|
header-y += mic_ioctl.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += mii.h
|
|
|
|
header-y += minix_fs.h
|
|
|
|
header-y += mman.h
|
|
|
|
header-y += mmtimer.h
|
2014-11-03 03:31:41 +08:00
|
|
|
header-y += mpls.h
|
2015-10-17 07:12:34 +08:00
|
|
|
header-y += mpls_iptunnel.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += mqueue.h
|
|
|
|
header-y += mroute6.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += mroute.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += msdos_fs.h
|
|
|
|
header-y += msg.h
|
|
|
|
header-y += mtio.h
|
|
|
|
header-y += nbd.h
|
|
|
|
header-y += ncp_fs.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += ncp.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += ncp_mount.h
|
|
|
|
header-y += ncp_no.h
|
2015-06-09 02:27:06 +08:00
|
|
|
header-y += ndctl.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += neighbour.h
|
2012-12-12 14:58:52 +08:00
|
|
|
header-y += netconf.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += netdevice.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += net_dropmon.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += netfilter_arp.h
|
|
|
|
header-y += netfilter_bridge.h
|
|
|
|
header-y += netfilter_decnet.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += netfilter.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += netfilter_ipv4.h
|
|
|
|
header-y += netfilter_ipv6.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += net.h
|
|
|
|
header-y += netlink_diag.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += netlink.h
|
|
|
|
header-y += netrom.h
|
2015-01-15 22:11:15 +08:00
|
|
|
header-y += net_namespace.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += net_tstamp.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += nfc.h
|
net: Introduce psample, a new genetlink channel for packet sampling
Add a general way for kernel modules to sample packets, without being tied
to any specific subsystem. This netlink channel can be used by tc,
iptables, etc. and allow to standardize packet sampling in the kernel.
For every sampled packet, the psample module adds the following metadata
fields:
PSAMPLE_ATTR_IIFINDEX - the packets input ifindex, if applicable
PSAMPLE_ATTR_OIFINDEX - the packet output ifindex, if applicable
PSAMPLE_ATTR_ORIGSIZE - the packet's original size, in case it has been
truncated during sampling
PSAMPLE_ATTR_SAMPLE_GROUP - the packet's sample group, which is set by the
user who initiated the sampling. This field allows the user to
differentiate between several samplers working simultaneously and
filter packets relevant to him
PSAMPLE_ATTR_GROUP_SEQ - sequence counter of last sent packet. The
sequence is kept for each group
PSAMPLE_ATTR_SAMPLE_RATE - the sampling rate used for sampling the packets
PSAMPLE_ATTR_DATA - the actual packet bits
The sampled packets are sent to the PSAMPLE_NL_MCGRP_SAMPLE multicast
group. In addition, add the GET_GROUPS netlink command which allows the
user to see the current sample groups, their refcount and sequence number.
This command currently supports only netlink dump mode.
Signed-off-by: Yotam Gigi <yotamg@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-01-23 18:07:08 +08:00
|
|
|
header-y += psample.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += nfs2.h
|
|
|
|
header-y += nfs3.h
|
|
|
|
header-y += nfs4.h
|
|
|
|
header-y += nfs4_mount.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += nfsacl.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += nfs_fs.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += nfs.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += nfs_idmap.h
|
|
|
|
header-y += nfs_mount.h
|
|
|
|
header-y += nl80211.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += n_r3964.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += nubus.h
|
2016-01-11 09:14:11 +08:00
|
|
|
header-y += nvme_ioctl.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += nvram.h
|
|
|
|
header-y += omap3isp.h
|
|
|
|
header-y += omapfb.h
|
|
|
|
header-y += oom.h
|
2013-03-29 21:46:52 +08:00
|
|
|
header-y += openvswitch.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += packet_diag.h
|
|
|
|
header-y += param.h
|
|
|
|
header-y += parport.h
|
|
|
|
header-y += patchkey.h
|
|
|
|
header-y += pci.h
|
|
|
|
header-y += pci_regs.h
|
2017-03-27 17:45:14 +08:00
|
|
|
header-y += pcitest.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += perf_event.h
|
|
|
|
header-y += personality.h
|
|
|
|
header-y += pfkeyv2.h
|
|
|
|
header-y += pg.h
|
|
|
|
header-y += phantom.h
|
|
|
|
header-y += phonet.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += pktcdvd.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += pkt_cls.h
|
|
|
|
header-y += pkt_sched.h
|
|
|
|
header-y += pmu.h
|
|
|
|
header-y += poll.h
|
2016-09-27 19:03:23 +08:00
|
|
|
header-y += posix_acl.h
|
|
|
|
header-y += posix_acl_xattr.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += posix_types.h
|
|
|
|
header-y += ppdev.h
|
|
|
|
header-y += ppp-comp.h
|
|
|
|
header-y += ppp_defs.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += ppp-ioctl.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += pps.h
|
|
|
|
header-y += prctl.h
|
2014-04-29 13:54:15 +08:00
|
|
|
header-y += psci.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += ptp_clock.h
|
|
|
|
header-y += ptrace.h
|
|
|
|
header-y += qnx4_fs.h
|
|
|
|
header-y += qnxtypes.h
|
|
|
|
header-y += quota.h
|
|
|
|
header-y += radeonfb.h
|
|
|
|
header-y += random.h
|
|
|
|
header-y += raw.h
|
|
|
|
header-y += rds.h
|
|
|
|
header-y += reboot.h
|
|
|
|
header-y += reiserfs_fs.h
|
|
|
|
header-y += reiserfs_xattr.h
|
|
|
|
header-y += resource.h
|
|
|
|
header-y += rfkill.h
|
2016-08-03 05:06:25 +08:00
|
|
|
header-y += rio_cm_cdev.h
|
2016-03-23 05:27:08 +08:00
|
|
|
header-y += rio_mport_cdev.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += romfs_fs.h
|
|
|
|
header-y += rose.h
|
|
|
|
header-y += route.h
|
|
|
|
header-y += rtc.h
|
|
|
|
header-y += rtnetlink.h
|
|
|
|
header-y += scc.h
|
|
|
|
header-y += sched.h
|
2015-04-29 20:32:28 +08:00
|
|
|
header-y += scif_ioctl.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += screen_info.h
|
2013-04-09 13:54:01 +08:00
|
|
|
header-y += sctp.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += sdla.h
|
|
|
|
header-y += seccomp.h
|
|
|
|
header-y += securebits.h
|
2017-01-15 22:26:16 +08:00
|
|
|
header-y += seg6_genl.h
|
|
|
|
header-y += seg6.h
|
|
|
|
header-y += seg6_hmac.h
|
|
|
|
header-y += seg6_iptunnel.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += selinux_netlink.h
|
|
|
|
header-y += sem.h
|
|
|
|
header-y += serial_core.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += serial.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += serial_reg.h
|
|
|
|
header-y += serio.h
|
|
|
|
header-y += shm.h
|
|
|
|
header-y += signalfd.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += signal.h
|
2014-05-26 20:46:18 +08:00
|
|
|
header-y += smiapp.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += snmp.h
|
|
|
|
header-y += sock_diag.h
|
|
|
|
header-y += socket.h
|
|
|
|
header-y += sockios.h
|
|
|
|
header-y += sonet.h
|
|
|
|
header-y += sonypi.h
|
|
|
|
header-y += soundcard.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += sound.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += stat.h
|
|
|
|
header-y += stddef.h
|
|
|
|
header-y += string.h
|
|
|
|
header-y += suspend_ioctls.h
|
|
|
|
header-y += swab.h
|
|
|
|
header-y += synclink.h
|
2016-09-27 22:31:42 +08:00
|
|
|
header-y += sync_file.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += sysctl.h
|
|
|
|
header-y += sysinfo.h
|
2014-10-02 07:07:05 +08:00
|
|
|
header-y += target_core_user.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += taskstats.h
|
|
|
|
header-y += tcp.h
|
|
|
|
header-y += tcp_metrics.h
|
|
|
|
header-y += telephony.h
|
|
|
|
header-y += termios.h
|
2014-11-20 10:11:00 +08:00
|
|
|
header-y += thermal.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += time.h
|
2017-01-11 08:58:30 +08:00
|
|
|
header-y += timerfd.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += times.h
|
|
|
|
header-y += timex.h
|
|
|
|
header-y += tiocl.h
|
|
|
|
header-y += tipc_config.h
|
2014-11-24 21:24:54 +08:00
|
|
|
header-y += tipc_netlink.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += tipc.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += toshiba.h
|
|
|
|
header-y += tty_flags.h
|
2014-11-04 04:42:34 +08:00
|
|
|
header-y += tty.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += types.h
|
|
|
|
header-y += udf_fs_i.h
|
|
|
|
header-y += udp.h
|
|
|
|
header-y += uhid.h
|
|
|
|
header-y += uinput.h
|
|
|
|
header-y += uio.h
|
2016-09-17 03:16:48 +08:00
|
|
|
header-y += uleds.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += ultrasound.h
|
|
|
|
header-y += un.h
|
|
|
|
header-y += unistd.h
|
|
|
|
header-y += unix_diag.h
|
|
|
|
header-y += usbdevice_fs.h
|
2014-09-05 06:58:02 +08:00
|
|
|
header-y += usbip.h
|
2017-03-25 14:04:44 +08:00
|
|
|
header-y += userio.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += utime.h
|
|
|
|
header-y += utsname.h
|
|
|
|
header-y += uuid.h
|
|
|
|
header-y += uvcvideo.h
|
|
|
|
header-y += v4l2-common.h
|
|
|
|
header-y += v4l2-controls.h
|
|
|
|
header-y += v4l2-dv-timings.h
|
|
|
|
header-y += v4l2-mediabus.h
|
|
|
|
header-y += v4l2-subdev.h
|
|
|
|
header-y += veth.h
|
|
|
|
header-y += vfio.h
|
|
|
|
header-y += vhost.h
|
|
|
|
header-y += videodev2.h
|
|
|
|
header-y += virtio_9p.h
|
|
|
|
header-y += virtio_balloon.h
|
|
|
|
header-y += virtio_blk.h
|
|
|
|
header-y += virtio_config.h
|
|
|
|
header-y += virtio_console.h
|
2013-09-09 08:02:56 +08:00
|
|
|
header-y += virtio_gpu.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += virtio_ids.h
|
2015-03-27 10:16:12 +08:00
|
|
|
header-y += virtio_input.h
|
2017-01-13 05:36:32 +08:00
|
|
|
header-y += virtio_mmio.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += virtio_net.h
|
|
|
|
header-y += virtio_pci.h
|
|
|
|
header-y += virtio_ring.h
|
|
|
|
header-y += virtio_rng.h
|
2014-11-23 23:49:12 +08:00
|
|
|
header-y += virtio_scsi.h
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
Pull networking updates from David Miller:
1) New offloading infrastructure and example 'rocker' driver for
offloading of switching and routing to hardware.
This work was done by a large group of dedicated individuals, not
limited to: Scott Feldman, Jiri Pirko, Thomas Graf, John Fastabend,
Jamal Hadi Salim, Andy Gospodarek, Florian Fainelli, Roopa Prabhu
2) Start making the networking operate on IOV iterators instead of
modifying iov objects in-situ during transfers. Thanks to Al Viro
and Herbert Xu.
3) A set of new netlink interfaces for the TIPC stack, from Richard
Alpe.
4) Remove unnecessary looping during ipv6 routing lookups, from Martin
KaFai Lau.
5) Add PAUSE frame generation support to gianfar driver, from Matei
Pavaluca.
6) Allow for larger reordering levels in TCP, which are easily
achievable in the real world right now, from Eric Dumazet.
7) Add a variable of napi_schedule that doesn't need to disable cpu
interrupts, from Eric Dumazet.
8) Use a doubly linked list to optimize neigh_parms_release(), from
Nicolas Dichtel.
9) Various enhancements to the kernel BPF verifier, and allow eBPF
programs to actually be attached to sockets. From Alexei
Starovoitov.
10) Support TSO/LSO in sunvnet driver, from David L Stevens.
11) Allow controlling ECN usage via routing metrics, from Florian
Westphal.
12) Remote checksum offload, from Tom Herbert.
13) Add split-header receive, BQL, and xmit_more support to amd-xgbe
driver, from Thomas Lendacky.
14) Add MPLS support to openvswitch, from Simon Horman.
15) Support wildcard tunnel endpoints in ipv6 tunnels, from Steffen
Klassert.
16) Do gro flushes on a per-device basis using a timer, from Eric
Dumazet. This tries to resolve the conflicting goals between the
desired handling of bulk vs. RPC-like traffic.
17) Allow userspace to ask for the CPU upon what a packet was
received/steered, via SO_INCOMING_CPU. From Eric Dumazet.
18) Limit GSO packets to half the current congestion window, from Eric
Dumazet.
19) Add a generic helper so that all drivers set their RSS keys in a
consistent way, from Eric Dumazet.
20) Add xmit_more support to enic driver, from Govindarajulu
Varadarajan.
21) Add VLAN packet scheduler action, from Jiri Pirko.
22) Support configurable RSS hash functions via ethtool, from Eyal
Perry.
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1820 commits)
Fix race condition between vxlan_sock_add and vxlan_sock_release
net/macb: fix compilation warning for print_hex_dump() called with skb->mac_header
net/mlx4: Add support for A0 steering
net/mlx4: Refactor QUERY_PORT
net/mlx4_core: Add explicit error message when rule doesn't meet configuration
net/mlx4: Add A0 hybrid steering
net/mlx4: Add mlx4_bitmap zone allocator
net/mlx4: Add a check if there are too many reserved QPs
net/mlx4: Change QP allocation scheme
net/mlx4_core: Use tasklet for user-space CQ completion events
net/mlx4_core: Mask out host side virtualization features for guests
net/mlx4_en: Set csum level for encapsulated packets
be2net: Export tunnel offloads only when a VxLAN tunnel is created
gianfar: Fix dma check map error when DMA_API_DEBUG is enabled
cxgb4/csiostor: Don't use MASTER_MUST for fw_hello call
net: fec: only enable mdio interrupt before phy device link up
net: fec: clear all interrupt events to support i.MX6SX
net: fec: reset fep link status in suspend function
net: sock: fix access via invalid file descriptor
net: introduce helper macro for_each_cmsghdr
...
2014-12-12 06:27:06 +08:00
|
|
|
header-y += virtio_types.h
|
2016-07-28 22:36:32 +08:00
|
|
|
header-y += virtio_vsock.h
|
2016-12-15 10:03:16 +08:00
|
|
|
header-y += virtio_crypto.h
|
2014-12-05 06:42:25 +08:00
|
|
|
header-y += vm_sockets.h
|
2017-04-21 17:10:45 +08:00
|
|
|
header-y += vsockmon.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += vt.h
|
2016-04-19 01:26:15 +08:00
|
|
|
header-y += vtpm_proxy.h
|
2012-10-13 17:46:48 +08:00
|
|
|
header-y += wait.h
|
|
|
|
header-y += wanrouter.h
|
|
|
|
header-y += watchdog.h
|
|
|
|
header-y += wimax.h
|
|
|
|
header-y += wireless.h
|
|
|
|
header-y += x25.h
|
|
|
|
header-y += xattr.h
|
|
|
|
header-y += xfrm.h
|
2013-05-15 22:36:56 +08:00
|
|
|
header-y += xilinx-v4l2-controls.h
|
2013-10-03 16:45:36 +08:00
|
|
|
header-y += zorro.h
|
|
|
|
header-y += zorro_ids.h
|
2015-09-05 06:46:04 +08:00
|
|
|
header-y += userfaultfd.h
|