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_sqe64 o,io_uring_cqe16 o,io_uring_getevents_arg,io_uring_sync_cancel_reg,io_uring_probe). Les structuresregisteravancées (buffers/files/napi…) arrivent au Temps 3a.
Structs§
- RawCompletion
Queue Entry - Miroir exact de
struct io_uring_cqe(16 octets). Lebig_cqe[](16 o supplémentaires) deSETUP_CQE32n’est pas exposé. L’interprétation deres/flagsest à la charge de l’appelant (selon l’opcode soumis). - RawOpcode
- Opcode brut
IORING_OP_*(couvre aussi les opcodes horsIoUringOpcode, p. ex. un opcode apparu après 6.12 et détecté par probe). - RawSubmission
Queue Entry - Miroir exact de
struct io_uring_sqe(64 octets).#[repr(transparent)]sur le miroir interneIoUringSqe⇒ layout bit-pour-bit garanti (asserté statiquement). La zonecmd[]étendue deSETUP_SQE128(80 o) n’est pas exposée ici : le passthroughURING_CMDpasse 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.