diff a/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/io_cqring_offsets.java b/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/io_cqring_offsets.java
--- /dev/null
+++ b/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/io_cqring_offsets.java
@@ -0,0 +1,282 @@
+// 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_cqring_offsets {
+ *     __u32 head;
+ *     __u32 tail;
+ *     __u32 ring_mask;
+ *     __u32 ring_entries;
+ *     __u32 overflow;
+ *     __u32 cqes;
+ *     __u32 flags;
+ *     __u32 resv1;
+ *     __u64 resv2;
+ * }
+ * }
+ */
+@SuppressWarnings("restricted") public class io_cqring_offsets {
+
+    io_cqring_offsets() {
+        // 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("head"),
+        iouring_h.C_INT.withName("tail"),
+        iouring_h.C_INT.withName("ring_mask"),
+        iouring_h.C_INT.withName("ring_entries"),
+        iouring_h.C_INT.withName("overflow"),
+        iouring_h.C_INT.withName("cqes"),
+        iouring_h.C_INT.withName("flags"),
+        iouring_h.C_INT.withName("resv1"),
+        iouring_h.C_LONG_LONG.withName("resv2")
+    ).withName("io_cqring_offsets");
+
+    public static final GroupLayout $LAYOUT() {
+        return $LAYOUT;
+    }
+
+    private static final long head$OFFSET = 0;
+    private static final OfInt head$LAYOUT = (OfInt)$LAYOUT.select(groupElement("head"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 head
+     * }
+     */
+    public static int head(MemorySegment struct) {
+        return struct.get(head$LAYOUT, head$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 head
+     * }
+     */
+    public static void head(MemorySegment struct, int fieldValue) {
+        struct.set(head$LAYOUT, head$OFFSET, fieldValue);
+    }
+
+    private static final long tail$OFFSET = 4;
+    private static final OfInt tail$LAYOUT = (OfInt)$LAYOUT.select(groupElement("tail"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 tail
+     * }
+     */
+    public static int tail(MemorySegment struct) {
+        return struct.get(tail$LAYOUT, tail$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 tail
+     * }
+     */
+    public static void tail(MemorySegment struct, int fieldValue) {
+        struct.set(tail$LAYOUT, tail$OFFSET, fieldValue);
+    }
+
+    private static final long ring_mask$OFFSET = 8;
+    private static final OfInt ring_mask$LAYOUT = (OfInt)$LAYOUT.select(groupElement("ring_mask"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 ring_mask
+     * }
+     */
+    public static int ring_mask(MemorySegment struct) {
+        return struct.get(ring_mask$LAYOUT, ring_mask$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 ring_mask
+     * }
+     */
+    public static void ring_mask(MemorySegment struct, int fieldValue) {
+        struct.set(ring_mask$LAYOUT, ring_mask$OFFSET, fieldValue);
+    }
+
+    private static final long ring_entries$OFFSET = 12;
+    private static final OfInt ring_entries$LAYOUT = (OfInt)$LAYOUT.select(groupElement("ring_entries"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 ring_entries
+     * }
+     */
+    public static int ring_entries(MemorySegment struct) {
+        return struct.get(ring_entries$LAYOUT, ring_entries$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 ring_entries
+     * }
+     */
+    public static void ring_entries(MemorySegment struct, int fieldValue) {
+        struct.set(ring_entries$LAYOUT, ring_entries$OFFSET, fieldValue);
+    }
+
+    private static final long overflow$OFFSET = 16;
+    private static final OfInt overflow$LAYOUT = (OfInt)$LAYOUT.select(groupElement("overflow"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 overflow
+     * }
+     */
+    public static int overflow(MemorySegment struct) {
+        return struct.get(overflow$LAYOUT, overflow$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 overflow
+     * }
+     */
+    public static void overflow(MemorySegment struct, int fieldValue) {
+        struct.set(overflow$LAYOUT, overflow$OFFSET, fieldValue);
+    }
+
+    private static final long cqes$OFFSET = 20;
+    private static final OfInt cqes$LAYOUT = (OfInt)$LAYOUT.select(groupElement("cqes"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 cqes
+     * }
+     */
+    public static int cqes(MemorySegment struct) {
+        return struct.get(cqes$LAYOUT, cqes$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 cqes
+     * }
+     */
+    public static void cqes(MemorySegment struct, int fieldValue) {
+        struct.set(cqes$LAYOUT, cqes$OFFSET, fieldValue);
+    }
+
+    private static final long flags$OFFSET = 24;
+    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 resv1$OFFSET = 28;
+    private static final OfInt resv1$LAYOUT = (OfInt)$LAYOUT.select(groupElement("resv1"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u32 resv1
+     * }
+     */
+    public static int resv1(MemorySegment struct) {
+        return struct.get(resv1$LAYOUT, resv1$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u32 resv1
+     * }
+     */
+    public static void resv1(MemorySegment struct, int fieldValue) {
+        struct.set(resv1$LAYOUT, resv1$OFFSET, fieldValue);
+    }
+
+    private static final long resv2$OFFSET = 32;
+    private static final OfLong resv2$LAYOUT = (OfLong)$LAYOUT.select(groupElement("resv2"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * __u64 resv2
+     * }
+     */
+    public static long resv2(MemorySegment struct) {
+        return struct.get(resv2$LAYOUT, resv2$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * __u64 resv2
+     * }
+     */
+    public static void resv2(MemorySegment struct, long fieldValue) {
+        struct.set(resv2$LAYOUT, resv2$OFFSET, fieldValue);
+    }
+
+    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);
+    }
+}
+
