Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/77326/?format=api
http://patches.dpdk.org/api/patches/77326/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20200911054534.55378-4-joyce.kong@arm.com/", "project": { "id": 1, "url": "http://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20200911054534.55378-4-joyce.kong@arm.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20200911054534.55378-4-joyce.kong@arm.com", "date": "2020-09-11T05:45:33", "name": "[3/4] rcu: remove experimental tag from QSBR mechanism", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "95b5f4ae695d2164979fd25b51025c2e0bd53625", "submitter": { "id": 970, "url": "http://patches.dpdk.org/api/people/970/?format=api", "name": "Joyce Kong", "email": "joyce.kong@arm.com" }, "delegate": { "id": 24651, "url": "http://patches.dpdk.org/api/users/24651/?format=api", "username": "dmarchand", "first_name": "David", "last_name": "Marchand", "email": "david.marchand@redhat.com" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/20200911054534.55378-4-joyce.kong@arm.com/mbox/", "series": [ { "id": 12130, "url": "http://patches.dpdk.org/api/series/12130/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=12130", "date": "2020-09-11T05:45:30", "name": "remove experimental tags from APIs", "version": 1, "mbox": "http://patches.dpdk.org/series/12130/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/77326/comments/", "check": "success", "checks": "http://patches.dpdk.org/api/patches/77326/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id EA3C7A04B5;\n\tFri, 11 Sep 2020 07:46:13 +0200 (CEST)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 64EFB1C0DA;\n\tFri, 11 Sep 2020 07:46:04 +0200 (CEST)", "from foss.arm.com (foss.arm.com [217.140.110.172])\n by dpdk.org (Postfix) with ESMTP id 5BF111C0CC\n for <dev@dpdk.org>; Fri, 11 Sep 2020 07:46:03 +0200 (CEST)", "from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D46B8106F;\n Thu, 10 Sep 2020 22:46:02 -0700 (PDT)", "from net-arm-thunderx2-03.shanghai.arm.com\n (net-arm-thunderx2-03.shanghai.arm.com [10.169.210.123])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id A405E3F68F;\n Thu, 10 Sep 2020 22:46:00 -0700 (PDT)" ], "From": "Joyce Kong <joyce.kong@arm.com>", "To": "thomas@monjalon.net, honnappa.nagarahalli@arm.com, phil.yang@arm.com,\n ruifeng.wang@arm.com", "Cc": "dev@dpdk.org,\n\tnd@arm.com", "Date": "Fri, 11 Sep 2020 13:45:33 +0800", "Message-Id": "<20200911054534.55378-4-joyce.kong@arm.com>", "X-Mailer": "git-send-email 2.28.0", "In-Reply-To": "<20200911054534.55378-1-joyce.kong@arm.com>", "References": "<20200911054534.55378-1-joyce.kong@arm.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[dpdk-dev] [PATCH 3/4] rcu: remove experimental tag from QSBR\n\tmechanism", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "RCU library supporting quiescent state was introduced\nin 19.05 release and has been around 4 releases, it\nshould be mature enough to remove the experimental tag.\n\nSigned-off-by: Joyce Kong <joyce.kong@arm.com>\nReviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>\n---\n MAINTAINERS | 2 +-\n lib/librte_rcu/rte_rcu_qsbr.h | 52 ------------------------------\n lib/librte_rcu/rte_rcu_version.map | 11 +++++--\n 3 files changed, 10 insertions(+), 55 deletions(-)", "diff": "diff --git a/MAINTAINERS b/MAINTAINERS\nindex 0e43a28bf..12f088b62 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -1449,7 +1449,7 @@ M: Olivier Matz <olivier.matz@6wind.com>\n F: lib/librte_kvargs/\n F: app/test/test_kvargs.c\n \n-RCU - EXPERIMENTAL\n+RCU\n M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>\n F: lib/librte_rcu/\n F: app/test/test_rcu*\ndiff --git a/lib/librte_rcu/rte_rcu_qsbr.h b/lib/librte_rcu/rte_rcu_qsbr.h\nindex a98e8f0f8..5905c53a5 100644\n--- a/lib/librte_rcu/rte_rcu_qsbr.h\n+++ b/lib/librte_rcu/rte_rcu_qsbr.h\n@@ -202,9 +202,6 @@ struct rte_rcu_qsbr_dq_parameters {\n struct rte_rcu_qsbr_dq;\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Return the size of the memory occupied by a Quiescent State variable.\n *\n * @param max_threads\n@@ -215,14 +212,10 @@ struct rte_rcu_qsbr_dq;\n * Possible rte_errno codes are:\n * - EINVAL - max_threads is 0\n */\n-__rte_experimental\n size_t\n rte_rcu_qsbr_get_memsize(uint32_t max_threads);\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Initialize a Quiescent State (QS) variable.\n *\n * @param v\n@@ -237,14 +230,10 @@ rte_rcu_qsbr_get_memsize(uint32_t max_threads);\n * - EINVAL - max_threads is 0 or 'v' is NULL.\n *\n */\n-__rte_experimental\n int\n rte_rcu_qsbr_init(struct rte_rcu_qsbr *v, uint32_t max_threads);\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Register a reader thread to report its quiescent state\n * on a QS variable.\n *\n@@ -264,14 +253,10 @@ rte_rcu_qsbr_init(struct rte_rcu_qsbr *v, uint32_t max_threads);\n * the QS variable. thread_id is a value between 0 and (max_threads - 1).\n * 'max_threads' is the parameter passed in 'rte_rcu_qsbr_init' API.\n */\n-__rte_experimental\n int\n rte_rcu_qsbr_thread_register(struct rte_rcu_qsbr *v, unsigned int thread_id);\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Remove a reader thread, from the list of threads reporting their\n * quiescent state on a QS variable.\n *\n@@ -286,14 +271,10 @@ rte_rcu_qsbr_thread_register(struct rte_rcu_qsbr *v, unsigned int thread_id);\n * Reader thread with this thread ID will stop reporting its quiescent\n * state on the QS variable.\n */\n-__rte_experimental\n int\n rte_rcu_qsbr_thread_unregister(struct rte_rcu_qsbr *v, unsigned int thread_id);\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Add a registered reader thread, to the list of threads reporting their\n * quiescent state on a QS variable.\n *\n@@ -318,7 +299,6 @@ rte_rcu_qsbr_thread_unregister(struct rte_rcu_qsbr *v, unsigned int thread_id);\n * Reader thread with this thread ID will report its quiescent state on\n * the QS variable.\n */\n-__rte_experimental\n static __rte_always_inline void\n rte_rcu_qsbr_thread_online(struct rte_rcu_qsbr *v, unsigned int thread_id)\n {\n@@ -358,9 +338,6 @@ rte_rcu_qsbr_thread_online(struct rte_rcu_qsbr *v, unsigned int thread_id)\n }\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Remove a registered reader thread from the list of threads reporting their\n * quiescent state on a QS variable.\n *\n@@ -380,7 +357,6 @@ rte_rcu_qsbr_thread_online(struct rte_rcu_qsbr *v, unsigned int thread_id)\n * rte_rcu_qsbr_check API will not wait for the reader thread with\n * this thread ID to report its quiescent state on the QS variable.\n */\n-__rte_experimental\n static __rte_always_inline void\n rte_rcu_qsbr_thread_offline(struct rte_rcu_qsbr *v, unsigned int thread_id)\n {\n@@ -399,9 +375,6 @@ rte_rcu_qsbr_thread_offline(struct rte_rcu_qsbr *v, unsigned int thread_id)\n }\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Acquire a lock for accessing a shared data structure.\n *\n * This is implemented as a lock-free function. It is multi-thread\n@@ -421,7 +394,6 @@ rte_rcu_qsbr_thread_offline(struct rte_rcu_qsbr *v, unsigned int thread_id)\n * @param thread_id\n * Reader thread id\n */\n-__rte_experimental\n static __rte_always_inline void\n rte_rcu_qsbr_lock(__rte_unused struct rte_rcu_qsbr *v,\n \t\t\t__rte_unused unsigned int thread_id)\n@@ -436,9 +408,6 @@ rte_rcu_qsbr_lock(__rte_unused struct rte_rcu_qsbr *v,\n }\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Release a lock after accessing a shared data structure.\n *\n * This is implemented as a lock-free function. It is multi-thread\n@@ -458,7 +427,6 @@ rte_rcu_qsbr_lock(__rte_unused struct rte_rcu_qsbr *v,\n * @param thread_id\n * Reader thread id\n */\n-__rte_experimental\n static __rte_always_inline void\n rte_rcu_qsbr_unlock(__rte_unused struct rte_rcu_qsbr *v,\n \t\t\t__rte_unused unsigned int thread_id)\n@@ -477,9 +445,6 @@ rte_rcu_qsbr_unlock(__rte_unused struct rte_rcu_qsbr *v,\n }\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Ask the reader threads to report the quiescent state\n * status.\n *\n@@ -492,7 +457,6 @@ rte_rcu_qsbr_unlock(__rte_unused struct rte_rcu_qsbr *v,\n * - This is the token for this call of the API. This should be\n * passed to rte_rcu_qsbr_check API.\n */\n-__rte_experimental\n static __rte_always_inline uint64_t\n rte_rcu_qsbr_start(struct rte_rcu_qsbr *v)\n {\n@@ -511,9 +475,6 @@ rte_rcu_qsbr_start(struct rte_rcu_qsbr *v)\n }\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Update quiescent state for a reader thread.\n *\n * This is implemented as a lock-free function. It is multi-thread safe.\n@@ -525,7 +486,6 @@ rte_rcu_qsbr_start(struct rte_rcu_qsbr *v)\n * @param thread_id\n * Update the quiescent state for the reader with this thread ID.\n */\n-__rte_experimental\n static __rte_always_inline void\n rte_rcu_qsbr_quiescent(struct rte_rcu_qsbr *v, unsigned int thread_id)\n {\n@@ -683,9 +643,6 @@ __rte_rcu_qsbr_check_all(struct rte_rcu_qsbr *v, uint64_t t, bool wait)\n }\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Checks if all the reader threads have entered the quiescent state\n * referenced by token.\n *\n@@ -716,7 +673,6 @@ __rte_rcu_qsbr_check_all(struct rte_rcu_qsbr *v, uint64_t t, bool wait)\n * - 1 if all reader threads have passed through specified number\n * of quiescent states.\n */\n-__rte_experimental\n static __rte_always_inline int\n rte_rcu_qsbr_check(struct rte_rcu_qsbr *v, uint64_t t, bool wait)\n {\n@@ -740,9 +696,6 @@ rte_rcu_qsbr_check(struct rte_rcu_qsbr *v, uint64_t t, bool wait)\n }\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Wait till the reader threads have entered quiescent state.\n *\n * This is implemented as a lock-free function. It is multi-thread safe.\n@@ -760,14 +713,10 @@ rte_rcu_qsbr_check(struct rte_rcu_qsbr *v, uint64_t t, bool wait)\n * on this QS variable (i.e. the calling thread is also part of the\n * readside critical section). If not, pass RTE_QSBR_THRID_INVALID.\n */\n-__rte_experimental\n void\n rte_rcu_qsbr_synchronize(struct rte_rcu_qsbr *v, unsigned int thread_id);\n \n /**\n- * @warning\n- * @b EXPERIMENTAL: this API may change without prior notice\n- *\n * Dump the details of a single QS variables to a file.\n *\n * It is NOT multi-thread safe.\n@@ -782,7 +731,6 @@ rte_rcu_qsbr_synchronize(struct rte_rcu_qsbr *v, unsigned int thread_id);\n * Possible rte_errno codes are:\n * - EINVAL - NULL parameters are passed\n */\n-__rte_experimental\n int\n rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);\n \ndiff --git a/lib/librte_rcu/rte_rcu_version.map b/lib/librte_rcu/rte_rcu_version.map\nindex dfac88a37..e40850350 100644\n--- a/lib/librte_rcu/rte_rcu_version.map\n+++ b/lib/librte_rcu/rte_rcu_version.map\n@@ -1,5 +1,5 @@\n-EXPERIMENTAL {\n-\tglobal:\n+DPDK_21 {\n+ global:\n \n \trte_rcu_log_type;\n \trte_rcu_qsbr_dump;\n@@ -8,6 +8,13 @@ EXPERIMENTAL {\n \trte_rcu_qsbr_synchronize;\n \trte_rcu_qsbr_thread_register;\n \trte_rcu_qsbr_thread_unregister;\n+\n+ local: *;\n+};\n+\n+EXPERIMENTAL {\n+\tglobal:\n+\n \trte_rcu_qsbr_dq_create;\n \trte_rcu_qsbr_dq_enqueue;\n \trte_rcu_qsbr_dq_reclaim;\n", "prefixes": [ "3/4" ] }{ "id": 77326, "url": "