Upgrade userfaultfd-sys to 0.5.0 am: f1ac6acd0b am: e8235061b2

Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/userfaultfd-sys/+/2878121

Change-Id: Ic5903d2c5a417f5a93c441c413d11d7248fee137
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/.cargo_vcs_info.json b/.cargo_vcs_info.json
index 9652dcc..fd6166e 100644
--- a/.cargo_vcs_info.json
+++ b/.cargo_vcs_info.json
@@ -1,6 +1,6 @@
 {
   "git": {
-    "sha1": "cb2cd6d359b715e24144242e4580679897268ffd"
+    "sha1": "afcbd90872e7fa0fca2c416e786e4d62e948bced"
   },
   "path_in_vcs": "userfaultfd-sys"
 }
\ No newline at end of file
diff --git a/Android.bp b/Android.bp
index 7695561..5b17a3a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -44,7 +44,7 @@
     host_supported: true,
     crate_name: "userfaultfd_sys",
     cargo_env_compat: true,
-    cargo_pkg_version: "0.4.3",
+    cargo_pkg_version: "0.5.0",
     srcs: ["src/lib.rs"],
     edition: "2018",
     features: ["default"],
diff --git a/Cargo.toml b/Cargo.toml
index eac1cb3..110da27 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@
 [package]
 edition = "2018"
 name = "userfaultfd-sys"
-version = "0.4.3"
+version = "0.5.0"
 authors = ["The Wasmtime Project Developers"]
 build = "build.rs"
 description = "Low-level bindings for userfaultfd functionality on Linux."
@@ -23,7 +23,7 @@
 version = "^1.0.0"
 
 [build-dependencies.bindgen]
-version = "^0.60.1"
+version = "^0.68.1"
 features = ["runtime"]
 default-features = false
 
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index 840d295..9062ce7 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
 [package]
 name = "userfaultfd-sys"
-version = "0.4.3"
+version = "0.5.0"
 authors = ["The Wasmtime Project Developers"]
 edition = "2018"
 license = "MIT OR Apache-2.0"
@@ -13,7 +13,7 @@
 cfg-if = "^1.0.0"
 
 [build-dependencies]
-bindgen = { version = "^0.60.1", default-features = false, features = ["runtime"]  }
+bindgen = { version = "^0.68.1", default-features = false, features = ["runtime"]  }
 cc = "1.0"
 
 [features]
diff --git a/METADATA b/METADATA
index 92f7519..fa44b09 100644
--- a/METADATA
+++ b/METADATA
@@ -1,23 +1,20 @@
 # This project was upgraded with external_updater.
 # Usage: tools/external_updater/updater.sh update rust/crates/userfaultfd-sys
-# For more info, check https://cs.android.com/android/platform/superproject/+/master:tools/external_updater/README.md
+# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
 
 name: "userfaultfd-sys"
 description: "Low-level bindings for userfaultfd functionality on Linux."
 third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://crates.io/crates/userfaultfd-sys"
-  }
-  url {
-    type: ARCHIVE
-    value: "https://static.crates.io/crates/userfaultfd-sys/userfaultfd-sys-0.4.3.crate"
-  }
-  version: "0.4.3"
   license_type: NOTICE
   last_upgrade_date {
     year: 2023
-    month: 3
-    day: 30
+    month: 12
+    day: 16
+  }
+  homepage: "https://crates.io/crates/userfaultfd-sys"
+  identifier {
+    type: "Archive"
+    value: "https://static.crates.io/crates/userfaultfd-sys/userfaultfd-sys-0.5.0.crate"
+    version: "0.5.0"
   }
 }
diff --git a/src/consts.c b/src/consts.c
index e19ca74..df78dbb 100644
--- a/src/consts.c
+++ b/src/consts.c
@@ -69,3 +69,7 @@
 #ifdef UFFDIO_WRITEPROTECT
 const __u32 _const_UFFDIO_WRITEPROTECT = UFFDIO_WRITEPROTECT;
 #endif
+
+#ifdef USERFAULTFD_IOC
+const __u32 _const_USERFAULTFD_IOC = USERFAULTFD_IOC;
+#endif
diff --git a/src/out/bindings.rs b/src/out/bindings.rs
index 45e46fb..cff34be 100644
--- a/src/out/bindings.rs
+++ b/src/out/bindings.rs
@@ -1,5 +1,6 @@
-/* automatically generated by rust-bindgen 0.60.1 */
+/* automatically generated by rust-bindgen 0.68.1 */
 
+pub const USERFAULTFD_IOC: u32 = 170;
 pub const _UFFDIO_REGISTER: u64 = 0;
 pub const _UFFDIO_UNREGISTER: u64 = 1;
 pub const _UFFDIO_WAKE: u64 = 2;
@@ -30,6 +31,7 @@
 pub const UFFD_FEATURE_MINOR_SHMEM: u64 = 1024;
 pub const UFFD_FEATURE_EXACT_ADDRESS: u64 = 2048;
 pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u64 = 4096;
+pub const UFFD_FEATURE_WP_UNPOPULATED: u64 = 8192;
 pub const UFFD_USER_MODE_ONLY: u32 = 1;
 pub type __s8 = ::std::os::raw::c_schar;
 pub type __u8 = ::std::os::raw::c_uchar;
@@ -46,6 +48,8 @@
 }
 #[test]
 fn bindgen_test_layout___kernel_fd_set() {
+    const UNINIT: ::std::mem::MaybeUninit<__kernel_fd_set> = ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<__kernel_fd_set>(),
         128usize,
@@ -56,23 +60,16 @@
         8usize,
         concat!("Alignment of ", stringify!(__kernel_fd_set))
     );
-    fn test_field_fds_bits() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<__kernel_fd_set>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).fds_bits) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(__kernel_fd_set),
-                "::",
-                stringify!(fds_bits)
-            )
-        );
-    }
-    test_field_fds_bits();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).fds_bits) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__kernel_fd_set),
+            "::",
+            stringify!(fds_bits)
+        )
+    );
 }
 pub type __kernel_sighandler_t =
     ::std::option::Option<unsafe extern "C" fn(arg1: ::std::os::raw::c_int)>;
@@ -103,6 +100,8 @@
 }
 #[test]
 fn bindgen_test_layout___kernel_fsid_t() {
+    const UNINIT: ::std::mem::MaybeUninit<__kernel_fsid_t> = ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<__kernel_fsid_t>(),
         8usize,
@@ -113,23 +112,16 @@
         4usize,
         concat!("Alignment of ", stringify!(__kernel_fsid_t))
     );
-    fn test_field_val() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<__kernel_fsid_t>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).val) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(__kernel_fsid_t),
-                "::",
-                stringify!(val)
-            )
-        );
-    }
-    test_field_val();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).val) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__kernel_fsid_t),
+            "::",
+            stringify!(val)
+        )
+    );
 }
 pub type __kernel_off_t = __kernel_long_t;
 pub type __kernel_loff_t = ::std::os::raw::c_longlong;
@@ -142,6 +134,8 @@
 pub type __kernel_caddr_t = *mut ::std::os::raw::c_char;
 pub type __kernel_uid16_t = ::std::os::raw::c_ushort;
 pub type __kernel_gid16_t = ::std::os::raw::c_ushort;
+pub type __s128 = i128;
+pub type __u128 = u128;
 pub type __poll_t = ::std::os::raw::c_uint;
 #[repr(C, packed)]
 #[derive(Copy, Clone)]
@@ -175,6 +169,9 @@
 }
 #[test]
 fn bindgen_test_layout_uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1() {
+    const UNINIT: ::std::mem::MaybeUninit<uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1> =
+        ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1>(),
         4usize,
@@ -191,28 +188,22 @@
             stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1)
         )
     );
-    fn test_field_ptid() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<
-                    uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-                >::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).ptid) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1),
-                "::",
-                stringify!(ptid)
-            )
-        );
-    }
-    test_field_ptid();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).ptid) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1),
+            "::",
+            stringify!(ptid)
+        )
+    );
 }
 #[test]
 fn bindgen_test_layout_uffd_msg__bindgen_ty_1__bindgen_ty_1() {
+    const UNINIT: ::std::mem::MaybeUninit<uffd_msg__bindgen_ty_1__bindgen_ty_1> =
+        ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffd_msg__bindgen_ty_1__bindgen_ty_1>(),
         24usize,
@@ -229,60 +220,36 @@
             stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_1)
         )
     );
-    fn test_field_flags() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_1>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_1),
-                "::",
-                stringify!(flags)
-            )
-        );
-    }
-    test_field_flags();
-    fn test_field_address() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_1>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).address) as usize - ptr as usize
-            },
-            8usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_1),
-                "::",
-                stringify!(address)
-            )
-        );
-    }
-    test_field_address();
-    fn test_field_feat() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_1>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).feat) as usize - ptr as usize
-            },
-            16usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_1),
-                "::",
-                stringify!(feat)
-            )
-        );
-    }
-    test_field_feat();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_1),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).address) as usize - ptr as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_1),
+            "::",
+            stringify!(address)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).feat) as usize - ptr as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_1),
+            "::",
+            stringify!(feat)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -291,6 +258,9 @@
 }
 #[test]
 fn bindgen_test_layout_uffd_msg__bindgen_ty_1__bindgen_ty_2() {
+    const UNINIT: ::std::mem::MaybeUninit<uffd_msg__bindgen_ty_1__bindgen_ty_2> =
+        ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffd_msg__bindgen_ty_1__bindgen_ty_2>(),
         4usize,
@@ -307,24 +277,16 @@
             stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_2)
         )
     );
-    fn test_field_ufd() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_2>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).ufd) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_2),
-                "::",
-                stringify!(ufd)
-            )
-        );
-    }
-    test_field_ufd();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).ufd) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_2),
+            "::",
+            stringify!(ufd)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -335,6 +297,9 @@
 }
 #[test]
 fn bindgen_test_layout_uffd_msg__bindgen_ty_1__bindgen_ty_3() {
+    const UNINIT: ::std::mem::MaybeUninit<uffd_msg__bindgen_ty_1__bindgen_ty_3> =
+        ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffd_msg__bindgen_ty_1__bindgen_ty_3>(),
         24usize,
@@ -351,60 +316,36 @@
             stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_3)
         )
     );
-    fn test_field_from() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_3>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).from) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_3),
-                "::",
-                stringify!(from)
-            )
-        );
-    }
-    test_field_from();
-    fn test_field_to() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_3>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).to) as usize - ptr as usize
-            },
-            8usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_3),
-                "::",
-                stringify!(to)
-            )
-        );
-    }
-    test_field_to();
-    fn test_field_len() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_3>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize
-            },
-            16usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_3),
-                "::",
-                stringify!(len)
-            )
-        );
-    }
-    test_field_len();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).from) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_3),
+            "::",
+            stringify!(from)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).to) as usize - ptr as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_3),
+            "::",
+            stringify!(to)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_3),
+            "::",
+            stringify!(len)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -414,6 +355,9 @@
 }
 #[test]
 fn bindgen_test_layout_uffd_msg__bindgen_ty_1__bindgen_ty_4() {
+    const UNINIT: ::std::mem::MaybeUninit<uffd_msg__bindgen_ty_1__bindgen_ty_4> =
+        ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffd_msg__bindgen_ty_1__bindgen_ty_4>(),
         16usize,
@@ -430,42 +374,26 @@
             stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_4)
         )
     );
-    fn test_field_start() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_4>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_4),
-                "::",
-                stringify!(start)
-            )
-        );
-    }
-    test_field_start();
-    fn test_field_end() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_4>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).end) as usize - ptr as usize
-            },
-            8usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_4),
-                "::",
-                stringify!(end)
-            )
-        );
-    }
-    test_field_end();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_4),
+            "::",
+            stringify!(start)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).end) as usize - ptr as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_4),
+            "::",
+            stringify!(end)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -476,6 +404,9 @@
 }
 #[test]
 fn bindgen_test_layout_uffd_msg__bindgen_ty_1__bindgen_ty_5() {
+    const UNINIT: ::std::mem::MaybeUninit<uffd_msg__bindgen_ty_1__bindgen_ty_5> =
+        ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffd_msg__bindgen_ty_1__bindgen_ty_5>(),
         24usize,
@@ -492,63 +423,42 @@
             stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_5)
         )
     );
-    fn test_field_reserved1() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_5>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_5),
-                "::",
-                stringify!(reserved1)
-            )
-        );
-    }
-    test_field_reserved1();
-    fn test_field_reserved2() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_5>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize
-            },
-            8usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_5),
-                "::",
-                stringify!(reserved2)
-            )
-        );
-    }
-    test_field_reserved2();
-    fn test_field_reserved3() {
-        assert_eq!(
-            unsafe {
-                let uninit =
-                    ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1__bindgen_ty_5>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).reserved3) as usize - ptr as usize
-            },
-            16usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_5),
-                "::",
-                stringify!(reserved3)
-            )
-        );
-    }
-    test_field_reserved3();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_5),
+            "::",
+            stringify!(reserved1)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_5),
+            "::",
+            stringify!(reserved2)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).reserved3) as usize - ptr as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1__bindgen_ty_5),
+            "::",
+            stringify!(reserved3)
+        )
+    );
 }
 #[test]
 fn bindgen_test_layout_uffd_msg__bindgen_ty_1() {
+    const UNINIT: ::std::mem::MaybeUninit<uffd_msg__bindgen_ty_1> =
+        ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffd_msg__bindgen_ty_1>(),
         24usize,
@@ -559,94 +469,61 @@
         8usize,
         concat!("Alignment of ", stringify!(uffd_msg__bindgen_ty_1))
     );
-    fn test_field_pagefault() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).pagefault) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1),
-                "::",
-                stringify!(pagefault)
-            )
-        );
-    }
-    test_field_pagefault();
-    fn test_field_fork() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).fork) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1),
-                "::",
-                stringify!(fork)
-            )
-        );
-    }
-    test_field_fork();
-    fn test_field_remap() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).remap) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1),
-                "::",
-                stringify!(remap)
-            )
-        );
-    }
-    test_field_remap();
-    fn test_field_remove() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).remove) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1),
-                "::",
-                stringify!(remove)
-            )
-        );
-    }
-    test_field_remove();
-    fn test_field_reserved() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffd_msg__bindgen_ty_1>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg__bindgen_ty_1),
-                "::",
-                stringify!(reserved)
-            )
-        );
-    }
-    test_field_reserved();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).pagefault) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1),
+            "::",
+            stringify!(pagefault)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).fork) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1),
+            "::",
+            stringify!(fork)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).remap) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1),
+            "::",
+            stringify!(remap)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).remove) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1),
+            "::",
+            stringify!(remove)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg__bindgen_ty_1),
+            "::",
+            stringify!(reserved)
+        )
+    );
 }
 #[test]
 fn bindgen_test_layout_uffd_msg() {
+    const UNINIT: ::std::mem::MaybeUninit<uffd_msg> = ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffd_msg>(),
         32usize,
@@ -657,91 +534,56 @@
         1usize,
         concat!("Alignment of ", stringify!(uffd_msg))
     );
-    fn test_field_event() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffd_msg>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).event) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg),
-                "::",
-                stringify!(event)
-            )
-        );
-    }
-    test_field_event();
-    fn test_field_reserved1() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffd_msg>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize
-            },
-            1usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg),
-                "::",
-                stringify!(reserved1)
-            )
-        );
-    }
-    test_field_reserved1();
-    fn test_field_reserved2() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffd_msg>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize
-            },
-            2usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg),
-                "::",
-                stringify!(reserved2)
-            )
-        );
-    }
-    test_field_reserved2();
-    fn test_field_reserved3() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffd_msg>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).reserved3) as usize - ptr as usize
-            },
-            4usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg),
-                "::",
-                stringify!(reserved3)
-            )
-        );
-    }
-    test_field_reserved3();
-    fn test_field_arg() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffd_msg>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).arg) as usize - ptr as usize
-            },
-            8usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffd_msg),
-                "::",
-                stringify!(arg)
-            )
-        );
-    }
-    test_field_arg();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).event) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg),
+            "::",
+            stringify!(event)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).reserved1) as usize - ptr as usize },
+        1usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg),
+            "::",
+            stringify!(reserved1)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).reserved2) as usize - ptr as usize },
+        2usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg),
+            "::",
+            stringify!(reserved2)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).reserved3) as usize - ptr as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg),
+            "::",
+            stringify!(reserved3)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).arg) as usize - ptr as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffd_msg),
+            "::",
+            stringify!(arg)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -752,6 +594,8 @@
 }
 #[test]
 fn bindgen_test_layout_uffdio_api() {
+    const UNINIT: ::std::mem::MaybeUninit<uffdio_api> = ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffdio_api>(),
         24usize,
@@ -762,57 +606,36 @@
         8usize,
         concat!("Alignment of ", stringify!(uffdio_api))
     );
-    fn test_field_api() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_api>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).api) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_api),
-                "::",
-                stringify!(api)
-            )
-        );
-    }
-    test_field_api();
-    fn test_field_features() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_api>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).features) as usize - ptr as usize
-            },
-            8usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_api),
-                "::",
-                stringify!(features)
-            )
-        );
-    }
-    test_field_features();
-    fn test_field_ioctls() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_api>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).ioctls) as usize - ptr as usize
-            },
-            16usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_api),
-                "::",
-                stringify!(ioctls)
-            )
-        );
-    }
-    test_field_ioctls();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).api) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_api),
+            "::",
+            stringify!(api)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).features) as usize - ptr as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_api),
+            "::",
+            stringify!(features)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).ioctls) as usize - ptr as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_api),
+            "::",
+            stringify!(ioctls)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -822,6 +645,8 @@
 }
 #[test]
 fn bindgen_test_layout_uffdio_range() {
+    const UNINIT: ::std::mem::MaybeUninit<uffdio_range> = ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffdio_range>(),
         16usize,
@@ -832,40 +657,26 @@
         8usize,
         concat!("Alignment of ", stringify!(uffdio_range))
     );
-    fn test_field_start() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_range>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_range),
-                "::",
-                stringify!(start)
-            )
-        );
-    }
-    test_field_start();
-    fn test_field_len() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_range>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize
-            },
-            8usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_range),
-                "::",
-                stringify!(len)
-            )
-        );
-    }
-    test_field_len();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_range),
+            "::",
+            stringify!(start)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_range),
+            "::",
+            stringify!(len)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -876,6 +687,8 @@
 }
 #[test]
 fn bindgen_test_layout_uffdio_register() {
+    const UNINIT: ::std::mem::MaybeUninit<uffdio_register> = ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffdio_register>(),
         32usize,
@@ -886,57 +699,36 @@
         8usize,
         concat!("Alignment of ", stringify!(uffdio_register))
     );
-    fn test_field_range() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_register>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_register),
-                "::",
-                stringify!(range)
-            )
-        );
-    }
-    test_field_range();
-    fn test_field_mode() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_register>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize
-            },
-            16usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_register),
-                "::",
-                stringify!(mode)
-            )
-        );
-    }
-    test_field_mode();
-    fn test_field_ioctls() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_register>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).ioctls) as usize - ptr as usize
-            },
-            24usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_register),
-                "::",
-                stringify!(ioctls)
-            )
-        );
-    }
-    test_field_ioctls();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_register),
+            "::",
+            stringify!(range)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_register),
+            "::",
+            stringify!(mode)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).ioctls) as usize - ptr as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_register),
+            "::",
+            stringify!(ioctls)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -949,6 +741,8 @@
 }
 #[test]
 fn bindgen_test_layout_uffdio_copy() {
+    const UNINIT: ::std::mem::MaybeUninit<uffdio_copy> = ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffdio_copy>(),
         40usize,
@@ -959,91 +753,56 @@
         8usize,
         concat!("Alignment of ", stringify!(uffdio_copy))
     );
-    fn test_field_dst() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_copy>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).dst) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_copy),
-                "::",
-                stringify!(dst)
-            )
-        );
-    }
-    test_field_dst();
-    fn test_field_src() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_copy>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).src) as usize - ptr as usize
-            },
-            8usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_copy),
-                "::",
-                stringify!(src)
-            )
-        );
-    }
-    test_field_src();
-    fn test_field_len() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_copy>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize
-            },
-            16usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_copy),
-                "::",
-                stringify!(len)
-            )
-        );
-    }
-    test_field_len();
-    fn test_field_mode() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_copy>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize
-            },
-            24usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_copy),
-                "::",
-                stringify!(mode)
-            )
-        );
-    }
-    test_field_mode();
-    fn test_field_copy() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_copy>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).copy) as usize - ptr as usize
-            },
-            32usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_copy),
-                "::",
-                stringify!(copy)
-            )
-        );
-    }
-    test_field_copy();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).dst) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_copy),
+            "::",
+            stringify!(dst)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).src) as usize - ptr as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_copy),
+            "::",
+            stringify!(src)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_copy),
+            "::",
+            stringify!(len)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_copy),
+            "::",
+            stringify!(mode)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).copy) as usize - ptr as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_copy),
+            "::",
+            stringify!(copy)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -1054,6 +813,8 @@
 }
 #[test]
 fn bindgen_test_layout_uffdio_zeropage() {
+    const UNINIT: ::std::mem::MaybeUninit<uffdio_zeropage> = ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffdio_zeropage>(),
         32usize,
@@ -1064,57 +825,36 @@
         8usize,
         concat!("Alignment of ", stringify!(uffdio_zeropage))
     );
-    fn test_field_range() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_zeropage>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_zeropage),
-                "::",
-                stringify!(range)
-            )
-        );
-    }
-    test_field_range();
-    fn test_field_mode() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_zeropage>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize
-            },
-            16usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_zeropage),
-                "::",
-                stringify!(mode)
-            )
-        );
-    }
-    test_field_mode();
-    fn test_field_zeropage() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_zeropage>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).zeropage) as usize - ptr as usize
-            },
-            24usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_zeropage),
-                "::",
-                stringify!(zeropage)
-            )
-        );
-    }
-    test_field_zeropage();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_zeropage),
+            "::",
+            stringify!(range)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_zeropage),
+            "::",
+            stringify!(mode)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).zeropage) as usize - ptr as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_zeropage),
+            "::",
+            stringify!(zeropage)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -1124,6 +864,8 @@
 }
 #[test]
 fn bindgen_test_layout_uffdio_writeprotect() {
+    const UNINIT: ::std::mem::MaybeUninit<uffdio_writeprotect> = ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffdio_writeprotect>(),
         24usize,
@@ -1134,40 +876,26 @@
         8usize,
         concat!("Alignment of ", stringify!(uffdio_writeprotect))
     );
-    fn test_field_range() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_writeprotect>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_writeprotect),
-                "::",
-                stringify!(range)
-            )
-        );
-    }
-    test_field_range();
-    fn test_field_mode() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_writeprotect>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize
-            },
-            16usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_writeprotect),
-                "::",
-                stringify!(mode)
-            )
-        );
-    }
-    test_field_mode();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_writeprotect),
+            "::",
+            stringify!(range)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_writeprotect),
+            "::",
+            stringify!(mode)
+        )
+    );
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -1178,6 +906,8 @@
 }
 #[test]
 fn bindgen_test_layout_uffdio_continue() {
+    const UNINIT: ::std::mem::MaybeUninit<uffdio_continue> = ::std::mem::MaybeUninit::uninit();
+    let ptr = UNINIT.as_ptr();
     assert_eq!(
         ::std::mem::size_of::<uffdio_continue>(),
         32usize,
@@ -1188,55 +918,34 @@
         8usize,
         concat!("Alignment of ", stringify!(uffdio_continue))
     );
-    fn test_field_range() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_continue>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize
-            },
-            0usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_continue),
-                "::",
-                stringify!(range)
-            )
-        );
-    }
-    test_field_range();
-    fn test_field_mode() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_continue>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize
-            },
-            16usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_continue),
-                "::",
-                stringify!(mode)
-            )
-        );
-    }
-    test_field_mode();
-    fn test_field_mapped() {
-        assert_eq!(
-            unsafe {
-                let uninit = ::std::mem::MaybeUninit::<uffdio_continue>::uninit();
-                let ptr = uninit.as_ptr();
-                ::std::ptr::addr_of!((*ptr).mapped) as usize - ptr as usize
-            },
-            24usize,
-            concat!(
-                "Offset of field: ",
-                stringify!(uffdio_continue),
-                "::",
-                stringify!(mapped)
-            )
-        );
-    }
-    test_field_mapped();
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_continue),
+            "::",
+            stringify!(range)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_continue),
+            "::",
+            stringify!(mode)
+        )
+    );
+    assert_eq!(
+        unsafe { ::std::ptr::addr_of!((*ptr).mapped) as usize - ptr as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(uffdio_continue),
+            "::",
+            stringify!(mapped)
+        )
+    );
 }
diff --git a/wrapper.h b/wrapper.h
index 42ab19c..7cffde4 100644
--- a/wrapper.h
+++ b/wrapper.h
@@ -4,3 +4,9 @@
 // userfaultfd-sys has the same exports on all kernels
 #define UFFD_USER_MODE_ONLY 1
 #endif
+
+
+#ifndef USERFAULTFD_IOC
+// Similarly, the ioctl() for `/dev/userfaultfd` is introduced with Linux 6.1.
+#define USERFAULTFD_IOC 0xAA
+#endif