get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/124624/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 124624,
    "url": "http://patches.dpdk.org/api/patches/124624/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1677718068-2412-5-git-send-email-roretzla@linux.microsoft.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": "<1677718068-2412-5-git-send-email-roretzla@linux.microsoft.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1677718068-2412-5-git-send-email-roretzla@linux.microsoft.com",
    "date": "2023-03-02T00:47:35",
    "name": "[04/17] eal: use previous value atomic fetch operations",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "1bccc2a753dedd90d0d8599e7e61c2e1cdbd2de0",
    "submitter": {
        "id": 2077,
        "url": "http://patches.dpdk.org/api/people/2077/?format=api",
        "name": "Tyler Retzlaff",
        "email": "roretzla@linux.microsoft.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1677718068-2412-5-git-send-email-roretzla@linux.microsoft.com/mbox/",
    "series": [
        {
            "id": 27214,
            "url": "http://patches.dpdk.org/api/series/27214/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=27214",
            "date": "2023-03-02T00:47:32",
            "name": "use __atomic operations returning previous value",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/27214/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/124624/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/124624/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 mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id D4C0941DAF;\n\tThu,  2 Mar 2023 01:48:29 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id CF78942BC9;\n\tThu,  2 Mar 2023 01:48:08 +0100 (CET)",
            "from linux.microsoft.com (linux.microsoft.com [13.77.154.182])\n by mails.dpdk.org (Postfix) with ESMTP id C564E4114B\n for <dev@dpdk.org>; Thu,  2 Mar 2023 01:48:02 +0100 (CET)",
            "by linux.microsoft.com (Postfix, from userid 1086)\n id 1C53A20B9C3D; Wed,  1 Mar 2023 16:48:01 -0800 (PST)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 linux.microsoft.com 1C53A20B9C3D",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com;\n s=default; t=1677718082;\n bh=v7bX/IZDWji7zuUvfdgDI1zNnPd7EEraibw3/SQnAZQ=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=E4PCQXjM2qCcshoLC4BsGTxVns0KNV9S1QodMJMvB7JGmLtfpu/dwjqPfqoR3IWmp\n 89XtfBj2xkPhyn9Tnliphgm36/2+nZaL9JRd+y6dhm6fSm1YoBa7RjRUgRTxpcy+7B\n jqnoTpPetILjKBrrjiqBbkw8TkgVQq4IQZleHDTU=",
        "From": "Tyler Retzlaff <roretzla@linux.microsoft.com>",
        "To": "dev@dpdk.org",
        "Cc": "Honnappa.Nagarahalli@arm.com, thomas@monjalon.net,\n Tyler Retzlaff <roretzla@linux.microsoft.com>",
        "Subject": "[PATCH 04/17] eal: use previous value atomic fetch operations",
        "Date": "Wed,  1 Mar 2023 16:47:35 -0800",
        "Message-Id": "<1677718068-2412-5-git-send-email-roretzla@linux.microsoft.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1677718068-2412-1-git-send-email-roretzla@linux.microsoft.com>",
        "References": "<1677718068-2412-1-git-send-email-roretzla@linux.microsoft.com>",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "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"
    },
    "content": "Use __atomic_fetch_{add,and,or,sub,xor} instead of\n__atomic_{add,and,or,sub,xor}_fetch when we have no interest in the\nresult of the operation.\n\nReduces unnecessary codegen that provided the result of the atomic\noperation that was not used.\n\nChange brings closer alignment with atomics available in C11 standard\nand will reduce review effort when they are integrated.\n\nSigned-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>\n---\n lib/eal/common/eal_common_trace.c |  8 ++++----\n lib/eal/common/rte_service.c      |  8 ++++----\n lib/eal/ppc/include/rte_atomic.h  | 16 ++++++++--------\n 3 files changed, 16 insertions(+), 16 deletions(-)",
    "diff": "diff --git a/lib/eal/common/eal_common_trace.c b/lib/eal/common/eal_common_trace.c\nindex 75162b7..cb980af 100644\n--- a/lib/eal/common/eal_common_trace.c\n+++ b/lib/eal/common/eal_common_trace.c\n@@ -103,10 +103,10 @@ struct trace_point_head *\n trace_mode_set(rte_trace_point_t *t, enum rte_trace_mode mode)\n {\n \tif (mode == RTE_TRACE_MODE_OVERWRITE)\n-\t\t__atomic_and_fetch(t, ~__RTE_TRACE_FIELD_ENABLE_DISCARD,\n+\t\t__atomic_fetch_and(t, ~__RTE_TRACE_FIELD_ENABLE_DISCARD,\n \t\t\t__ATOMIC_RELEASE);\n \telse\n-\t\t__atomic_or_fetch(t, __RTE_TRACE_FIELD_ENABLE_DISCARD,\n+\t\t__atomic_fetch_or(t, __RTE_TRACE_FIELD_ENABLE_DISCARD,\n \t\t\t__ATOMIC_RELEASE);\n }\n \n@@ -155,7 +155,7 @@ rte_trace_mode rte_trace_mode_get(void)\n \n \tprev = __atomic_fetch_or(t, __RTE_TRACE_FIELD_ENABLE_MASK, __ATOMIC_RELEASE);\n \tif ((prev & __RTE_TRACE_FIELD_ENABLE_MASK) == 0)\n-\t\t__atomic_add_fetch(&trace.status, 1, __ATOMIC_RELEASE);\n+\t\t__atomic_fetch_add(&trace.status, 1, __ATOMIC_RELEASE);\n \treturn 0;\n }\n \n@@ -169,7 +169,7 @@ rte_trace_mode rte_trace_mode_get(void)\n \n \tprev = __atomic_fetch_and(t, ~__RTE_TRACE_FIELD_ENABLE_MASK, __ATOMIC_RELEASE);\n \tif ((prev & __RTE_TRACE_FIELD_ENABLE_MASK) != 0)\n-\t\t__atomic_sub_fetch(&trace.status, 1, __ATOMIC_RELEASE);\n+\t\t__atomic_fetch_sub(&trace.status, 1, __ATOMIC_RELEASE);\n \treturn 0;\n }\n \ndiff --git a/lib/eal/common/rte_service.c b/lib/eal/common/rte_service.c\nindex 42ca1d0..7ab48f2 100644\n--- a/lib/eal/common/rte_service.c\n+++ b/lib/eal/common/rte_service.c\n@@ -464,11 +464,11 @@ struct core_state {\n \t/* Increment num_mapped_cores to reflect that this core is\n \t * now mapped capable of running the service.\n \t */\n-\t__atomic_add_fetch(&s->num_mapped_cores, 1, __ATOMIC_RELAXED);\n+\t__atomic_fetch_add(&s->num_mapped_cores, 1, __ATOMIC_RELAXED);\n \n \tint ret = service_run(id, cs, UINT64_MAX, s, serialize_mt_unsafe);\n \n-\t__atomic_sub_fetch(&s->num_mapped_cores, 1, __ATOMIC_RELAXED);\n+\t__atomic_fetch_sub(&s->num_mapped_cores, 1, __ATOMIC_RELAXED);\n \n \treturn ret;\n }\n@@ -638,12 +638,12 @@ struct core_state {\n \n \t\tif (*set && !lcore_mapped) {\n \t\t\tlcore_states[lcore].service_mask |= sid_mask;\n-\t\t\t__atomic_add_fetch(&rte_services[sid].num_mapped_cores,\n+\t\t\t__atomic_fetch_add(&rte_services[sid].num_mapped_cores,\n \t\t\t\t1, __ATOMIC_RELAXED);\n \t\t}\n \t\tif (!*set && lcore_mapped) {\n \t\t\tlcore_states[lcore].service_mask &= ~(sid_mask);\n-\t\t\t__atomic_sub_fetch(&rte_services[sid].num_mapped_cores,\n+\t\t\t__atomic_fetch_sub(&rte_services[sid].num_mapped_cores,\n \t\t\t\t1, __ATOMIC_RELAXED);\n \t\t}\n \t}\ndiff --git a/lib/eal/ppc/include/rte_atomic.h b/lib/eal/ppc/include/rte_atomic.h\nindex 663b4d3..2ab735b 100644\n--- a/lib/eal/ppc/include/rte_atomic.h\n+++ b/lib/eal/ppc/include/rte_atomic.h\n@@ -60,13 +60,13 @@ static inline int rte_atomic16_test_and_set(rte_atomic16_t *v)\n static inline void\n rte_atomic16_inc(rte_atomic16_t *v)\n {\n-\t__atomic_add_fetch(&v->cnt, 1, __ATOMIC_ACQUIRE);\n+\t__atomic_fetch_add(&v->cnt, 1, __ATOMIC_ACQUIRE);\n }\n \n static inline void\n rte_atomic16_dec(rte_atomic16_t *v)\n {\n-\t__atomic_sub_fetch(&v->cnt, 1, __ATOMIC_ACQUIRE);\n+\t__atomic_fetch_sub(&v->cnt, 1, __ATOMIC_ACQUIRE);\n }\n \n static inline int rte_atomic16_inc_and_test(rte_atomic16_t *v)\n@@ -102,13 +102,13 @@ static inline int rte_atomic32_test_and_set(rte_atomic32_t *v)\n static inline void\n rte_atomic32_inc(rte_atomic32_t *v)\n {\n-\t__atomic_add_fetch(&v->cnt, 1, __ATOMIC_ACQUIRE);\n+\t__atomic_fetch_add(&v->cnt, 1, __ATOMIC_ACQUIRE);\n }\n \n static inline void\n rte_atomic32_dec(rte_atomic32_t *v)\n {\n-\t__atomic_sub_fetch(&v->cnt, 1, __ATOMIC_ACQUIRE);\n+\t__atomic_fetch_sub(&v->cnt, 1, __ATOMIC_ACQUIRE);\n }\n \n static inline int rte_atomic32_inc_and_test(rte_atomic32_t *v)\n@@ -157,25 +157,25 @@ static inline int rte_atomic32_dec_and_test(rte_atomic32_t *v)\n static inline void\n rte_atomic64_add(rte_atomic64_t *v, int64_t inc)\n {\n-\t__atomic_add_fetch(&v->cnt, inc, __ATOMIC_ACQUIRE);\n+\t__atomic_fetch_add(&v->cnt, inc, __ATOMIC_ACQUIRE);\n }\n \n static inline void\n rte_atomic64_sub(rte_atomic64_t *v, int64_t dec)\n {\n-\t__atomic_sub_fetch(&v->cnt, dec, __ATOMIC_ACQUIRE);\n+\t__atomic_fetch_sub(&v->cnt, dec, __ATOMIC_ACQUIRE);\n }\n \n static inline void\n rte_atomic64_inc(rte_atomic64_t *v)\n {\n-\t__atomic_add_fetch(&v->cnt, 1, __ATOMIC_ACQUIRE);\n+\t__atomic_fetch_add(&v->cnt, 1, __ATOMIC_ACQUIRE);\n }\n \n static inline void\n rte_atomic64_dec(rte_atomic64_t *v)\n {\n-\t__atomic_sub_fetch(&v->cnt, 1, __ATOMIC_ACQUIRE);\n+\t__atomic_fetch_sub(&v->cnt, 1, __ATOMIC_ACQUIRE);\n }\n \n static inline int64_t\n",
    "prefixes": [
        "04/17"
    ]
}