Show a cover letter.

GET /api/covers/889/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 889,
    "url": "http://patchwork.dpdk.org/api/covers/889/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/20240425085853.97888-1-mattias.ronnblom@ericsson.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20240425085853.97888-1-mattias.ronnblom@ericsson.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20240425085853.97888-1-mattias.ronnblom@ericsson.com",
    "date": "2024-04-25T08:58:47",
    "name": "[RFC,v2,0/6] Improve EAL bit operations API",
    "submitter": {
        "id": 1077,
        "url": "http://patchwork.dpdk.org/api/people/1077/?format=api",
        "name": "Mattias Rönnblom",
        "email": "mattias.ronnblom@ericsson.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/cover/20240425085853.97888-1-mattias.ronnblom@ericsson.com/mbox/",
    "series": [
        {
            "id": 31818,
            "url": "http://patchwork.dpdk.org/api/series/31818/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=31818",
            "date": "2024-04-25T08:58:47",
            "name": "Improve EAL bit operations API",
            "version": 2,
            "mbox": "http://patchwork.dpdk.org/series/31818/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/889/comments/",
    "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 416F243F04;\n\tThu, 25 Apr 2024 11:09:23 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id BACD9436B3;\n\tThu, 25 Apr 2024 11:09:22 +0200 (CEST)",
            "from EUR01-HE1-obe.outbound.protection.outlook.com\n (mail-he1eur01on2083.outbound.protection.outlook.com [40.107.13.83])\n by mails.dpdk.org (Postfix) with ESMTP id A5997436A5\n for <dev@dpdk.org>; Thu, 25 Apr 2024 11:09:21 +0200 (CEST)",
            "from DU2PR04CA0171.eurprd04.prod.outlook.com (2603:10a6:10:2b0::26)\n by VI1PR07MB6432.eurprd07.prod.outlook.com (2603:10a6:800:137::18)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.22; Thu, 25 Apr\n 2024 09:09:18 +0000",
            "from DU2PEPF00028D0B.eurprd03.prod.outlook.com\n (2603:10a6:10:2b0:cafe::7b) by DU2PR04CA0171.outlook.office365.com\n (2603:10a6:10:2b0::26) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7519.25 via Frontend\n Transport; Thu, 25 Apr 2024 09:09:18 +0000",
            "from oa.msg.ericsson.com (192.176.1.74) by\n DU2PEPF00028D0B.mail.protection.outlook.com (10.167.242.171) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.7519.19 via Frontend Transport; Thu, 25 Apr 2024 09:09:17 +0000",
            "from seliicinfr00050.seli.gic.ericsson.se (153.88.142.248) by\n smtp-central.internal.ericsson.com (100.87.178.60) with Microsoft SMTP Server\n id 15.2.1544.9; Thu, 25 Apr 2024 11:09:17 +0200",
            "from breslau.. (seliicwb00002.seli.gic.ericsson.se [10.156.25.100])\n by seliicinfr00050.seli.gic.ericsson.se (Postfix) with ESMTP id\n 559891C006A; Thu, 25 Apr 2024 11:09:17 +0200 (CEST)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=HHVy24b69MZZdoxjBztlQo18rxg1FNimNnUeFuzJQMnkD6QmI/AFRYuoSbpCN1Xzc46e706baxgm201T+D93La6fgRJQaoXLMDeSgxNDjtExrytcxlXnD5jfP/dPEdLzwb+a63iuC0jQbiY17A7sfFi3eP111dMb+6N0cbmbEI/hk+t34y/ciAIjRQKGzzu66qW1T2cA+pvK0m/ZLISHhOBDQN32QDnSr8ABe+2NDAYj4Rx6CbO1JiQquqKLwE4X7N7UTC4Vm3Ubj8DEVQgU4NXsDho/8yXCjor4ocqUm3yi9tJuUmiEYsCHYdv1KgM7VUPojQ1PEIByJnR9qteV3Q==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=fefagGg/AMhO+IsnQUFmTKRg7ddMLJ1biyG6VM2Jayo=;\n b=SQnIQDV0IGGtmIMLDfqBnu1GSyHO6R8vCY1Vq3tzOTU1dWXLZjDqCt6r/Wz50VQn1DSTGox2180kodYvwrCS9LdGoGduHHgNEYZfaqkr8h2cxB8ZaWwnGUO98SJCDr98PZr1WM+2mAfqv5X337C3Eial0nbUUuZ158zoHzDEjkl8/mCcrcNnJ20EV5OoKOcKbudnYIhoXfcgoqJ6MM2sqb5Njj0Xer5AQzZZEYlWIQgbHiFIWwZIzpI/uYJLs5icEizSZiTckkjCWbRV+Gzn3dVGP8diNkaZ1xdqfyrDmuKb5VHTobAp/yH1TGzmaTIQrtKwEhzAGa7OQ5WRD+zOyw==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 192.176.1.74) smtp.rcpttodomain=dpdk.org smtp.mailfrom=ericsson.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=ericsson.com;\n dkim=none (message not signed); arc=none (0)",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=fefagGg/AMhO+IsnQUFmTKRg7ddMLJ1biyG6VM2Jayo=;\n b=T7LKqUIjDzGDRaVQo/9IH+py3USJUUMIvReAUN3/mNz35ao3A3u3ShZgCgU1zeFMpjfuki23PHLxrRnS02cQDmYR1MmpJXZrH4WfsfYYPvrRJxTnKduy96jzLe85EzIv/6bD3Qpfaj48VAtWWI+4VAOSuLOzYvFYUpUNgExB5yG3icDiX37uUuUDQgMAzkQxMdFsnjaXm+i/KGeqmcG8efvR3oguwUkzYH84gHDUFW8Gv7Y22alTTLK9q36jvIV4l9vFafcUuzVXxP05BNSUNp1iAIqvh6OnTTtc3Erdm3Ht7zzPGJPuclJEOtUdyAM2AvvHuLW3i/Gh0reT2c9oYA==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 192.176.1.74)\n smtp.mailfrom=ericsson.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=ericsson.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of ericsson.com designates\n 192.176.1.74 as permitted sender)\n receiver=protection.outlook.com;\n client-ip=192.176.1.74; helo=oa.msg.ericsson.com; pr=C",
        "From": "=?utf-8?q?Mattias_R=C3=B6nnblom?= <mattias.ronnblom@ericsson.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<hofors@lysator.liu.se>, Heng Wang <heng.wang@ericsson.com>,\n \"Stephen Hemminger\" <stephen@networkplumber.org>,\n Tyler Retzlaff <roretzla@linux.microsoft.com>, =?utf-8?q?Mattias_R=C3=B6nnb?=\n\t=?utf-8?q?lom?= <mattias.ronnblom@ericsson.com>",
        "Subject": "[RFC v2 0/6] Improve EAL bit operations API",
        "Date": "Thu, 25 Apr 2024 10:58:47 +0200",
        "Message-ID": "<20240425085853.97888-1-mattias.ronnblom@ericsson.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20240302135328.531940-2-mattias.ronnblom@ericsson.com>",
        "References": "<20240302135328.531940-2-mattias.ronnblom@ericsson.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"UTF-8\"",
        "Content-Transfer-Encoding": "8bit",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "DU2PEPF00028D0B:EE_|VI1PR07MB6432:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "6ece8a9a-8f1b-4575-2b10-08dc6507630a",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230031|36860700004|82310400014|376005|1800799015;",
        "X-Microsoft-Antispam-Message-Info": "=?utf-8?q?rp32MFLUit3ISkDBc3ccjPveTmOaZA4?=\n\t=?utf-8?q?26anTit+tqBApb7x3pSCrpjxkRDi9VhgWkIbJEhvnVwkeXvoS57ZuDp80TrOgvkMf?=\n\t=?utf-8?q?ePZrs+RiyJK4pSBJHn8JBpVuvoxXP/5gSjNoPB3l/xVcohMrtyACQvFi7067LlwaR?=\n\t=?utf-8?q?9LCnagXGQhKJhu6v3pCpSAr3qdfqiNBIOlyBgAyb5qLJvUDYkd/dyHJEr0zwjvJMr?=\n\t=?utf-8?q?r3n1YaQ0cG0t4AlK99p9L7MnHsMQuLWQPyO+xHOMsY5nrBsC9Og9aNyVldq8+Vx1Z?=\n\t=?utf-8?q?DceuM9AGbmv8boLulJsPwhbU8dOFN7QMjneI29CIMMAuksZ95XreJ21aQZ/gk5h8F?=\n\t=?utf-8?q?R30DyOnDAz9JTKj44ADAxl3Drs+GP4gAE8U8mMg51nzR+cC+Q/YUoANQMLzIhRKXm?=\n\t=?utf-8?q?hC6L3iGE9w9BRI0AO8N9B6jjH00055YjAkqGmrtkjWh17r0YsLDidhILqyMzogENf?=\n\t=?utf-8?q?dTaeB32HWPLc/SnrA9hntY4ddGvY7nglJR/M+i7No2MDwmu/+ZNCFJBwtP9JTMVj8?=\n\t=?utf-8?q?VqiQitRXrkal0fMkpsyinOGDbyQIcz2vHqOgDDC4r0mwHBF95d+qBnWnsioecMqhR?=\n\t=?utf-8?q?rSK8JrmkfcZx5OoTYxY2SRQhsWmExko3QoaxiWISNa6M8ObLAqRd15CiOHuZPMQeY?=\n\t=?utf-8?q?LWDvC0EuVp1FzpGo/CjTwlu84KA607zNFt/gEOdZaZRfpLlCJ1PetSuTBd5jzw1Sz?=\n\t=?utf-8?q?PxKlpzyHIjRK6hdiqJC3YBaQui0iMAdxXSXJABCeedVdqYrIIpZxWm1g1yTnaH9Eq?=\n\t=?utf-8?q?+h4dAl/HHSsXx/j35jgnQkqBY0x/7btdJGsF60n6DrRtUNOmKzz3MLLFY9oD7MdAm?=\n\t=?utf-8?q?qhIIgIqdAJiQ5B8+vE35tKhkjicSJiDORcqXA+wwnOTftymB9V7T/JZEyW3JQ8r/4?=\n\t=?utf-8?q?22CkjrS8Lj4n3s7glt9oNd+gBxikQjnQPVSFimioucwMU8Q58Xj/RFXIkUw558rib?=\n\t=?utf-8?q?H0M8AwqTVYXsC9rBtyWYXF7tymBcQN7Wp8oE9TMXUi7ZANMaOf4mf4bYTtjx6rm8T?=\n\t=?utf-8?q?SW6zCEg4c5B5Ylsi7j4ZP/cWji3iRDlIqd+8mjUhskz/mr8rqZc+/G7HxhjceIBBs?=\n\t=?utf-8?q?uUoNWo7l0l6yNWRePoYFNgWBOhQPJp7HP06zzqmht9E2JjptFR2/G2BfhRfHAIORe?=\n\t=?utf-8?q?xzS8DgTdrTM51IGmZZWKPn+vw+3bcfMVpQZTFe7JsHqNWr9qNJIC64sxJP2nvIAzw?=\n\t=?utf-8?q?ml8fC75NtN9QBqj5A+OyEN81LpieYH2O20Dk1S3E1AP2A0bEOkUcdSIEH32xhNO+Z?=\n\t=?utf-8?q?FjN9HsGas5g5h/HmrHRw6QIH7DH0gPiO/ZMSiWAUuNb1MAa+E+6COJzcoOp03Mxpw?=\n\t=?utf-8?q?bS6wzQhtVpbg?=",
        "X-Forefront-Antispam-Report": "CIP:192.176.1.74; CTRY:SE; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:oa.msg.ericsson.com; PTR:office365.se.ericsson.net;\n CAT:NONE; SFS:(13230031)(36860700004)(82310400014)(376005)(1800799015);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "ericsson.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "25 Apr 2024 09:09:17.9773 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 6ece8a9a-8f1b-4575-2b10-08dc6507630a",
        "X-MS-Exchange-CrossTenant-Id": "92e84ceb-fbfd-47ab-be52-080c6b87953f",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=92e84ceb-fbfd-47ab-be52-080c6b87953f; Ip=[192.176.1.74];\n Helo=[oa.msg.ericsson.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n DU2PEPF00028D0B.eurprd03.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "VI1PR07MB6432",
        "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": "This patch set represent an attempt to improve and extend the RTE\nbitops API, in particular for functions that operate on individual\nbits.\n\nAll new functionality is exposed to the user as generic selection\nmacros, delegating the actual work to private (__-marked) static\ninline functions. Public functions (e.g., rte_bit_set32()) would just\nbe bloating the API. Such generic selection macros will here be\nreferred to as \"functions\", although technically they are not.\n\nThe legacy <rte_bitops.h> rte_bit_relaxed_*() family of functions is\nreplaced with three families:\n\nrte_bit_[test|set|clear|assign]() which provides no memory ordering or\natomicity guarantees and no read-once or write-once semantics (e.g.,\nno use of volatile), but does provide the best performance. The\nperformance degradation resulting from the use of volatile (e.g.,\nforcing loads and stores to actually occur and in the number\nspecified) and atomic (e.g., LOCK-prefixed instructions on x86) may be\nsignificant.\n\nrte_bit_once_*() which guarantees program-level load and stores\nactually occurring (i.e., prevents certain optimizations). The primary\nuse of these functions are in the context of memory mapped\nI/O. Feedback on the details (semantics, naming) here would be greatly\nappreciated, since the author is not much of a driver developer.\n\nrte_bit_atomic_*() which provides atomic bit-level operations,\nincluding the possibility to specifying memory ordering constraints\n(or the lack thereof).\n\nThe atomic functions take non-_Atomic pointers, to be flexible, just\nlike the GCC builtins and default <rte_stdatomic.h>. The issue with\n_Atomic APIs is that it may well be the case that the user wants to\nperform both non-atomic and atomic operations on the same word.\n\nHaving _Atomic-marked addresses would complicate supporting atomic\nbit-level operations in the bitset API (proposed in a different RFC\npatchset), and potentially other APIs depending on RTE bitops for\natomic bit-level ops). Either one needs two bitset variants, one\n_Atomic bitset and one non-atomic one, or the bitset code needs to\ncast the non-_Atomic pointer to an _Atomic one. Having a separate\n_Atomic bitset would be bloat and also prevent the user from both, in\nsome situations, doing atomic operations against a bit set, while in\nother situations (e.g., at times when MT safety is not a concern)\noperating on the same objects in a non-atomic manner.\n\nUnlike rte_bit_relaxed_*(), individual bits are represented by bool,\nnot uint32_t or uint64_t. The author found the use of such large types\nconfusing, and also failed to see any performance benefits.\n\nA set of functions rte_bit_*_assign() are added, to assign a\nparticular boolean value to a particular bit.\n\nAll new functions have properly documented semantics.\n\nAll new functions (or more correctly, generic selection macros)\noperate on both 32 and 64-bit words, with type checking.\n\n_Generic allow the user code to be a little more impact. Have a\ntype-generic atomic test/set/clear/assign bit API also seems\nconsistent with the \"core\" (word-size) atomics API, which is generic\n(both GCC builtins and <rte_stdatomic.h> are).\n\nThe _Generic versions avoids having explicit unsigned long versions of\nall functions. If you have an unsigned long, it's safe to use the\ngeneric version (e.g., rte_set_bit()) and _Generic will pick the right\nfunction, provided long is either 32 or 64 bit on your platform (which\nit is on all DPDK-supported ABIs).\n\nThe generic rte_bit_set() is a macro, and not a function, but\nnevertheless has been given a lower-case name. That's how C11 does it\n(for atomics, and other _Generic), and <rte_stdatomic.h>. Its address\ncan't be taken, but it does not evaluate its parameters more than\nonce.\n\nThings that are left out of this patch set, that may be included\nin future versions:\n\n * Have all functions returning a bit number have the same return type\n   (i.e., unsigned int).\n * Harmonize naming of some GCC builtin wrappers (i.e., rte_fls_u32()).\n * Add __builtin_ffsll()/ffs() wrapper and potentially other wrappers\n   for useful/used bit-level GCC builtins.\n * Eliminate the MSVC #ifdef-induced documentation duplication.\n * _Generic versions of things like rte_popcount32(). (?)\n\nMattias Rönnblom (6):\n  eal: extend bit manipulation functionality\n  eal: add unit tests for bit operations\n  eal: add exactly-once bit access functions\n  eal: add unit tests for exactly-once bit access functions\n  eal: add atomic bit operations\n  eal: add unit tests for atomic bit access functions\n\n app/test/test_bitops.c       | 319 +++++++++++++++++-\n lib/eal/include/rte_bitops.h | 624 ++++++++++++++++++++++++++++++++++-\n 2 files changed, 925 insertions(+), 18 deletions(-)"
}