android_kernel_msm-6.1_noth.../include/uapi/linux
Mathieu Desnoyers 5b25b13ab0 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-11 15:21:34 -07:00
..
android android: uapi: binder.h 2014-10-20 10:30:15 +08:00
byteorder
caif
can can: cangw: introduce optional uid to reference created routing jobs 2015-06-09 09:39:49 +02:00
cifs
dvb [media] DocBook: Change format for enum dmx_output documentation 2015-06-09 17:47:38 -03:00
genwqe GenWQE: Update author information 2014-09-23 23:15:46 -07:00
hdlc
hsi HSI: cmt_speech: fix timestamp interface 2015-06-23 02:40:03 +02:00
iio iio: Add I/Q modifiers 2015-05-23 10:49:55 +01:00
isdn
mmc
netfilter netfilter: nf_conntrack: add efficient mark to zone mapping 2015-08-18 01:24:05 +02:00
netfilter_arp uapi: netfilter_arp: use __u8 instead of u_int8_t 2014-08-20 15:13:08 +02:00
netfilter_bridge Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2015-06-23 14:08:54 -07:00
netfilter_ipv4
netfilter_ipv6 netfilter: ip6t_REJECT: added missing icmpv6 codes 2015-08-26 20:32:35 +02:00
nfsd nfsd: eliminate NFSD_DEBUG 2015-04-21 16:16:02 -04:00
raid Add new disk to clustered array 2015-02-23 09:59:07 -06:00
spi
sunrpc
tc_act act_bpf: add initial eBPF support for actions 2015-03-20 19:10:44 -04:00
tc_ematch
usb usb: add USB_OTG_ADP definition 2015-07-29 09:59:20 -05:00
wimax
a.out.h
acct.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h [media] am437x: include linux/videodev2.h for expanding BASE_VIDIOC_PRIVATE 2015-04-02 18:10:35 -03:00
apm_bios.h
arcfb.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h Merge branch 'upstream' of git://git.infradead.org/users/pcmoore/audit 2015-09-08 13:34:59 -07:00
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
b1lli.h
baycom.h
bcache.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
bpf.h bpf: Implement function bpf_perf_event_read() that get the selected hardware PMU conuter 2015-08-09 22:50:06 -07:00
bpf_common.h net: filter: move common defines into bpf_common.h 2014-10-14 16:06:45 -04:00
bpqether.h
bsg.h
btrfs.h Btrfs: Remove unnecessary placeholder in btrfs_err_code 2015-02-02 19:25:51 -08:00
can.h can.h: make padding given by gcc explicit 2015-05-06 08:03:19 +02:00
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
cdrom.h
cgroupstats.h
chio.h
cm4000_cs.h
cn_proc.h
coda.h
coda_psdev.h
coff.h
connector.h
const.h
cramfs_fs.h
cryptouser.h crypto: user - Add CRYPTO_MSG_DELRNG 2015-06-22 15:49:27 +08:00
cuda.h
cyclades.h
cycx_cfm.h
dcbnl.h dcb : Fix incorrect documentation for struct dcb_app 2015-06-23 07:00:41 -07:00
dccp.h
dlm.h
dlm_device.h dlm: fix lvb copy for user locks 2015-08-25 14:41:50 -05:00
dlm_netlink.h
dlm_plock.h
dlmconstants.h dlm: adopt orphan locks 2014-11-19 14:48:02 -06:00
dm-ioctl.h dm stats: report precise_timestamps and histogram in @stats_list output 2015-08-18 17:20:03 -04:00
dm-log-userspace.h
dn.h
dqblk_xfs.h
edd.h
efs_fs_sb.h
elf-em.h elf-em.h: move EM_MICROBLAZE to the common header 2015-09-10 06:54:15 +02:00
elf-fdpic.h
elf.h arm64: ptrace: add NT_ARM_SYSTEM_CALL regset 2014-11-28 10:19:49 +00:00
elfcore.h
errno.h
errqueue.h net-timestamp: ACK timestamp for bytestreams 2014-08-05 16:35:54 -07:00
ethtool.h clarify implementation of ethtool's get_ts_info op 2015-07-17 19:59:04 -07:00
eventpoll.h
fadvise.h
falloc.h fs: Add support FALLOC_FL_INSERT_RANGE for fallocate 2015-03-25 15:07:05 +11:00
fanotify.h
fb.h
fcntl.h shm: add sealing API 2014-08-08 15:57:31 -07:00
fd.h
fdreg.h
fib_rules.h fib: Add fib rule match on tunnel id 2015-07-21 10:39:06 -07:00
fiemap.h
filter.h bpf: fix bpf helpers to use skb->mac_header relative offsets 2015-04-16 14:08:49 -04:00
firewire-cdev.h
firewire-constants.h
flat.h
fou.h fou: implement FOU_CMD_GET 2015-04-12 21:25:13 -04:00
fs.h vfs: add support for a lazytime mount option 2015-02-05 02:45:00 -05:00
fsl_hypervisor.h
fuse.h fuse: device fd clone 2015-07-01 16:26:08 +02:00
futex.h
gameport.h
gen_stats.h
genetlink.h
gfs2_ondisk.h
gigaset_dev.h
gsmmux.h tty: linux/gsmmux.h needs linux/types.h 2015-07-23 17:48:43 -07:00
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h Drivers: hv: fcopy: full handshake support 2015-05-24 12:17:42 -07:00
hysdn_if.h
i2c-dev.h
i2c.h i2c: add FUNC flag for slave capabilities 2015-06-01 08:07:08 +09:00
i2o-dev.h
i8k.h i8k: uapi: Introduce define for new highest fan speed 2014-07-09 16:41:36 -07:00
icmp.h
icmpv6.h
if.h
if_addr.h ipv6: introduce IFA_F_STABLE_PRIVACY flag 2015-03-23 22:12:09 -04:00
if_addrlabel.h
if_alg.h crypto: af_alg - add user space interface for AEAD 2014-12-05 23:56:55 +08:00
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h bridge: mdb: add vlan support for user entries 2015-07-13 14:41:26 -07:00
if_cablemodem.h
if_eql.h
if_ether.h ether: add IEEE 1722 ethertype - TSN 2015-09-09 22:06:29 -07:00
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h geneve: Add support to collect tunnel metadata. 2015-08-27 15:42:47 -07:00
if_ltalk.h
if_packet.h packet: add extended BPF fanout mode 2015-08-17 14:22:48 -07:00
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_team.h
if_tun.h macvtap/tun: cross-endian support for little-endian hosts 2015-06-01 15:48:56 +02:00
if_tunnel.h ip_gre: Add support to collect tunnel metadata. 2015-08-10 14:03:54 -07:00
if_vlan.h
if_x25.h
igmp.h
ila.h net: Identifier Locator Addressing module 2015-08-17 21:33:06 -07:00
in.h api: fix compatibility of linux/in.h with netinet/in.h 2015-06-29 18:56:21 -07:00
in6.h in6: fix conflict with glibc 2014-12-22 16:12:36 -05:00
in_route.h
inet_diag.h net: inet_diag: export IPV6_V6ONLY sockopt 2015-06-24 02:51:39 -07:00
inotify.h
input.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2015-04-14 18:25:15 -07:00
ioctl.h
ip.h net: ipv4 sysctl option to ignore routes when nexthop link is down 2015-06-24 02:15:54 -07:00
ip6_tunnel.h
ip_vs.h ipvs: add more mcast parameters for the sync daemon 2015-08-21 09:10:11 -07:00
ipc.h
ipmi.h
ipmi_msgdefs.h
ipsec.h
ipv6.h net: ipv6 sysctl option to ignore routes when nexthop link is down 2015-08-13 21:27:19 -07:00
ipv6_route.h ipv6: Create percpu rt6_info 2015-05-25 13:25:35 -04:00
ipx.h
irda.h
irqnr.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
iso_fs.h
ivtv.h
ivtvfb.h
ixjuser.h
jffs2.h
joystick.h
Kbuild sys_membarrier(): system-wide memory barrier (generic, x86) 2015-09-11 15:21:34 -07:00
kcmp.h kcmp: Move kcmp.h into uapi 2014-12-02 13:52:53 -07:00
kd.h
kdev_t.h
kernel-page-flags.h proc: export idle flag via kpageflags 2015-09-10 13:29:01 -07:00
kernel.h
kernelcapi.h
kexec.h kexec: Fix make headers_check 2015-02-17 14:34:51 -08:00
keyboard.h
keyctl.h
kfd_ioctl.h drm/amdkfd: add H/W debugger IOCTL set definitions 2015-06-03 11:32:07 +03:00
kvm.h Patch queue for ppc - 2015-08-22 2015-08-22 14:57:59 -07:00
kvm_para.h
l2tp.h l2tp : multicast notification to the registered listeners 2014-12-31 14:17:20 -05:00
libc-compat.h api: fix compatibility of linux/in.h with netinet/in.h 2015-06-29 18:56:21 -07:00
limits.h
llc.h
loop.h
lp.h
lwtunnel.h ipv6: route: per route IP tunnel metadata via lightweight tunnel 2015-08-20 15:42:38 -07:00
magic.h tracefs: Add new tracefs file system 2015-02-03 12:48:40 -05:00
major.h
map_to_7segment.h
matroxfb.h
mdio.h
media-bus-format.h Merge branch 'drm-next-merged' of git://people.freedesktop.org/~airlied/linux into v4l_for_linus 2015-04-21 09:44:55 -03:00
media.h [media] media.h: mark alsa struct in media_entity_desc as TODO 2015-02-26 08:40:10 -03:00
mei.h mei: add async event notification ioctls 2015-08-03 17:30:00 -07:00
membarrier.h sys_membarrier(): system-wide memory barrier (generic, x86) 2015-09-11 15:21:34 -07:00
memfd.h shm: add memfd_create() syscall 2014-08-08 15:57:31 -07:00
mempolicy.h mm: convert p[te|md]_numa users to p[te|md]_protnone_numa 2015-02-12 18:54:08 -08:00
meye.h
mic_common.h misc: mic: Common MIC header file changes in preparation for SCIF 2015-05-24 12:13:36 -07:00
mic_ioctl.h
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h
mpls.h mpls: Use definition for reserved label checks 2015-08-03 22:35:00 -07:00
mpls_iptunnel.h mpls: ip tunnel support 2015-07-21 10:39:05 -07:00
mqueue.h
mroute.h
mroute6.h
msdos_fs.h msdos_fs.h: fix 'fields' in comment 2015-01-20 13:51:06 +01:00
msg.h ipc/msg: increase MSGMNI, remove scaling 2014-12-13 12:42:52 -08:00
mtio.h
n_r3964.h
nbd.h nbd: stop using req->cmd 2015-05-05 13:40:44 -06:00
ncp.h
ncp_fs.h
ncp_mount.h
ncp_no.h
ndctl.h libnvdimm: Add DSM support for Address Range Scrub commands 2015-07-27 22:53:19 -04:00
neighbour.h net: add explicit logging and stat for neighbour table overflow 2015-08-10 13:46:21 -07:00
net.h
net_dropmon.h
net_namespace.h netns: add rtnl cmd to add and get peer netns ids 2015-01-19 14:21:18 -05:00
net_tstamp.h net-timestamp: no-payload option 2015-02-02 18:46:51 -08:00
netconf.h ipv4: add support for linkdown sysctl to netconf 2015-07-08 23:34:53 -07:00
netdevice.h net: add name_assign_type netdev attribute 2014-07-15 16:12:01 -07:00
netfilter.h netfilter: don't pull include/linux/netfilter.h from netns headers 2015-06-18 21:14:31 +02:00
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h netlink: add NETLINK_CAP_ACK socket option 2015-08-28 22:25:42 -07:00
netlink_diag.h
netrom.h
nfc.h NFC: netlink: Implement vendor command support 2015-06-09 01:21:35 +02:00
nfs.h
nfs2.h
nfs3.h
nfs4.h NFS: Update NFS4_BITMAP_SIZE 2015-08-27 19:44:53 -04:00
nfs4_mount.h
nfs_fs.h
nfs_idmap.h NFS: Move nfs_idmap.h into fs/nfs/ 2015-04-23 15:16:14 -04:00
nfs_mount.h
nfsacl.h nfsd: Add macro NFS_ACL_MASK for ACL 2015-07-20 14:58:46 -04:00
nl80211.h cfg80211: change GO_CONCURRENT to IR_CONCURRENT for STA 2015-05-06 15:50:02 +02:00
nubus.h
nvme.h NVMe: Add nvme subsystem reset IOCTL 2015-08-18 11:56:13 -06:00
nvram.h
omap3isp.h
omapfb.h
oom.h
openvswitch.h openvswitch: Allow attaching helpers to ct action 2015-08-27 11:40:43 -07:00
packet_diag.h
param.h
parport.h
patchkey.h
pci.h
pci_regs.h PCI: Restore PCI_MSIX_FLAGS_BIRMASK definition 2015-07-14 18:27:46 -05:00
perf_event.h perf: Add cycles to branch_info 2015-08-04 10:16:57 +02:00
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pkt_cls.h net: sched: pkt_cls: remove unused macros from uapi 2015-05-21 23:26:51 -04:00
pkt_sched.h net_sched: gred: add TCA_GRED_LIMIT attribute 2015-05-12 18:22:49 -04:00
pktcdvd.h
pmu.h
poll.h
posix_types.h
ppdev.h
ppp-comp.h
ppp-ioctl.h
ppp_defs.h
pps.h
prctl.h capabilities: ambient capabilities 2015-09-04 16:54:41 -07:00
psci.h
ptp_clock.h
ptrace.h seccomp: add ptrace options for suspend/resume 2015-07-15 11:52:52 -07:00
qnx4_fs.h
qnxtypes.h
quota.h vfs: Add general support to enforce project quota limits 2015-03-18 21:55:08 +01:00
radeonfb.h
random.h random: introduce getrandom(2) system call 2014-08-05 16:41:22 -04:00
raw.h
rds.h net/rds: Declare SO_RDS_TRANSPORT and RDS_TRANS_* constants in uapi/linux/rds.h 2015-05-31 21:47:23 -07:00
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
resource.h
rfkill.h
romfs_fs.h
rose.h
route.h
rtc.h
rtnetlink.h fib, fib6: reject invalid feature bits 2015-08-31 12:34:00 -07:00
scc.h
sched.h sched: Update comments about CLONE_NEWUTS and CLONE_NEWIPC 2014-11-16 10:58:53 +01:00
scif_ioctl.h misc: mic: SCIF header file and IOCTL interface 2015-05-24 12:13:36 -07:00
screen_info.h
sctp.h net: sctp: implement rfc6458, 8.1.31. SCTP_DEFAULT_SNDINFO support 2014-07-16 14:40:04 -07:00
sdla.h
seccomp.h seccomp: implement SECCOMP_FILTER_FLAG_TSYNC 2014-07-18 12:13:40 -07:00
securebits.h capabilities: add a securebit to disable PR_CAP_AMBIENT_RAISE 2015-09-04 16:54:41 -07:00
selinux_netlink.h
sem.h ipc/sem.c: increase SEMMSL, SEMMNI, SEMOPM 2014-12-13 12:42:52 -08:00
serial.h serial: uapi: Declare all userspace-visible io types 2015-03-07 03:39:55 +01:00
serial_core.h serial: stm32-usart: Add STM32 USART Driver 2015-06-10 17:34:26 -07:00
serial_reg.h ARM: OMAP1: Move UART defines to prepare for sparse IRQ 2015-05-20 09:01:20 -07:00
serio.h Input: add support for Wacom protocol 4 serial tablets 2014-07-20 14:33:23 -07:00
shm.h
signal.h
signalfd.h
smiapp.h [media] smiapp: Add driver-specific test pattern menu item definitions 2014-08-21 15:25:11 -05:00
snmp.h net: track success and failure of TCP PMTU probing 2015-07-21 22:36:33 -07:00
sock_diag.h sock_diag: define destruction multicast groups 2015-06-15 19:49:22 -07:00
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h
stddef.h
string.h
suspend_ioctls.h
swab.h
synclink.h
sysctl.h kernel: add panic_on_warn 2014-12-10 17:41:10 -08:00
sysinfo.h
target_core_user.h target: Version 2 of TCMU ABI 2015-04-19 22:40:26 -07:00
taskstats.h
tcp.h tcp: add tcpi_segs_in and tcpi_segs_out to tcp_info 2015-05-21 23:25:21 -04:00
tcp_metrics.h
telephony.h
termios.h
thermal.h thermal: provide an UAPI header file 2014-12-09 14:10:41 +08:00
time.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h tipc: convert legacy nl link stat to nl compat 2015-02-09 13:20:47 -08:00
tipc_netlink.h tipc: add ip/udp media type 2015-03-05 22:08:42 -05:00
toshiba.h toshiba_acpi: Add /dev/toshiba_acpi device 2015-07-24 14:15:10 -07:00
tty.h NFC: nci: add generic uart support 2015-06-11 23:37:37 +02:00
tty_flags.h tty: fix comment of ASYNCB_SPD_HI 2015-05-24 12:49:16 -07:00
types.h
udf_fs_i.h
udp.h
uhid.h HID: uhid: report to user-space whether reports are numbered 2014-08-25 03:28:08 -05:00
uinput.h Input: uinput - fix ioctl nr overflow for UI_GET_SYSNAME/VERSION 2015-01-11 16:27:25 -08:00
uio.h
ultrasound.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h USB: usbfs: allow URBs to be reaped after disconnection 2015-01-31 09:05:06 -08:00
usbip.h usbip: move usbip kernel code out of staging 2014-08-25 10:40:06 -07:00
userfaultfd.h userfaultfd: UFFDIO_COPY|UFFDIO_ZEROPAGE uAPI 2015-09-04 16:54:41 -07:00
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h [media] v4l: Add V4L2_SEL_TGT_NATIVE_SIZE selection target 2014-12-04 12:37:01 -02:00
v4l2-controls.h [media] Driver for Toshiba TC358743 HDMI to CSI-2 bridge 2015-07-17 09:59:28 -03:00
v4l2-dv-timings.h [media] videodev2.h/v4l2-dv-timings.h: add V4L2_DV_FL_IS_CE_VIDEO flag 2015-04-08 06:36:52 -03:00
v4l2-mediabus.h [media] videodev2.h: add support for transfer functions 2015-06-05 11:45:45 -03:00
v4l2-subdev.h [media] v4l2-subdev.h: add 'which' field for the enum structs 2015-03-23 11:44:35 -07:00
veth.h
vfio.h vfio: powerpc/spapr: Support Dynamic DMA windows 2015-06-11 15:16:55 +10:00
vhost.h vhost: cross-endian support for legacy devices 2015-06-01 15:48:55 +02:00
videodev2.h [media] videodev2.h: fix copy-and-paste error in V4L2_MAP_XFER_FUNC_DEFAULT 2015-06-18 14:34:46 -03:00
virtio_9p.h
virtio_balloon.h include/uapi/linux/virtio_balloon.h: include linux/virtio_types.h 2015-06-01 15:46:54 +02:00
virtio_blk.h virtio_blk: fix comment for virtio 1.0 2015-03-10 11:48:29 +10:30
virtio_config.h virtio: Don't expose legacy config features when VIRTIO_CONFIG_NO_LEGACY defined. 2015-02-11 15:03:16 +10:30
virtio_console.h virtio_console: virtio 1.0 support 2014-12-09 12:06:32 +02:00
virtio_gpu.h virtgpu: include linux/types.h to avoid warning. 2015-06-05 12:31:12 +10:00
virtio_ids.h Add virtio gpu driver. 2015-06-03 14:17:38 +02:00
virtio_input.h Add virtio-input driver. 2015-03-29 12:13:52 +10:30
virtio_net.h virtio_net: document VIRTIO_NET_CTRL_GUEST_OFFLOADS 2015-07-01 10:11:17 +02:00
virtio_pci.h virtio: define virtio_pci_cfg_cap in header. 2015-07-07 14:27:05 +03:00
virtio_ring.h virtio: Fix typecast of pointer in vring_init() 2015-07-07 14:27:04 +03:00
virtio_rng.h
virtio_scsi.h uapi/virtio_scsi: allow overriding CDB/SENSE size 2015-03-13 15:55:43 +10:30
virtio_types.h virtio: memory access APIs 2014-12-09 12:05:24 +02:00
vm_sockets.h
vsp1.h [media] media: uapi: vsp1: Use __u32 instead of u32 2015-07-06 08:25:50 -03:00
vt.h vt: Remove vt_get_kmsg_redirect() from uapi header 2014-11-05 20:18:30 -08:00
wait.h
wanrouter.h
watchdog.h
wil6210_uapi.h wil6210: atomic I/O for the card memory 2014-10-02 14:23:14 -04:00
wimax.h
wireless.h
x25.h
xattr.h xattr: fix check for simultaneous glibc header inclusion 2014-08-29 16:28:16 -07:00
xfrm.h xfrm: simplify xfrm_address_t use 2015-03-31 13:58:35 -04:00
xilinx-v4l2-controls.h [media] v4l: xilinx: Add Test Pattern Generator driver 2015-04-03 01:04:18 -03:00
zorro.h
zorro_ids.h