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