PATH:
usr
/
include
/
linux
/* * include/linux/userfaultfd.h * * Copyright (C) 2007 Davide Libenzi <davidel@xmailserver.org> * Copyright (C) 2015 Red Hat, Inc. * */ #ifndef _LINUX_USERFAULTFD_H #define _LINUX_USERFAULTFD_H #include <linux/types.h> /* * If the UFFDIO_API is upgraded someday, the UFFDIO_UNREGISTER and * UFFDIO_WAKE ioctls should be defined as _IOW and not as _IOR. In * userfaultfd.h we assumed the kernel was reading (instead _IOC_READ * means the userland is reading). */ #define UFFD_API ((__u64)0xAA) #define UFFD_API_FEATURES (UFFD_FEATURE_EVENT_FORK | \ UFFD_FEATURE_EVENT_REMAP | \ UFFD_FEATURE_EVENT_REMOVE | \ UFFD_FEATURE_EVENT_UNMAP | \ UFFD_FEATURE_MISSING_HUGETLBFS | \ UFFD_FEATURE_MISSING_SHMEM | \ UFFD_FEATURE_SIGBUS | \ UFFD_FEATURE_THREAD_ID) #define UFFD_API_IOCTLS \ ((__u64)1 << _UFFDIO_REGISTER | \ (__u64)1 << _UFFDIO_UNREGISTER | \ (__u64)1 << _UFFDIO_API) #define UFFD_API_RANGE_IOCTLS \ ((__u64)1 << _UFFDIO_WAKE | \ (__u64)1 << _UFFDIO_COPY | \ (__u64)1 << _UFFDIO_ZEROPAGE) #define UFFD_API_RANGE_IOCTLS_BASIC \ ((__u64)1 << _UFFDIO_WAKE | \ (__u64)1 << _UFFDIO_COPY) /* * Valid ioctl command number range with this API is from 0x00 to * 0x3F. UFFDIO_API is the fixed number, everything else can be * changed by implementing a different UFFD_API. If sticking to the * same UFFD_API more ioctl can be added and userland will be aware of * which ioctl the running kernel implements through the ioctl command * bitmask written by the UFFDIO_API. */ #define _UFFDIO_REGISTER (0x00) #define _UFFDIO_UNREGISTER (0x01) #define _UFFDIO_WAKE (0x02) #define _UFFDIO_COPY (0x03) #define _UFFDIO_ZEROPAGE (0x04) #define _UFFDIO_API (0x3F) /* userfaultfd ioctl ids */ #define UFFDIO 0xAA #define UFFDIO_API _IOWR(UFFDIO, _UFFDIO_API, \ struct uffdio_api) #define UFFDIO_REGISTER _IOWR(UFFDIO, _UFFDIO_REGISTER, \ struct uffdio_register) #define UFFDIO_UNREGISTER _IOR(UFFDIO, _UFFDIO_UNREGISTER, \ struct uffdio_range) #define UFFDIO_WAKE _IOR(UFFDIO, _UFFDIO_WAKE, \ struct uffdio_range) #define UFFDIO_COPY _IOWR(UFFDIO, _UFFDIO_COPY, \ struct uffdio_copy) #define UFFDIO_ZEROPAGE _IOWR(UFFDIO, _UFFDIO_ZEROPAGE, \ struct uffdio_zeropage) /* read() structure */ struct uffd_msg { __u8 event; __u8 reserved1; __u16 reserved2; __u32 reserved3; union { struct { __u64 flags; __u64 address; union { __u32 ptid; } feat; } pagefault; struct { __u32 ufd; } fork; struct { __u64 from; __u64 to; __u64 len; } remap; struct { __u64 start; __u64 end; } remove; struct { /* unused reserved fields */ __u64 reserved1; __u64 reserved2; __u64 reserved3; } reserved; } arg; } __attribute__((packed)); /* * Start at 0x12 and not at 0 to be more strict against bugs. */ #define UFFD_EVENT_PAGEFAULT 0x12 #define UFFD_EVENT_FORK 0x13 #define UFFD_EVENT_REMAP 0x14 #define UFFD_EVENT_REMOVE 0x15 #define UFFD_EVENT_UNMAP 0x16 /* flags for UFFD_EVENT_PAGEFAULT */ #define UFFD_PAGEFAULT_FLAG_WRITE (1<<0) /* If this was a write fault */ #define UFFD_PAGEFAULT_FLAG_WP (1<<1) /* If reason is VM_UFFD_WP */ struct uffdio_api { /* userland asks for an API number and the features to enable */ __u64 api; /* * Kernel answers below with the all available features for * the API, this notifies userland of which events and/or * which flags for each event are enabled in the current * kernel. * * Note: UFFD_EVENT_PAGEFAULT and UFFD_PAGEFAULT_FLAG_WRITE * are to be considered implicitly always enabled in all kernels as * long as the uffdio_api.api requested matches UFFD_API. * * UFFD_FEATURE_MISSING_HUGETLBFS means an UFFDIO_REGISTER * with UFFDIO_REGISTER_MODE_MISSING mode will succeed on * hugetlbfs virtual memory ranges. Adding or not adding * UFFD_FEATURE_MISSING_HUGETLBFS to uffdio_api.features has * no real functional effect after UFFDIO_API returns, but * it's only useful for an initial feature set probe at * UFFDIO_API time. There are two ways to use it: * * 1) by adding UFFD_FEATURE_MISSING_HUGETLBFS to the * uffdio_api.features before calling UFFDIO_API, an error * will be returned by UFFDIO_API on a kernel without * hugetlbfs missing support * * 2) the UFFD_FEATURE_MISSING_HUGETLBFS can not be added in * uffdio_api.features and instead it will be set by the * kernel in the uffdio_api.features if the kernel supports * it, so userland can later check if the feature flag is * present in uffdio_api.features after UFFDIO_API * succeeded. * * UFFD_FEATURE_MISSING_SHMEM works the same as * UFFD_FEATURE_MISSING_HUGETLBFS, but it applies to shmem * (i.e. tmpfs and other shmem based APIs). * * UFFD_FEATURE_SIGBUS feature means no page-fault * (UFFD_EVENT_PAGEFAULT) event will be delivered, instead * a SIGBUS signal will be sent to the faulting process. * * UFFD_FEATURE_THREAD_ID pid of the page faulted task_struct will * be returned, if feature is not requested 0 will be returned. */ #define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1<<0) #define UFFD_FEATURE_EVENT_FORK (1<<1) #define UFFD_FEATURE_EVENT_REMAP (1<<2) #define UFFD_FEATURE_EVENT_REMOVE (1<<3) #define UFFD_FEATURE_MISSING_HUGETLBFS (1<<4) #define UFFD_FEATURE_MISSING_SHMEM (1<<5) #define UFFD_FEATURE_EVENT_UNMAP (1<<6) #define UFFD_FEATURE_SIGBUS (1<<7) #define UFFD_FEATURE_THREAD_ID (1<<8) __u64 features; __u64 ioctls; }; struct uffdio_range { __u64 start; __u64 len; }; struct uffdio_register { struct uffdio_range range; #define UFFDIO_REGISTER_MODE_MISSING ((__u64)1<<0) #define UFFDIO_REGISTER_MODE_WP ((__u64)1<<1) __u64 mode; /* * kernel answers which ioctl commands are available for the * range, keep at the end as the last 8 bytes aren't read. */ __u64 ioctls; }; struct uffdio_copy { __u64 dst; __u64 src; __u64 len; /* * There will be a wrprotection flag later that allows to map * pages wrprotected on the fly. And such a flag will be * available if the wrprotection ioctl are implemented for the * range according to the uffdio_register.ioctls. */ #define UFFDIO_COPY_MODE_DONTWAKE ((__u64)1<<0) __u64 mode; /* * "copy" is written by the ioctl and must be at the end: the * copy_from_user will not read the last 8 bytes. */ __s64 copy; }; struct uffdio_zeropage { struct uffdio_range range; #define UFFDIO_ZEROPAGE_MODE_DONTWAKE ((__u64)1<<0) __u64 mode; /* * "zeropage" is written by the ioctl and must be at the end: * the copy_from_user will not read the last 8 bytes. */ __s64 zeropage; }; #endif /* _LINUX_USERFAULTFD_H */
[+]
..
[-] sysinfo.h
[edit]
[-] mroute.h
[edit]
[-] if_eql.h
[edit]
[-] serial_core.h
[edit]
[-] membarrier.h
[edit]
[-] sched.h
[edit]
[-] mei.h
[edit]
[-] bfs_fs.h
[edit]
[-] atmlec.h
[edit]
[-] v4l2-mediabus.h
[edit]
[-] videodev2.h
[edit]
[-] screen_info.h
[edit]
[-] if_slip.h
[edit]
[-] uuid.h
[edit]
[-] version.h
[edit]
[-] ipv6_route.h
[edit]
[-] ixjuser.h
[edit]
[-] pkt_cls.h
[edit]
[-] atm_he.h
[edit]
[-] raw.h
[edit]
[-] msdos_fs.h
[edit]
[-] mman.h
[edit]
[-] aio_abi.h
[edit]
[-] reboot.h
[edit]
[-] snmp.h
[edit]
[-] atm_eni.h
[edit]
[-] netfilter_bridge.h
[edit]
[-] patchkey.h
[edit]
[-] string.h
[edit]
[-] socket.h
[edit]
[+]
spi
[-] auxvec.h
[edit]
[-] sockios.h
[edit]
[-] keyboard.h
[edit]
[-] scc.h
[edit]
[-] dn.h
[edit]
[-] unistd.h
[edit]
[-] oom.h
[edit]
[-] pkt_sched.h
[edit]
[-] if_phonet.h
[edit]
[+]
byteorder
[-] if_arcnet.h
[edit]
[+]
caif
[-] fd.h
[edit]
[-] radeonfb.h
[edit]
[-] qnx4_fs.h
[edit]
[-] nfs2.h
[edit]
[-] magic.h
[edit]
[-] target_core_user.h
[edit]
[-] atm_zatm.h
[edit]
[-] pci.h
[edit]
[-] nfsacl.h
[edit]
[-] if_packet.h
[edit]
[-] arcfb.h
[edit]
[-] nfs_mount.h
[edit]
[-] fib_rules.h
[edit]
[-] atmsap.h
[edit]
[+]
dvb
[-] cciss_defs.h
[edit]
[+]
netfilter_ipv6
[-] atmdev.h
[edit]
[-] kexec.h
[edit]
[-] ipc.h
[edit]
[-] sock_diag.h
[edit]
[+]
wimax
[-] serial.h
[edit]
[-] if_link.h
[edit]
[-] route.h
[edit]
[-] if_bonding.h
[edit]
[-] auto_fs.h
[edit]
[-] pg.h
[edit]
[-] l2tp.h
[edit]
[-] perf_event.h
[edit]
[-] tcp_metrics.h
[edit]
[-] v4l2-controls.h
[edit]
[-] personality.h
[edit]
[-] dcbnl.h
[edit]
[-] netfilter_arp.h
[edit]
[-] toshiba.h
[edit]
[-] memfd.h
[edit]
[-] resource.h
[edit]
[-] tipc.h
[edit]
[-] virtio_vsock.h
[edit]
[-] atm_tcp.h
[edit]
[-] cn_proc.h
[edit]
[-] utime.h
[edit]
[-] nbd.h
[edit]
[-] netfilter_ipv6.h
[edit]
[-] meye.h
[edit]
[-] gfs2_ondisk.h
[edit]
[-] som.h
[edit]
[-] ncp_mount.h
[edit]
[-] coda.h
[edit]
[-] hw_breakpoint.h
[edit]
[-] shm.h
[edit]
[-] wanrouter.h
[edit]
[-] kernel-page-flags.h
[edit]
[-] auto_fs4.h
[edit]
[-] ppp_defs.h
[edit]
[-] tty.h
[edit]
[-] sysctl.h
[edit]
[-] joystick.h
[edit]
[-] ip.h
[edit]
[-] jffs2.h
[edit]
[-] nfs3.h
[edit]
[-] if_infiniband.h
[edit]
[-] agpgart.h
[edit]
[+]
raid
[-] blkpg.h
[edit]
[-] virtio_ids.h
[edit]
[-] udp.h
[edit]
[-] swab.h
[edit]
[-] romfs_fs.h
[edit]
[-] fb.h
[edit]
[-] kvm_para.h
[edit]
[-] btrfs.h
[edit]
[-] efs_fs_sb.h
[edit]
[-] xfrm.h
[edit]
[-] iso_fs.h
[edit]
[-] serial_reg.h
[edit]
[-] virtio_gpu.h
[edit]
[-] sound.h
[edit]
[-] errno.h
[edit]
[-] kernelcapi.h
[edit]
[-] net_tstamp.h
[edit]
[-] isdnif.h
[edit]
[-] hiddev.h
[edit]
[-] ncp_fs.h
[edit]
[-] hdlc.h
[edit]
[-] fcntl.h
[edit]
[-] if.h
[edit]
[-] minix_fs.h
[edit]
[-] hdreg.h
[edit]
[-] virtio_9p.h
[edit]
[-] coff.h
[edit]
[-] elf-em.h
[edit]
[-] mqueue.h
[edit]
[+]
tc_ematch
[-] gameport.h
[edit]
[-] if_ether.h
[edit]
[-] if_addrlabel.h
[edit]
[-] ife.h
[edit]
[-] isdn_divertif.h
[edit]
[-] rds.h
[edit]
[-] fdreg.h
[edit]
[-] pmu.h
[edit]
[-] cuda.h
[edit]
[-] stat.h
[edit]
[-] virtio_net.h
[edit]
[-] posix_types.h
[edit]
[-] cyclades.h
[edit]
[-] baycom.h
[edit]
[-] ipv6.h
[edit]
[-] net_dropmon.h
[edit]
[-] ipmi_msgdefs.h
[edit]
[+]
netfilter_arp
[-] v4l2-subdev.h
[edit]
[-] vsockmon.h
[edit]
[-] neighbour.h
[edit]
[-] sctp.h
[edit]
[-] atmppp.h
[edit]
[-] usbdevice_fs.h
[edit]
[-] dm-ioctl.h
[edit]
[-] netconf.h
[edit]
[-] v4l2-dv-timings.h
[edit]
[-] chio.h
[edit]
[-] msg.h
[edit]
[+]
netfilter_ipv4
[-] netlink.h
[edit]
[-] genetlink.h
[edit]
[-] cgroupstats.h
[edit]
[-] i8k.h
[edit]
[-] cciss_ioctl.h
[edit]
[-] major.h
[edit]
[-] nfs_fs.h
[edit]
[-] rfkill.h
[edit]
[-] atm.h
[edit]
[-] fuse.h
[edit]
[-] fsl_hypervisor.h
[edit]
[-] atalk.h
[edit]
[-] ivtv.h
[edit]
[-] nfs4_mount.h
[edit]
[-] pps.h
[edit]
[-] nubus.h
[edit]
[-] ethtool.h
[edit]
[-] hpet.h
[edit]
[-] atmmpc.h
[edit]
[-] fou.h
[edit]
[-] dccp.h
[edit]
[-] if_pppox.h
[edit]
[-] media.h
[edit]
[-] dm-log-userspace.h
[edit]
[-] ndctl.h
[edit]
[-] wmi.h
[edit]
[-] timex.h
[edit]
[-] mii.h
[edit]
[-] kd.h
[edit]
[-] if_pppol2tp.h
[edit]
[-] uinput.h
[edit]
[-] time.h
[edit]
[-] fadvise.h
[edit]
[-] phonet.h
[edit]
[-] dlm_device.h
[edit]
[-] bpf_perf_event.h
[edit]
[-] quota.h
[edit]
[-] ppdev.h
[edit]
[-] ivtvfb.h
[edit]
[-] if_plip.h
[edit]
[-] net_namespace.h
[edit]
[-] ipmi.h
[edit]
[-] vhost.h
[edit]
[-] v4l2-common.h
[edit]
[-] ultrasound.h
[edit]
[-] lp.h
[edit]
[-] wireless.h
[edit]
[-] keyctl.h
[edit]
[-] atm_idt77105.h
[edit]
[-] bt-bmc.h
[edit]
[-] netrom.h
[edit]
[-] rtc.h
[edit]
[-] types.h
[edit]
[-] qnxtypes.h
[edit]
[-] affs_hardblocks.h
[edit]
[-] if_ppp.h
[edit]
[-] prctl.h
[edit]
[-] firewire-cdev.h
[edit]
[-] sdla.h
[edit]
[-] atmbr2684.h
[edit]
[-] falloc.h
[edit]
[-] connector.h
[edit]
[+]
mmc
[-] rtnetlink.h
[edit]
[-] tty_flags.h
[edit]
[-] bpf.h
[edit]
[-] watchdog.h
[edit]
[-] bsg.h
[edit]
[-] kernel.h
[edit]
[-] reiserfs_fs.h
[edit]
[+]
can
[-] selinux_netlink.h
[edit]
[-] hdlcdrv.h
[edit]
[-] filter.h
[edit]
[-] hidraw.h
[edit]
[-] icmp.h
[edit]
[-] uio.h
[edit]
[-] if_ltalk.h
[edit]
[-] ppp-ioctl.h
[edit]
[-] vtpm_proxy.h
[edit]
[-] elfcore.h
[edit]
[-] limits.h
[edit]
[-] if_tunnel.h
[edit]
[-] if_fddi.h
[edit]
[-] uvcvideo.h
[edit]
[-] ioctl.h
[edit]
[-] capi.h
[edit]
[-] nvme_ioctl.h
[edit]
[-] dlm.h
[edit]
[-] tiocl.h
[edit]
[-] inotify.h
[edit]
[-] poll.h
[edit]
[-] rose.h
[edit]
[-] if_hippi.h
[edit]
[-] matroxfb.h
[edit]
[-] i2o-dev.h
[edit]
[-] tipc_config.h
[edit]
[-] ipsec.h
[edit]
[-] dlm_netlink.h
[edit]
[-] serio.h
[edit]
[-] cdrom.h
[edit]
[-] fanotify.h
[edit]
[-] virtio_blk.h
[edit]
[-] atmioc.h
[edit]
[-] securebits.h
[edit]
[-] bpf_common.h
[edit]
[-] if_team.h
[edit]
[-] omapfb.h
[edit]
[-] pktcdvd.h
[edit]
[-] phantom.h
[edit]
[-] atmapi.h
[edit]
[-] hyperv.h
[edit]
[-] stddef.h
[edit]
[-] vt.h
[edit]
[-] cycx_cfm.h
[edit]
[-] parport.h
[edit]
[-] ptrace.h
[edit]
[-] nfs.h
[edit]
[-] if_bridge.h
[edit]
[+]
netfilter_bridge
[-] unix_diag.h
[edit]
[-] times.h
[edit]
[-] n_r3964.h
[edit]
[-] nl80211.h
[edit]
[-] kvm.h
[edit]
[-] virtio_ring.h
[edit]
[-] bpqether.h
[edit]
[-] ip6_tunnel.h
[edit]
[-] sem.h
[edit]
[-] llc.h
[edit]
[-] omap3isp.h
[edit]
[-] virtio_types.h
[edit]
[-] xattr.h
[edit]
[-] netfilter.h
[edit]
[-] edd.h
[edit]
[-] inet_diag.h
[edit]
[-] vfio.h
[edit]
[-] un.h
[edit]
[-] termios.h
[edit]
[+]
usb
[-] firewire-constants.h
[edit]
[-] nfs4.h
[edit]
[-] atmclip.h
[edit]
[-] devlink.h
[edit]
[-] ip_vs.h
[edit]
[-] nfc.h
[edit]
[-] flat.h
[edit]
[-] elf.h
[edit]
[-] if_x25.h
[edit]
[-] mdio.h
[edit]
[-] isdn_ppp.h
[edit]
[+]
isdn
[-] cm4000_cs.h
[edit]
[-] nvram.h
[edit]
[-] param.h
[edit]
[-] dlm_plock.h
[edit]
[-] virtio_balloon.h
[edit]
[-] telephony.h
[edit]
[-] dlmconstants.h
[edit]
[-] tcp.h
[edit]
[-] futex.h
[edit]
[-] virtio_scsi.h
[edit]
[-] net.h
[edit]
[-] sonypi.h
[edit]
[-] wait.h
[edit]
[-] apm_bios.h
[edit]
[-] if_macsec.h
[edit]
[+]
hsi
[-] gigaset_dev.h
[edit]
[-] capability.h
[edit]
[-] errqueue.h
[edit]
[+]
netfilter
[-] a.out.h
[edit]
[-] utsname.h
[edit]
[-] gen_stats.h
[edit]
[-] kdev_t.h
[edit]
[-] if_vlan.h
[edit]
[-] lwtunnel.h
[edit]
[-] uhid.h
[edit]
[-] i2c-dev.h
[edit]
[-] wimax.h
[edit]
[-] openvswitch.h
[edit]
[-] virtio_input.h
[edit]
[-] sonet.h
[edit]
[+]
hdlc
[-] ppp-comp.h
[edit]
[-] veth.h
[edit]
[-] atmsvc.h
[edit]
[-] netlink_diag.h
[edit]
[-] hid.h
[edit]
[-] const.h
[edit]
[-] psample.h
[edit]
[-] vm_sockets.h
[edit]
[-] i2c.h
[edit]
[-] synclink.h
[edit]
[-] if_arp.h
[edit]
[-] pfkeyv2.h
[edit]
[-] virtio_config.h
[edit]
[-] if_fc.h
[edit]
[-] eventpoll.h
[edit]
[-] binfmts.h
[edit]
[-] soundcard.h
[edit]
[-] in6.h
[edit]
[-] b1lli.h
[edit]
[-] suspend_ioctls.h
[edit]
[-] loop.h
[edit]
[-] seccomp.h
[edit]
[-] blktrace_api.h
[edit]
[-] adfs_fs.h
[edit]
[-] netdevice.h
[edit]
[-] virtio_console.h
[edit]
[-] dqblk_xfs.h
[edit]
[-] netfilter_decnet.h
[edit]
[-] mmtimer.h
[edit]
[-] can.h
[edit]
[-] adb.h
[edit]
[-] acct.h
[edit]
[-] ax25.h
[edit]
[-] coda_psdev.h
[edit]
[-] elf-fdpic.h
[edit]
[-] virtio_rng.h
[edit]
[-] signal.h
[edit]
[-] libc-compat.h
[edit]
[-] taskstats.h
[edit]
[-] ncp_no.h
[edit]
[-] ipx.h
[edit]
[-] userfaultfd.h
[edit]
[-] mempolicy.h
[edit]
[-] icmpv6.h
[edit]
[-] atmarp.h
[edit]
[-] if_frad.h
[edit]
[-] signalfd.h
[edit]
[-] irda.h
[edit]
[-] fiemap.h
[edit]
[-] virtio_pci.h
[edit]
[-] if_cablemodem.h
[edit]
[-] in_route.h
[edit]
[-] mpls.h
[edit]
[-] input.h
[edit]
[-] nfs_idmap.h
[edit]
[-] cramfs_fs.h
[edit]
[-] ptp_clock.h
[edit]
[-] audit.h
[edit]
[-] if_tun.h
[edit]
[-] igmp.h
[edit]
[-] if_alg.h
[edit]
[-] random.h
[edit]
[-] netfilter_ipv4.h
[edit]
[-] atm_nicstar.h
[edit]
[-] packet_diag.h
[edit]
[-] x25.h
[edit]
[+]
tc_act
[-] in.h
[edit]
[-] irqnr.h
[edit]
[-] ncp.h
[edit]
[-] reiserfs_xattr.h
[edit]
[+]
iio
[-] fs.h
[edit]
[-] map_to_7segment.h
[edit]
[+]
sunrpc
[-] if_addr.h
[edit]
[-] mtio.h
[edit]
[+]
nfsd
[-] hysdn_if.h
[edit]
[-] pci_regs.h
[edit]
[-] mroute6.h
[edit]
[-] isdn.h
[edit]
[-] udf_fs_i.h
[edit]