xref: /aosp_15_r20/external/ublksrv/doc/mainpage.dox (revision 94c4a1e103eb1715230460aab379dff275992c20)
1*94c4a1e1SFrank Piva/*!
2*94c4a1e1SFrank Piva\mainpage libublksrv API documentation
3*94c4a1e1SFrank Piva
4*94c4a1e1SFrank PivaUBLK (block in Userspace) is an interface for building block device by
5*94c4a1e1SFrank Pivauserspace programs. The UBLK project consists
6*94c4a1e1SFrank Pivaof two components: the *ublk_drv* kernel module (maintained in the regular
7*94c4a1e1SFrank Pivakernel repositories) and the *libublksrv* userspace library. libublksrv
8*94c4a1e1SFrank Pivaprovides the reference implementation for communicating with the ublk_drv
9*94c4a1e1SFrank Pivakernel module.
10*94c4a1e1SFrank Piva
11*94c4a1e1SFrank PivaA UBLK block device is typically implemented as a standalone application that
12*94c4a1e1SFrank Pivalinks with libublksrv. libublksrv provides APIs for the application to
13*94c4a1e1SFrank Pivahandle IO logic by its business logic, also add/delete/recovery device.
14*94c4a1e1SFrank Piva
15*94c4a1e1SFrank Pivaublksrv_tgt is built on libublksrv for supporting generic & multiple ublk
16*94c4a1e1SFrank Pivatargets, and it isn't covered in this document. In the future, the two
17*94c4a1e1SFrank Pivawill be separated from each other, and become standalone project.
18*94c4a1e1SFrank Piva
19*94c4a1e1SFrank Piva## Getting started ##
20*94c4a1e1SFrank Piva
21*94c4a1e1SFrank PivaThe API that is primarily specified in ublksrv.h.
22*94c4a1e1SFrank Piva
23*94c4a1e1SFrank Pivaublksrv_aio.h provides APIs for offloading IO handling to another context,
24*94c4a1e1SFrank Pivaand it is optional.
25*94c4a1e1SFrank Piva
26*94c4a1e1SFrank Piva## Examples ##
27*94c4a1e1SFrank Piva
28*94c4a1e1SFrank PivaA good starting point is demo_null.c and demo_event.c.
29*94c4a1e1SFrank Piva
30*94c4a1e1SFrank Piva*/
31