Linux kernel
The LightNVM API is defined in /include/linux/lightnvm.h The user-space API is defined in /include/uapi/linux/lightnvm.h
Each of the exported symbols are described in /drivers/lightnvm/core.c
This includes documentation on the following functions
Target specific
nvm_register_target - Register a target with the LightNVM subsystem
nvm_unregister_target - Unregister a target with the LightNVM subsystem
nvm_dev_dma_alloc - Allocate device DMA-able memory
nvm_dev_dma_free - Frees device DMA-able memory
nvm_addr_to_generic_mode - Convert from device-specific to generic addressing
nvm_generic_to_addr_mode - Convert from generic to device-specific addressing
nvm_set_rqd_ppalist - Sets nvm_rqd with associated ppa list
Media manager specific
nvm_register_mgr - Register media manager with LightNVM subsystem
nvm_unregister_mgr - Unregister a media manager from the LightNVM subsystem
nvm_get_blk_unlocked - Get free logical block from logical lun
nvm_put_blk_unlocked - Put logical block to logical lun
nvm_get_blk - Get free logical block from logical lun
nvm_put_blk - Put logical block to logical lun
Device specific
nvm_register - Register a device with the LightNVM subsystem
nvm_unregister - Unregister a device from the LightNVM subsystem
nvm_submit_io - submit an io to the underlying media media manager
nvm_erase_blk - submit erase of the generic nvm_block
nvm_erase_ppa - Erase the block(s) associated with physical addresses
nvm_submit_ppa - Submits a list of ppas to device synchronously.
nvm_end_io - Complete a nvm_rq request
Please see the each function documentation for its parameters and description.
Examples of how to invoke the APIs is found in
Media manager
gennvm - /drivers/lightnvm/gennvm.c
Target
pblk - /drivers/lightnvm/pblk.c
rrpc - /drivers/lightnvm/rrpc.c
Device-side
NVMe - /drivers/nvme/host/lightnvm.c
null_blk - /drivers/block/null_blk.c