Part 2: Development Environment

50. Source Organization

This section describes the organization of sources in the DPDK framework.

50.1. Makefiles and Config


In the following descriptions, RTE_SDK is the environment variable that points to the base directory into which the tarball was extracted. See Useful Variables Provided by the Build System for descriptions of other variables.

Makefiles that are provided by the DPDK libraries and applications are located in $(RTE_SDK)/mk.

Config templates are located in $(RTE_SDK)/config. The templates describe the options that are enabled for each target. The config file also contains items that can be enabled and disabled for many of the DPDK libraries, including debug options. The user should look at the config file and become familiar with these options. The config file is also used to create a header file, which will be located in the new build directory.

50.2. Libraries

Libraries are located in subdirectories of $(RTE_SDK)/lib. By convention a library refers to any code that provides an API to an application. Typically, it generates an archive file (.a), but a kernel module would also go in the same directory.

50.3. Drivers

Drivers are special libraries which provide poll-mode driver implementations for devices: either hardware devices or pseudo/virtual devices. They are contained in the drivers subdirectory, classified by type, and each compiles to a library with the format librte_pmd_X.a where X is the driver name.


Several of the driver/net directories contain a base sub-directory. The base directory generally contains code the shouldn’t be modified directly by the user. Any enhancements should be done via the X_osdep.c and/or X_osdep.h files in that directory. Refer to the local README in the base directories for driver specific instructions.

50.4. Applications

Applications are source files that contain a main() function. They are located in the $(RTE_SDK)/app and $(RTE_SDK)/examples directories.

The app directory contains sample applications that are used to test DPDK (such as autotests) or the Poll Mode Drivers (test-pmd).

The examples directory contains Sample applications that show how libraries can be used.