This patchset introduce a mechanism for running dpdk application with 
parameters provided by configuration file.

A new API for EAL takes a config file data type - either loaded from
file, or built up programmatically in the application - and extracts
DPDK parameters from it to be used when eal init is called. 
This allows apps to have an alternative method to configure EAL,
other than via command-line parameters.

Reworked applications are used to demonstrate the new eal API.
If a --cfgfile-path <path> option is passed into command line non
EAL section, then the file is loaded and used by app. If a file
called config.ini is present in current working directory, and
no --cfgfile-path option is passed in, config.ini file will be
loaded and used by app.

Patch "app/testpmd: add parse options from JSON cfg file" 
demonstrates the usage of JSON instead of INI file format. 
JSON file can be called the same way as above, 
through --cfgfile-path <path> argument.
---
this patch depends on:
"Rework cfgfile API to enable apps config file support"

v5:
  changed define "RTE_DEVTYPE_VIRTUAL" to "RTE_DEVTYPE_UNDEFINED"
  due to compilation errors (changes on current master).

v4:
 Code optimalisation in parse_vdev_devices() function.
 Moved some functions from librte_eal/bsdapp and librte_eal/linuxapp
 to the librte_eal/common.
 Bug fixes.

v3: 
 split one patchset into two distinct patchsets:
 1. cfgfile library and TEST app changes
 2. EAL changes and examples (this patchset depends on cfgfile)

v2:
  lib eal:
        Rework of rte_eal_configure(struct rte_cfgfile *cfg, char *prgname).
        Now this function load data from cfg structure and did initial
        initialization of EAL arguments. Vdev argument are stored in different
        subsections eg. DPDK.vdev0, DPDK.vdev1 etc. After execution of this
        function it is necessary to call rte_eal_init to complete EAL
        initialization. There is no more merging arguments from different
        sources (cfg file and command line).
        Added non_eal_configure to testpmd application.
        Function maintain the same functionality as rte_eal_configure but
        for non-eal arguments. 
        Added config JSON feature to testpmd last patch from patchset contain
        example showing use of .json configuration files.

  lib cfgfile:
        Rework of add_section(), add_entry() new implementation
        New members allocated_entries/sections, free_entries/sections
        in rte_cfgfile structure, change in array of pointers
        **sections, **entries instead of *sections[], *entries[]
        Add  set_entry() to update/overwrite already existing entry in cfgfile
        struct
        Add save() function to save on disc cfgfile structure in INI format
        Rework of existing load() function  simplifying the code
        Add unit test realloc_sections() in TEST app for testing realloc/malloc
        of new API functions, add test for save() function

Kuba Kozak (3):
  eal: add functions parsing EAL arguments
  app/testpmd: add parse options from cfg file
  app/testpmd: add parse options from JSON cfg file

 app/test-pmd/Makefile                           |    6 +
 app/test-pmd/config.ini                         |   24 +
 app/test-pmd/config.json                        |   33 +
 app/test-pmd/parameters.c                       | 1181 +++++++++++++----------
 app/test-pmd/testpmd.c                          |  159 ++-
 app/test-pmd/testpmd.h                          |    3 +-
 config/common_base                              |    5 +
 lib/Makefile                                    |    3 +
 lib/librte_eal/bsdapp/eal/Makefile              |    4 +
 lib/librte_eal/bsdapp/eal/eal.c                 |  165 +++-
 lib/librte_eal/bsdapp/eal/rte_eal_version.map   |    1 +
 lib/librte_eal/common/eal_common_lcore.c        |    7 +
 lib/librte_eal/common/eal_common_options.c      |  106 ++
 lib/librte_eal/common/eal_options.h             |    3 +
 lib/librte_eal/common/include/rte_eal.h         |   20 +
 lib/librte_eal/linuxapp/eal/Makefile            |    3 +
 lib/librte_eal/linuxapp/eal/eal.c               |  265 +++--
 lib/librte_eal/linuxapp/eal/rte_eal_version.map |    1 +
 mk/rte.app.mk                                   |    2 +-
 19 files changed, 1349 insertions(+), 642 deletions(-)
 create mode 100644 app/test-pmd/config.ini
 create mode 100644 app/test-pmd/config.json

-- 
2.7.4

Reply via email to