Expand description
Opérations multishot (Temps 3d) : une unique soumission produit un
flux de complétions. Sous-module air-sys-syscall::io_uring::multishot.
Repose sur le drapeau de complétion CQE_F_MORE (axe E), sur les buffers
fournis du Temps 3b (recv/read) et les descripteurs directs du Temps
3a (accept direct). Aucun register opcode ; un opcode dédié
(READ_MULTISHOT, 49) et des drapeaux d’op.
Référence normative : docs/specs/layer-0/io-uring-3d-multishot.md.
§Cycle de vie (slab S1)
Chaque complétion intermédiaire porte CQE_F_MORE (« d’autres suivront
pour ce SQE ») ; la terminale ne le porte pas (erreur, pénurie de
buffers, ou annulation). Le slot S1 reste vivant tant que CQE_F_MORE
et n’est libéré qu’à la terminale — second cas (après le NOTIF zero-copy
du Temps 2b) où un slot survit à sa première complétion. La génération du
jeton filtre les CQE tardifs après annulation (Temps 1 §4.2).
Une op multishot rend un MultishotToken (distinct
du SubmissionToken mono-coup) ; toutes ses complétions le portent
(Completion::multishot_token).
Completion::has_more distingue les
intermédiaires de la terminale. Le réarmement (resoumission) est explicite.