aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/linux-headers/linux/userfaultfd.h
diff options
context:
space:
mode:
authororivej <orivej@yandex-team.ru>2022-02-10 16:44:49 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:44:49 +0300
commit718c552901d703c502ccbefdfc3c9028d608b947 (patch)
tree46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/linux-headers/linux/userfaultfd.h
parente9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff)
downloadydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/linux-headers/linux/userfaultfd.h')
-rw-r--r--contrib/libs/linux-headers/linux/userfaultfd.h520
1 files changed, 260 insertions, 260 deletions
diff --git a/contrib/libs/linux-headers/linux/userfaultfd.h b/contrib/libs/linux-headers/linux/userfaultfd.h
index 8d3996eb82..e90de54268 100644
--- a/contrib/libs/linux-headers/linux/userfaultfd.h
+++ b/contrib/libs/linux-headers/linux/userfaultfd.h
@@ -1,260 +1,260 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-/*
- * 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_PAGEFAULT_FLAG_WP | \
- 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 | \
- (__u64)1 << _UFFDIO_WRITEPROTECT)
-#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_WRITEPROTECT (0x06)
-#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)
-#define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, \
- struct uffdio_writeprotect)
-
-/* 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;
-#define UFFDIO_COPY_MODE_DONTWAKE ((__u64)1<<0)
- /*
- * UFFDIO_COPY_MODE_WP will map the page write protected on
- * the fly. UFFDIO_COPY_MODE_WP is available only if the
- * write protected ioctl is implemented for the range
- * according to the uffdio_register.ioctls.
- */
-#define UFFDIO_COPY_MODE_WP ((__u64)1<<1)
- __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;
-};
-
-struct uffdio_writeprotect {
- struct uffdio_range range;
-/*
- * UFFDIO_WRITEPROTECT_MODE_WP: set the flag to write protect a range,
- * unset the flag to undo protection of a range which was previously
- * write protected.
- *
- * UFFDIO_WRITEPROTECT_MODE_DONTWAKE: set the flag to avoid waking up
- * any wait thread after the operation succeeds.
- *
- * NOTE: Write protecting a region (WP=1) is unrelated to page faults,
- * therefore DONTWAKE flag is meaningless with WP=1. Removing write
- * protection (WP=0) in response to a page fault wakes the faulting
- * task unless DONTWAKE is set.
- */
-#define UFFDIO_WRITEPROTECT_MODE_WP ((__u64)1<<0)
-#define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64)1<<1)
- __u64 mode;
-};
-
-#endif /* _LINUX_USERFAULTFD_H */
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+/*
+ * 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_PAGEFAULT_FLAG_WP | \
+ 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 | \
+ (__u64)1 << _UFFDIO_WRITEPROTECT)
+#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_WRITEPROTECT (0x06)
+#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)
+#define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, \
+ struct uffdio_writeprotect)
+
+/* 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;
+#define UFFDIO_COPY_MODE_DONTWAKE ((__u64)1<<0)
+ /*
+ * UFFDIO_COPY_MODE_WP will map the page write protected on
+ * the fly. UFFDIO_COPY_MODE_WP is available only if the
+ * write protected ioctl is implemented for the range
+ * according to the uffdio_register.ioctls.
+ */
+#define UFFDIO_COPY_MODE_WP ((__u64)1<<1)
+ __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;
+};
+
+struct uffdio_writeprotect {
+ struct uffdio_range range;
+/*
+ * UFFDIO_WRITEPROTECT_MODE_WP: set the flag to write protect a range,
+ * unset the flag to undo protection of a range which was previously
+ * write protected.
+ *
+ * UFFDIO_WRITEPROTECT_MODE_DONTWAKE: set the flag to avoid waking up
+ * any wait thread after the operation succeeds.
+ *
+ * NOTE: Write protecting a region (WP=1) is unrelated to page faults,
+ * therefore DONTWAKE flag is meaningless with WP=1. Removing write
+ * protection (WP=0) in response to a page fault wakes the faulting
+ * task unless DONTWAKE is set.
+ */
+#define UFFDIO_WRITEPROTECT_MODE_WP ((__u64)1<<0)
+#define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64)1<<1)
+ __u64 mode;
+};
+
+#endif /* _LINUX_USERFAULTFD_H */