Traditional socket I/O via `read/write/recvfrom/sendto/recvmsg/sendmsg` and friends creates a very high system call load. A highly-loaded osmo-bsc spends most of its time in syscall entry and syscall exit.\n\n`io_uring` is a modern Linux kernel mechanism to avoid this syscall overhead. We have introduced the `osmo_io`API to libosmocore as a generic back-end for non-blocking/asynchronous I/O and a back-end for our classic `osmo_fd` / `poll` approach as well as a new backend for `io_uring`.\n\nThe talk will cover\n* a very basic io_uring introduction\n* a description of the osmo_io API\n* the difficulties porting from osmo_fd to osmo_io\n* status of porting various sub-systems over to osmo_io\nabout this event: https://pretalx.sysmocom.de/osmodevcon2024/talk/ZBJWUP/