xref: /spdk/doc/porting.md (revision b30d57cdad6d2bc75cc1e4e2ebbcebcb0d98dcfa)
1# SPDK Porting Guide {#porting}
2
3SPDK is ported to new environments by implementing the *env*
4library interface.  The *env* interface provides APIs for drivers
5to allocate physically contiguous and pinned memory, perform PCI
6operations (config cycles and mapping BARs), virtual to physical
7address translation and managing memory pools.  The *env* API is
8defined in include/spdk/env.h.
9
10SPDK includes a default implementation of the *env* library based
11on the Data Plane Development Kit ([DPDK](http://dpdk.org/)).
12This DPDK implementation can be found in `lib/env_dpdk`.
13
14DPDK is currently supported on Linux and FreeBSD only.
15Users who want to use SPDK on other operating systems, or in
16userspace driver frameworks other than DPDK, will need to implement
17a new version of the *env* library.  The new implementation can be
18integrated into the SPDK build by updating the following line
19in CONFIG:
20
21    CONFIG_ENV?=$(SPDK_ROOT_DIR)/lib/env_dpdk
22