2015-09-25 14:31:26 -07:00
|
|
|
SPDK Porting Guide
|
|
|
|
==================
|
|
|
|
|
|
|
|
SPDK is ported to new environments by implementing the nvme_impl
|
|
|
|
interface. The nvme_impl interface provides APIs for the driver
|
|
|
|
to allocate physically contiguous and pinned memory, perform PCI
|
|
|
|
operations (config cycles and mapping BARs), virtual to physical
|
|
|
|
address translation and allocating per I/O data structures.
|
|
|
|
|
|
|
|
SPDK includes a default implementation of the nvme_impl API based
|
2016-08-08 15:57:49 -07:00
|
|
|
on the Data Plane Development Kit ([DPDK](dpdk.org)). This DPDK
|
|
|
|
implementation can be found in lib/nvme/nvme_impl.h. DPDK is
|
|
|
|
currently supported on Linux and FreeBSD only.
|
2015-09-25 14:31:26 -07:00
|
|
|
|
|
|
|
Users who want to use SPDK on other operating system, or in
|
|
|
|
userspace driver frameworks other than DPDK, will need to implement
|
|
|
|
a new version of nvme_impl.h. The new nvme_impl.h can be
|
|
|
|
integrated into the SPDK build by updating the following line
|
|
|
|
in CONFIG:
|
|
|
|
|
|
|
|
CONFIG_NVME_IMPL=nvme_impl.h
|