Skip to main content

Module raw

Module raw 

Source
Expand description

Niveau brut du module io_uring : numéros de syscalls, wrappers asm! des trois appels (io_uring_setup/enter/register) et miroirs #[repr(C)] des structures kernel du protocole d’anneau (cible 6.12).

Les champs des structures conservent leurs noms kernel (ADR-029, zone d’interface) pour le cross-référencement avec io_uring.h. Ce module est interne au crate (pub(crate)) au Temps 1 ; l’exposition publique du protocole brut relève du Temps 4.

Périmètre Temps 1 : seules les structures nécessaires au cœur sont posées (io_uring_params + offsets, io_uring_sqe 64 o, io_uring_cqe 16 o, io_uring_getevents_arg, io_uring_sync_cancel_reg, io_uring_probe). Les structures register avancées (buffers/files/napi…) arrivent au Temps 3a.

Structs§

RawCompletionQueueEntry
Miroir exact de struct io_uring_cqe (16 octets). Le big_cqe[] (16 o supplémentaires) de SETUP_CQE32 n’est pas exposé. L’interprétation de res/flags est à la charge de l’appelant (selon l’opcode soumis).
RawOpcode
Opcode brut IORING_OP_* (couvre aussi les opcodes hors IoUringOpcode, p. ex. un opcode apparu après 6.12 et détecté par probe).
RawSubmissionQueueEntry
Miroir exact de struct io_uring_sqe (64 octets). #[repr(transparent)] sur le miroir interne IoUringSqe ⇒ layout bit-pour-bit garanti (asserté statiquement). La zone cmd[] étendue de SETUP_SQE128 (80 o) n’est pas exposée ici : le passthrough URING_CMD passe par la façade typée (Temps 2d).

Constants§

RAW_USER_DATA_TAG
Bit de poids fort du user_data, que toute opération brute doit poser (Temps 4 §5). Le slab S1 borne sa génération à 31 bits et n’utilise donc jamais ce bit : brut et niveau 2 coexistent sur le même ring sans collision. La boucle de complétion de la façade route sur ce bit.