ublk-cpp is an intuitive, highly extensible C++ library for writing ublk servers:
-
Comprehensive ublk Support Full coverage of the ublk userspace interface — device lifecycle management, per-queue I/O loops, and advanced features such as user recovery and shm buffer registration.
-
Full io_uring Ecosystem Built on top of Condy, all kinds of io_uring async operations —
send/recv,read/write, and more — can be used directly and intuitively inside your ublk server. -
C++26 Sender Model The API is built on
std::executionsenders — handlers are ordinary senders that compose with standard algorithms and can interoperate with any asynchronous driver.
Note
This repository is experimental and will not reach a stable state until
std::execution (C++26) is finalized.
- Online Docs (GitHub Pages)
- User Guide: Step-by-step introduction to ublk-cpp's concepts and usage.
- Building and Usage: How to build and integrate ublk-cpp in your project.
- Examples: Practical ublk-cpp code samples.
- For questions, bug reports, or feature requests, please open an issue.
- Pull requests are welcome!