make O=my_sdk_build_dir
-The content of the my_sdk_build_dir is then:
-
-::
-
- -- .config # used configuration
-
- -- Makefile # wrapper that calls head Makefile
- # with $PWD as build directory
-
-
- -- build #All temporary files used during build
- +--app # process, including . o, .d, and .cmd files.
- | +-- test # For libraries, we have the .a file.
- | +-- test.o # For applications, we have the elf file.
- | `-- ...
- +-- lib
- +-- librte_eal
- | `-- ...
- +-- librte_mempool
- | +-- mempool-file1.o
- | +-- .mempool-file1.o.cmd
- | +-- .mempool-file1.o.d
- | +-- mempool-file2.o
- | +-- .mempool-file2.o.cmd
- | +-- .mempool-file2.o.d
- | `-- mempool.a
- `-- ...
-
- -- include # All include files installed by libraries
- +-- librte_mempool.h # and applications are located in this
- +-- rte_eal.h # directory. The installed files can depend
- +-- rte_spinlock.h # on configuration if needed (environment,
- +-- rte_atomic.h # architecture, ..)
- `-- \*.h ...
-
- -- lib # all compiled libraries are copied in this
- +-- librte_eal.a # directory
- +-- librte_mempool.a
- `-- \*.a ...
-
- -- app # All compiled applications are installed
- + --test # here. It includes the binary in elf format
-
Refer to
:ref:`Development Kit Root Makefile Help <Development_Kit_Root_Makefile_Help>`
for details about make commands that can be used from the root of DPDK.
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.
-The lib directory contains::
-
- lib
- +-- librte_cmdline # Command line interface helper
- +-- librte_distributor # Packet distributor
- +-- librte_eal # Environment abstraction layer
- +-- librte_ethdev # Generic interface to poll mode driver
- +-- librte_hash # Hash library
- +-- librte_ip_frag # IP fragmentation library
- +-- librte_kni # Kernel NIC interface
- +-- librte_kvargs # Argument parsing library
- +-- librte_lpm # Longest prefix match library
- +-- librte_mbuf # Packet buffer manipulation
- +-- librte_mempool # Memory pool manager (fixed sized objects)
- +-- librte_meter # QoS metering library
- +-- librte_net # Various IP-related headers
- +-- librte_power # Power management library
- +-- librte_ring # Software rings (act as lockless FIFOs)
- +-- librte_sched # QoS scheduler and dropper library
- +-- librte_timer # Timer library
-
Drivers
-------
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.
-The drivers directory has a *net* subdirectory which contains::
-
- drivers/net
- +-- af_packet # Poll mode driver based on Linux af_packet
- +-- bonding # Bonding poll mode driver
- +-- cxgbe # Chelsio Terminator 10GbE/40GbE poll mode driver
- +-- e1000 # 1GbE poll mode drivers (igb and em)
- +-- enic # Cisco VIC Ethernet NIC Poll-mode Driver
- +-- fm10k # Host interface PMD driver for FM10000 Series
- +-- i40e # 40GbE poll mode driver
- +-- ixgbe # 10GbE poll mode driver
- +-- mlx4 # Mellanox ConnectX-3 poll mode driver
- +-- null # NULL poll mode driver for testing
- +-- pcap # PCAP poll mode driver
- +-- ring # Ring poll mode driver
- +-- szedata2 # SZEDATA2 poll mode driver
- +-- virtio # Virtio poll mode driver
- +-- vmxnet3 # VMXNET3 poll mode driver
-
.. note::
Several of the ``driver/net`` directories contain a ``base``
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)::
-
- app
- +-- chkincs # Test program to check include dependencies
- +-- cmdline_test # Test the commandline library
- +-- test # Autotests to validate DPDK features
- +-- test-acl # Test the ACL library
- +-- test-pipeline # Test the IP Pipeline framework
- +-- test-pmd # Test and benchmark poll mode drivers
-
-The examples directory contains sample applications that show how libraries can be used::
-
- examples
- +-- cmdline # Example of using the cmdline library
- +-- exception_path # Sending packets to and from Linux TAP device
- +-- helloworld # Basic Hello World example
- +-- ip_reassembly # Example showing IP reassembly
- +-- ip_fragmentation # Example showing IPv4 fragmentation
- +-- ipv4_multicast # Example showing IPv4 multicast
- +-- kni # Kernel NIC Interface (KNI) example
- +-- l2fwd # L2 forwarding with and without SR-IOV
- +-- l3fwd # L3 forwarding example
- +-- l3fwd-power # L3 forwarding example with power management
- +-- l3fwd-vf # L3 forwarding example with SR-IOV
- +-- link_status_interrupt # Link status change interrupt example
- +-- load_balancer # Load balancing across multiple cores/sockets
- +-- multi_process # Example apps using multiple DPDK processes
- +-- qos_meter # QoS metering example
- +-- qos_sched # QoS scheduler and dropper example
- +-- timer # Example of using librte_timer library
- +-- vmdq_dcb # Example of VMDQ and DCB receiving
- +-- vmdq # Example of VMDQ receiving
- +-- vhost # Example of userspace vhost and switch
-
-.. note::
+or the Poll Mode Drivers (test-pmd).
- The actual examples directory may contain additional sample applications to those shown above.
- Check the latest DPDK source files for details.
+The examples directory contains :doc:`Sample applications<../sample_app_ug/index>` that show how libraries can be used.