X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fprog_guide%2Fsource_org.rst;h=06c9d8fe959c3db7dfa56b6b63e57d68f4d8d83f;hb=ef73fdd169ae96b00fedb697000f91afae7fb6a9;hp=90c35a7b727d06b79d9f37a43621ad2bfe88c1f0;hpb=fc1f2750a3ec6da919e3c86e59d56f34ec97154b;p=dpdk.git diff --git a/doc/guides/prog_guide/source_org.rst b/doc/guides/prog_guide/source_org.rst index 90c35a7b72..06c9d8fe95 100644 --- a/doc/guides/prog_guide/source_org.rst +++ b/doc/guides/prog_guide/source_org.rst @@ -33,7 +33,7 @@ Source Organization =================== -This section describes the organization of sources in the Intel® DPDK framework. +This section describes the organization of sources in the DPDK framework. Makefiles and Config -------------------- @@ -41,98 +41,125 @@ Makefiles and Config .. note:: In the following descriptions, - RTE_SDK is the environment variable that points to the base directory into which the tarball was extracted. + ``RTE_SDK`` is the environment variable that points to the base directory into which the tarball was extracted. See - :ref:`Useful Variables Provided by the Build System ` + :ref:`Useful_Variables_Provided_by_the_Build_System` for descriptions of other variables. -Makefiles that are provided by the Intel® DPDK libraries and applications are located in $(RTE_SDK)/mk. +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 Intel® DPDK libraries, +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 the 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. Libraries --------- -Libraries are located in subdirectories of $(RTE_SDK)/lib. -By convention, we call a library any code that provides an API to an application. -Typically, it generates an archive file (.a), but a kernel module should also go in the same directory. +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. The lib directory contains:: lib - +-- librte_cmdline # command line interface helper - +-- librte_distributor # packet distributor - +-- librte_eal # environment abstraction layer - +-- librte_ether # generic interface to poll mode driver - +-- librte_hash # hash library + +-- librte_cmdline # Command line interface helper + +-- librte_distributor # Packet distributor + +-- librte_eal # Environment abstraction layer + +-- librte_ether # Generic interface to poll mode driver + +-- librte_hash # Hash library +-- librte_ip_frag # IP fragmentation library - +-- librte_ivshmem # QEMU IVSHMEM library - +-- librte_kni # kernel NIC interface - +-- librte_kvargs # argument parsing library - +-- librte_lpm # longest prefix match library - +-- librte_malloc # malloc-like functions - +-- librte_mbuf # packet and control mbuf manipulation library - +-- librte_mempool # memory pool manager (fixedsized objects) + +-- 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_pmd_bond # bonding poll mode driver - +-- librte_pmd_e1000 # 1GbE poll mode drivers (igb and em) - +-- librte_pmd_ixgbe # 10GbE poll mode driver - +-- librte_pmd_i40e # 40GbE poll mode driver - +-- librte_pmd_pcap # PCAP poll mode driver - +-- librte_pmd_ring # ring poll mode driver - +-- librte_pmd_virtio # virtio poll mode driver - +-- librte_pmd_vmxnet3 # VMXNET3 poll mode driver - +-- librte_pmd_xenvirt # Xen virtio poll mode driver - +-- librte_power # power management library - +-- librte_ring # software rings (act as lockless FIFOs) + +-- 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 + +-- librte_timer # Timer library + +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. + +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`` + 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. + Applications ------------ -Applications are sources 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 the Intel® DPDK (autotests). -The examples directory contains sample applications that show how libraries can be used. +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):: app - +-- chkincs # test prog to check include depends - +-- test # autotests, to validate DPDK features - `-- test-pmd # test and bench poll mode driver examples + +-- 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 cmdline library - +-- dpdk_qat # Example showing integration with Intel QuickAssist - +-- exception_path # Sending packets to and from Linux ethernet device (TAP) - +-- helloworld # Helloworld basic example - +-- ip_reassembly # Example showing IP Reassembly - +-- ip_fragmentation # Example showing IPv4 Fragmentation - +-- ipv4_multicast # Example showing IPv4 Multicast - +-- kni # Kernel NIC Interface example - +-- l2fwd # L2 Forwarding example 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 + +-- 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 applications with multiple DPDK processes + +-- 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 # Intel 82599 Ethernet Controller VMDQ and DCB receiving - +-- vmdq # Example of VMDQ receiving for both Intel 10G (82599) and 1G (82576, 82580 and I350) Ethernet Controllers - `-- vhost # Example of userspace vhost and switch + +-- vmdq_dcb # Example of VMDQ and DCB receiving + +-- vmdq # Example of VMDQ receiving + +-- vhost # Example of userspace vhost and switch .. note:: The actual examples directory may contain additional sample applications to those shown above. - Check the latest Intel® DPDK source files for details. + Check the latest DPDK source files for details.