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