← Graph

io_uring

concept 3 connections

Linux-specific kernel interface for asynchronous IO, not available on other operating systems. Provides a comprehensive set of IO operations that follow the design of the normal IO syscall API, broken into three phases: submission, execution, completion. The application sets up two circular buffers — a submission queue (SQ) and a completion queue (CQ). IO is performed by preparing SQEs (submission queue entries) describing the operation, tagging them with user_data (which the kernel copies into the CQE), and invoking io_uring_submit (wrapping the io_uring_enter syscall); the kernel executes asynchronously and posts CQEs that the application later drains. Supports multi-shot operations (submit once, receive many completions — accept, timeout, read, receive), provided buffers (a circular buffer ring of application-allocated buffers the kernel reads into, with incremental consumption in recent kernels), and cancellation of in-flight IO.

category
architecture
platform
Linux
Explains the io_uring interface and its submission/completion model.
concept io_uring
related_to
Ruby tool
UringMachine brings io_uring to the Ruby language.
project UringMachine
uses
io_uring concept
UringMachine is built on Linux io_uring.

Provenance