From mboxrd@z Thu Jan 1 00:00:00 1970 From: Erik Gabriel Carrillo Subject: [PATCH v11 0/9] eventtimer: introduce event timer adapter Date: Wed, 4 Apr 2018 16:51:05 -0500 Message-ID: <1522878674-7750-1-git-send-email-erik.g.carrillo@intel.com> References: <1522791863-28882-1-git-send-email-erik.g.carrillo@intel.com> Cc: dev@dpdk.org To: pbhagavatula@caviumnetworks.com, jerin.jacob@caviumnetworks.com Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 198AB1C8AC for ; Wed, 4 Apr 2018 23:51:27 +0200 (CEST) In-Reply-To: <1522791863-28882-1-git-send-email-erik.g.carrillo@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch series contains the next iteration of the Event Timer Adapter library, which abstracts timer mechanisms that are tightly coupled with event devices, and extends the event based programming model so that timer expirations are represented as an event. v11 - fix build error (Jerin) - fix whitespace issue (Pavan) v10 - remove stale references to rte_event_timer_init API and update docs (Jerin) - rebase to latest dpdk-next-eventdev tree (Jerin) - make sw_event_adapter_timer_ops var static (Pavan) v9 - Addressed comments on previous series from Pavan: - Don't assume services exist in HW cases - Adjust retry logic in a couple of tests - Addressed comments on previous series from Jerin: - Fix build warning - Addressed comments on previous series from Hemant: - Adjust copyright text v8 - Addressed comments on previous series from Jerin: - Add better git comment to initial patch - Return uint16_t for fastpath functions - Move updates to existing licenses to separate patch for individual review - Fix clang build error - Move fastpath functions into header as static inline functions - Remove duplicate map file entry - Fix flag value - Move update to rte.app.mk file into separate commit - Addressed comments on previous series from Pavan: - Make tests generic so that they work for software or hardware event devices and timer mechanisms - Don't access eventdev internals from tests - Integrated unit tests from Pavan v7 - Addressed comments on previous patch series from Pavan: - Use SPDX license tags - Squash various commits to make series easier to review - Tag experimental functions as such - Use one mempool for messages and timers in sw driver - Limit service cores mapped to sw driver's service to one - Use smp memory barriers - In service function, invoke rte_timer_manage() with frequency matching the resolution the adapter was configured with - Reworked synchronization in sw driver between threads producing messages and service thread that consumes them. The new approach avoids a situation where event timers couldn't be armed/canceled from the same lcore the service was running on. - Updated logging facility - Added more unit tests - Added support for meson build v6 - Addressed comments on previous version from Jerin: - Added RTE_EVENT_TIMER_CANCELED event timer state back in - remove check for started adapter in timer arm/cancel functions - reuse CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG instead of adding new config option - Added initial version of software driver implementation - Added stats APIs - Added API to retrieve adapter service ID - Added API to initialize event timer - Added entry to Programmer's Guide in documentation - Added new unit tests to auto-test v5 - Addressed comments on previous version from Pavan: - renamed rte_event_timer_adapter_driver.h to rte_event_timer_adapter_pmd.h - moved contents of sw_event_timer_adapter.c into rte_event_timer_adapter.c - added flags parameter to timer_adapter_caps_get() call - added DEBUG config variable to conditionally compile run-time checks on datapath - fixed license text and file description - Also added a config variable to enable/disable compilation of event timer adapter - feedback on whether this is desirable is appreciated v4 - Split changes into multiple patches for easier review v3 - Reworked allocation and ops organization in common code based on feedback received from Jerin and Pavan. This will allow fast-path function pointers to be dereferenced with one level of indirection with pointers valid in primary and secondary processes. - Moved default software implementation from sw_evdev directory to eventdev library directory, which will allow it to be used by any eventdev PMD as an alternative to providing its own definitions. - Reverted occurrences of id back to pointer to adapter struct in library API - Added rte_event_timer_adapter_lookup() function back in v2 - Added ops structure and stubbed out plugin for SW impl - Added unit test stubs - Replaced occurrences of "wheel" in API with "adapter" - Replaced occurrences of pointer to struct rte_event_timer_adapter with ids - Removed rte_event_timer_adapter_lookup() function - Replaced RTE_EVENT_TIMER_SUCCESS_{ARM,CANCEL} states with RTE_EVENT_TIMER_ARMED Erik Gabriel Carrillo (9): eventtimer: introduce event timer adapter eventdev: convert to SPDX license tag in header eventtimer: add common code mk: update library order in static build eventtimer: add default software driver eventtimer: add support for meson build system test: add event timer adapter auto-test doc: add event timer adapter section to programmer's guide doc: add event timer adapter documentation MAINTAINERS | 7 + config/common_base | 1 + config/rte_config.h | 1 + doc/api/doxy-api-index.md | 32 +- doc/guides/prog_guide/event_timer_adapter.rst | 296 ++++ doc/guides/prog_guide/index.rst | 1 + doc/guides/rel_notes/release_18_05.rst | 6 + drivers/event/sw/sw_evdev.c | 18 + lib/Makefile | 2 +- lib/librte_eventdev/Makefile | 5 +- lib/librte_eventdev/meson.build | 9 +- lib/librte_eventdev/rte_event_timer_adapter.c | 1299 +++++++++++++++ lib/librte_eventdev/rte_event_timer_adapter.h | 768 +++++++++ lib/librte_eventdev/rte_event_timer_adapter_pmd.h | 114 ++ lib/librte_eventdev/rte_eventdev.c | 22 + lib/librte_eventdev/rte_eventdev.h | 61 +- lib/librte_eventdev/rte_eventdev_pmd.h | 35 + lib/librte_eventdev/rte_eventdev_version.map | 20 +- lib/meson.build | 3 +- mk/rte.app.mk | 2 +- test/test/Makefile | 1 + test/test/test_event_timer_adapter.c | 1830 +++++++++++++++++++++ 22 files changed, 4462 insertions(+), 71 deletions(-) create mode 100644 doc/guides/prog_guide/event_timer_adapter.rst create mode 100644 lib/librte_eventdev/rte_event_timer_adapter.c create mode 100644 lib/librte_eventdev/rte_event_timer_adapter.h create mode 100644 lib/librte_eventdev/rte_event_timer_adapter_pmd.h create mode 100644 test/test/test_event_timer_adapter.c -- 2.6.4