From patchwork Wed Oct 11 13:33:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 250 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 44B9742361; Wed, 11 Oct 2023 15:34:08 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 16342402CD; Wed, 11 Oct 2023 15:34:08 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id 29767402AE for ; Wed, 11 Oct 2023 15:34:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1697031246; x=1728567246; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Oq8AHkBk/HladIgy+DmURNXeWX3KSv3Dri525kBuc4s=; b=d0J8Ha5MS6w2qzZGUFNzBAgnyNjhSfT83Zr/+hgALAPNXf9LZDdWhDnU FY7mbxdh4WNYVKgDOZJtsrCD8Pvm4utfpcGWtUv3PoMkdcLlfLFOivRji phBsR9y/qTz0AORoVWU6MIZdRzwEvOL/zsGHGdwap7eHrfh0QffK3rs3R 9b3QcoB0r3owYTVwo5Yxm6ckcPhlfQ7L5h7dlgqH+hGWvDVcvVd7HtmAR phFUrtWJuLB1dMbH9cW14PwUpjjd2DBZ9gfekfjy6K/RQFHE59NiD8F+8 +awD8wh+SYVwt5ZxJ5PPbEBd0x5nKVDzsNO3+uf9Z4bDasCakxv8juoeX w==; X-IronPort-AV: E=McAfee;i="6600,9927,10860"; a="364025701" X-IronPort-AV: E=Sophos;i="6.03,216,1694761200"; d="scan'208";a="364025701" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Oct 2023 06:34:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10860"; a="1001111859" X-IronPort-AV: E=Sophos;i="6.03,216,1694761200"; d="scan'208";a="1001111859" Received: from unknown (HELO silpixa00401385.ir.intel.com) ([10.237.214.46]) by fmsmga006.fm.intel.com with ESMTP; 11 Oct 2023 06:34:02 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson Subject: [PATCH v3 0/5] document and simplify use of cmdline Date: Wed, 11 Oct 2023 14:33:52 +0100 Message-Id: <20231011133357.111058-1-bruce.richardson@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230802170052.955323-1-bruce.richardson@intel.com> References: <20230802170052.955323-1-bruce.richardson@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The DPDK commandline library is widely used by apps and examples within DPDK, but it is not documented in our programmers guide and it requires a lot of boilerplate code definitions in order to used. We can improve this situation by creating a simple python script to automatically generate the boilerplate from a list of commands. This patchset contains a new documentation chapter on cmdline library, going through step-by-step how to add commands and create the necessary token lists and parse contexts. Following that initial doc patch, the set then contains a boilerplate-generating script, as well as a set of three patches showing its use, by converting three examples to use the script instead of having the hard-coded boilerplate. Once the script is used, adding a new command becomes as simple as adding the desired command to the .list file, and then writing the required function which will be called for that command. No other boilerplate coding is necessary. Script obviously does not cover the full range of capabilities of the commandline lib, but does cover the most used parts. The code-saving to each of the examples by auto-generating the boilerplate is significant, and probably more examples with commandlines can be converted over in future. The "cmdline" example itself, is not converted over, as it should probably remain as a simple example of direct library use without the script. V3: * Added lots of documentation * Added support for help text for each command * Cleaned up script a little so it passes pycodestyle and most flake8 checks, when line-length is set to max 100. * Removed RFC tag, as I consider this patchset stable enough for consideration in a release. V2-RFC: * Add support for IP addresses in commands * Move to buildtools directory and make installable * Convert 3 examples to use script, and eliminate their boilerplate Bruce Richardson (5): doc/prog_guide: new chapter on cmdline library buildtools: script to generate cmdline boilerplate examples/simple_mp: auto-generate cmdline boilerplate examples/hotplug_mp: auto-generate cmdline boilerplate examples/bond: auto-generate cmdline boilerplate app/test/commands.c | 2 + buildtools/dpdk-cmdline-gen.py | 167 +++++++ buildtools/meson.build | 7 + doc/guides/prog_guide/cmdline.rst | 466 ++++++++++++++++++ doc/guides/prog_guide/index.rst | 1 + examples/bond/Makefile | 12 +- examples/bond/commands.list | 6 + examples/bond/main.c | 161 +----- examples/bond/main.h | 10 - examples/bond/meson.build | 8 + examples/multi_process/hotplug_mp/Makefile | 12 +- examples/multi_process/hotplug_mp/commands.c | 147 +----- examples/multi_process/hotplug_mp/commands.h | 10 - .../multi_process/hotplug_mp/commands.list | 5 + examples/multi_process/hotplug_mp/meson.build | 9 + examples/multi_process/simple_mp/Makefile | 12 +- examples/multi_process/simple_mp/meson.build | 9 + .../multi_process/simple_mp/mp_commands.c | 106 +--- .../multi_process/simple_mp/mp_commands.h | 14 - .../multi_process/simple_mp/mp_commands.list | 3 + 20 files changed, 745 insertions(+), 422 deletions(-) create mode 100755 buildtools/dpdk-cmdline-gen.py create mode 100644 doc/guides/prog_guide/cmdline.rst create mode 100644 examples/bond/commands.list delete mode 100644 examples/bond/main.h delete mode 100644 examples/multi_process/hotplug_mp/commands.h create mode 100644 examples/multi_process/hotplug_mp/commands.list delete mode 100644 examples/multi_process/simple_mp/mp_commands.h create mode 100644 examples/multi_process/simple_mp/mp_commands.list --- 2.39.2