From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id E30E2968 for ; Mon, 26 Jun 2017 13:05:45 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Jun 2017 04:05:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.39,395,1493708400"; d="scan'208";a="1164690735" Received: from gklab-246-073.igk.intel.com (HELO Sent) ([10.217.246.73]) by fmsmga001.fm.intel.com with SMTP; 26 Jun 2017 04:05:42 -0700 Received: by Sent (sSMTP sendmail emulation); Mon, 26 Jun 2017 12:59:48 +0200 From: Jacek Piasecki To: dev@dpdk.org Cc: bruce.richardson@intel.com, deepak.k.jain@intel.com, Jacek Piasecki Date: Mon, 26 Jun 2017 12:59:12 +0200 Message-Id: <1498474759-102089-1-git-send-email-jacekx.piasecki@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496133037-3014-2-git-send-email-jacekx.piasecki@intel.com> References: <1496133037-3014-2-git-send-email-jacekx.piasecki@intel.com> Subject: [dpdk-dev] [PATCH v2 0/7] Add support for using a config file for DPDK X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jun 2017 11:05:46 -0000 This patchset introduce a mechanism for running dpdk application with parameters provided by configuration file. New API for cfgfile library allows to create a cfgfile at runtime, add new section and add entry in a section - opens up the possibility to have applications dynamically build up a proper DPDK configuration, rather than having to have a pre-existing one. 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. Testpmd application is used to the demonstrate the new eal API. If a --cfgfile-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. Last patch demonstrates the usage of JSON file format insted of config.ini JSON file can be called the same way as above, thru --cfgfile-path --- 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 Jacek Piasecki (3): cfgfile: remove EAL dependency cfgfile: add new functions to API test/cfgfile: add new unit test Kuba Kozak (4): cfgfile: rework of load function eal: add functions parsing EAL arguments app/testpmd: changed example to parse options from cfg file app/testpmd: add parse arguments from JSON config file app/test-pmd/Makefile | 6 + app/test-pmd/config.ini | 24 + app/test-pmd/config.json | 33 + app/test-pmd/parameters.c | 1193 +++++++++++++--------- app/test-pmd/testpmd.c | 159 ++- app/test-pmd/testpmd.h | 3 +- config/common_base | 6 + lib/Makefile | 6 +- lib/librte_cfgfile/Makefile | 1 + lib/librte_cfgfile/rte_cfgfile.c | 397 ++++--- lib/librte_cfgfile/rte_cfgfile.h | 76 ++ lib/librte_cfgfile/rte_cfgfile_version.map | 11 + lib/librte_eal/bsdapp/eal/Makefile | 4 + lib/librte_eal/bsdapp/eal/eal.c | 249 ++++- lib/librte_eal/bsdapp/eal/rte_eal_version.map | 4 + lib/librte_eal/common/eal_common_cpuflags.c | 14 +- lib/librte_eal/common/eal_common_lcore.c | 11 +- lib/librte_eal/common/eal_common_options.c | 5 + lib/librte_eal/common/include/rte_eal.h | 21 + lib/librte_eal/linuxapp/eal/Makefile | 3 + lib/librte_eal/linuxapp/eal/eal.c | 353 +++++-- lib/librte_eal/linuxapp/eal/rte_eal_version.map | 4 + mk/rte.app.mk | 2 +- test/test/test_cfgfile.c | 40 + test/test/test_cfgfiles/etc/realloc_sections.ini | 128 +++ 25 files changed, 1983 insertions(+), 770 deletions(-) create mode 100644 app/test-pmd/config.ini create mode 100644 app/test-pmd/config.json create mode 100644 test/test/test_cfgfiles/etc/realloc_sections.ini -- 2.7.4