diff a/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/io_uring_params.java b/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/io_uring_params.java
--- /dev/null
+++ b/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/io_uring_params.java
@@ -0,0 +1,307 @@
+// Generated by jextract
+
+package jdk.internal.ffi.generated.iouring;
+
+import java.lang.invoke.*;
+import java.lang.foreign.*;
+import java.nio.ByteOrder;
+import java.util.*;
+import java.util.function.*;
+import java.util.stream.*;
+
+import static java.lang.foreign.ValueLayout.*;
+import static java.lang.foreign.MemoryLayout.PathElement.*;
+
+/**
+ * {@snippet lang=c :
+ * struct io_uring_params {
+ *     __u32 sq_entries;
+ *     __u32 cq_entries;
+ *     __u32 flags;
+ *     __u32 sq_thread_cpu;
+ *     __u32 sq_thread_idle;
+ *     __u32 features;
+ *     __u32 wq_fd;
+ *     __u32 resv[3];
+ *     struct io_sqring_offsets sq_off;
+ *     struct io_cqring_offsets cq_off;
+ * }
+ * }
+ */
+@SuppressWarnings("restricted") public class io_uring_params {
+
+    io_uring_params() {
+        // Suppresses public default constructor, ensuring non-instantiability,
+        // but allows generated subclasses in same package.
+    }
+
+    private static final GroupLayout $LAYOUT = MemoryLayout.structLayout(
+        iouring_h.C_INT.withName("sq_entries"),
+        iouring_h.C_INT.withName("cq_entries"),
+        iouring_h.C_INT.withName("flags"),
+        iouring_h.C_INT.withName("sq_thread_cpu"),
+        iouring_h.C_INT.withName("sq_thread_idle"),
+        iouring_h.C_INT.withName("features"),
+        iouring_h.C_INT.withName("wq_fd"),
+        MemoryLayout.sequenceLayout(3, iouring_h.C_INT).withName("resv"),
+        io_sqring_offsets.$LAYOUT().withName("sq_off"),
+        io_cqring_offsets.$LAYOUT().withName("cq_off")
+    ).withName("io_uring_params");
+
+    public static final GroupLayout $LAYOUT() {
+        return $LAYOUT;
+    }
+
+    private static final long sq_entries$OFFSET = 0;
+    private static final OfInt sq_entries$LAYOUT = (OfInt)$LAYOUT.select(groupElement("sq_entries"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 sq_entries
+     * }
+     */
+    public static int sq_entries(MemorySegment struct) {
+        return struct.get(sq_entries$LAYOUT, sq_entries$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 sq_entries
+     * }
+     */
+    public static void sq_entries(MemorySegment struct, int fieldValue) {
+        struct.set(sq_entries$LAYOUT, sq_entries$OFFSET, fieldValue);
+    }
+
+    private static final long cq_entries$OFFSET = 4;
+    private static final OfInt cq_entries$LAYOUT = (OfInt)$LAYOUT.select(groupElement("cq_entries"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 cq_entries
+     * }
+     */
+    public static int cq_entries(MemorySegment struct) {
+        return struct.get(cq_entries$LAYOUT, cq_entries$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 cq_entries
+     * }
+     */
+    public static void cq_entries(MemorySegment struct, int fieldValue) {
+        struct.set(cq_entries$LAYOUT, cq_entries$OFFSET, fieldValue);
+    }
+
+    private static final long flags$OFFSET = 8;
+    private static final OfInt flags$LAYOUT = (OfInt)$LAYOUT.select(groupElement("flags"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 flags
+     * }
+     */
+    public static int flags(MemorySegment struct) {
+        return struct.get(flags$LAYOUT, flags$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 flags
+     * }
+     */
+    public static void flags(MemorySegment struct, int fieldValue) {
+        struct.set(flags$LAYOUT, flags$OFFSET, fieldValue);
+    }
+
+    private static final long sq_thread_cpu$OFFSET = 12;
+    private static final OfInt sq_thread_cpu$LAYOUT = (OfInt)$LAYOUT.select(groupElement("sq_thread_cpu"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 sq_thread_cpu
+     * }
+     */
+    public static int sq_thread_cpu(MemorySegment struct) {
+        return struct.get(sq_thread_cpu$LAYOUT, sq_thread_cpu$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 sq_thread_cpu
+     * }
+     */
+    public static void sq_thread_cpu(MemorySegment struct, int fieldValue) {
+        struct.set(sq_thread_cpu$LAYOUT, sq_thread_cpu$OFFSET, fieldValue);
+    }
+
+    private static final long sq_thread_idle$OFFSET = 16;
+    private static final OfInt sq_thread_idle$LAYOUT = (OfInt)$LAYOUT.select(groupElement("sq_thread_idle"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 sq_thread_idle
+     * }
+     */
+    public static int sq_thread_idle(MemorySegment struct) {
+        return struct.get(sq_thread_idle$LAYOUT, sq_thread_idle$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 sq_thread_idle
+     * }
+     */
+    public static void sq_thread_idle(MemorySegment struct, int fieldValue) {
+        struct.set(sq_thread_idle$LAYOUT, sq_thread_idle$OFFSET, fieldValue);
+    }
+
+    private static final long features$OFFSET = 20;
+    private static final OfInt features$LAYOUT = (OfInt)$LAYOUT.select(groupElement("features"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 features
+     * }
+     */
+    public static int features(MemorySegment struct) {
+        return struct.get(features$LAYOUT, features$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 features
+     * }
+     */
+    public static void features(MemorySegment struct, int fieldValue) {
+        struct.set(features$LAYOUT, features$OFFSET, fieldValue);
+    }
+
+    private static final long wq_fd$OFFSET = 24;
+    private static final OfInt wq_fd$LAYOUT = (OfInt)$LAYOUT.select(groupElement("wq_fd"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 wq_fd
+     * }
+     */
+    public static int wq_fd(MemorySegment struct) {
+        return struct.get(wq_fd$LAYOUT, wq_fd$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 wq_fd
+     * }
+     */
+    public static void wq_fd(MemorySegment struct, int fieldValue) {
+        struct.set(wq_fd$LAYOUT, wq_fd$OFFSET, fieldValue);
+    }
+
+    private static final long resv$OFFSET = 28;
+    private static final long resv$SIZE = 12;
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 resv[3]
+     * }
+     */
+    public static MemorySegment resv(MemorySegment struct) {
+        return struct.asSlice(resv$OFFSET, resv$SIZE);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 resv[3]
+     * }
+     */
+    public static void resv(MemorySegment struct, MemorySegment fieldValue) {
+        MemorySegment.copy(fieldValue, 0L, struct, resv$OFFSET, resv$SIZE);
+    }
+
+    private static final long sq_off$OFFSET = 40;
+    private static final long sq_off$SIZE = 40;
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * struct io_sqring_offsets sq_off
+     * }
+     */
+    public static MemorySegment sq_off(MemorySegment struct) {
+        return struct.asSlice(sq_off$OFFSET, sq_off$SIZE);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * struct io_sqring_offsets sq_off
+     * }
+     */
+    public static void sq_off(MemorySegment struct, MemorySegment fieldValue) {
+        MemorySegment.copy(fieldValue, 0L, struct, sq_off$OFFSET, sq_off$SIZE);
+    }
+
+    private static final long cq_off$OFFSET = 80;
+    private static final long cq_off$SIZE = 40;
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * struct io_cqring_offsets cq_off
+     * }
+     */
+    public static MemorySegment cq_off(MemorySegment struct) {
+        return struct.asSlice(cq_off$OFFSET, cq_off$SIZE);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * struct io_cqring_offsets cq_off
+     * }
+     */
+    public static void cq_off(MemorySegment struct, MemorySegment fieldValue) {
+        MemorySegment.copy(fieldValue, 0L, struct, cq_off$OFFSET, cq_off$SIZE);
+    }
+
+    public static MemorySegment asSlice(MemorySegment array, long index) {
+        return array.asSlice($LAYOUT().byteSize() * index);
+    }
+
+    public static long sizeof() { return $LAYOUT().byteSize(); }
+
+    public static MemorySegment allocate(SegmentAllocator allocator) {
+        return allocator.allocate($LAYOUT());
+    }
+
+    public static MemorySegment allocateArray(long elementCount, SegmentAllocator allocator) {
+        return allocator.allocate(MemoryLayout.sequenceLayout(elementCount, $LAYOUT()));
+    }
+
+    public static MemorySegment reinterpret(MemorySegment addr, Arena scope, Consumer<MemorySegment> cleanup) {
+        return reinterpret(addr, 1, scope, cleanup);
+    }
+
+    public static MemorySegment reinterpret(MemorySegment addr, long elementCount, Arena scope, Consumer<MemorySegment> cleanup) {
+        return addr.reinterpret($LAYOUT().byteSize() * elementCount, scope, cleanup);
+    }
+}
+
