get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 19509,
    "url": "http://patches.dpdk.org/api/patches/19509/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1484637244-7548-11-git-send-email-jerin.jacob@caviumnetworks.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": "<1484637244-7548-11-git-send-email-jerin.jacob@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1484637244-7548-11-git-send-email-jerin.jacob@caviumnetworks.com",
    "date": "2017-01-17T07:13:45",
    "name": "[dpdk-dev,v4,10/29] eal: introduce I/O device memory read/write operations",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "33e1afe7d6d1ac38d3649f8eeecf0df639ae3105",
    "submitter": {
        "id": 305,
        "url": "http://patches.dpdk.org/api/people/305/?format=api",
        "name": "Jerin Jacob",
        "email": "jerin.jacob@caviumnetworks.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1484637244-7548-11-git-send-email-jerin.jacob@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/19509/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/19509/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id CF135F94F;\n\tTue, 17 Jan 2017 08:15:24 +0100 (CET)",
            "from NAM03-BY2-obe.outbound.protection.outlook.com\n\t(mail-by2nam03on0073.outbound.protection.outlook.com [104.47.42.73])\n\tby dpdk.org (Postfix) with ESMTP id 218D7F961\n\tfor <dev@dpdk.org>; Tue, 17 Jan 2017 08:15:22 +0100 (CET)",
            "from localhost.caveonetworks.com (111.93.218.67) by\n\tBY1PR0701MB1724.namprd07.prod.outlook.com (10.162.111.143) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12;\n\tTue, 17 Jan 2017 07:15:16 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=RdpoeNlwxSm9NFdiPlUaqrzFGg9PNTtZOMNiYzEuxPc=;\n\tb=RyRUwpb4mhZY+BywRLdwIsiY9LMg7h68DKm/jYo1iiftnUSInYvyspEp3L1zns70KrAxUBrLSpGG7wmSpXIB799OF1gnGBWSUK7cHiwJaKkuoLjw+AudHwRje/r/wW2QosaPPRjZxg0C66jHFaTGWiETdFY5S9Ao6IU1Rnbv6aI=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Jerin.Jacob@cavium.com; ",
        "From": "Jerin Jacob <jerin.jacob@caviumnetworks.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<konstantin.ananyev@intel.com>, <thomas.monjalon@6wind.com>,\n\t<bruce.richardson@intel.com>, <jianbo.liu@linaro.org>,\n\t<viktorin@rehivetech.com>, <santosh.shukla@caviumnetworks.com>,\n\tJerin Jacob <jerin.jacob@caviumnetworks.com>",
        "Date": "Tue, 17 Jan 2017 12:43:45 +0530",
        "Message-ID": "<1484637244-7548-11-git-send-email-jerin.jacob@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.5.5",
        "In-Reply-To": "<1484637244-7548-1-git-send-email-jerin.jacob@caviumnetworks.com>",
        "References": "<1484212646-10338-1-git-send-email-jerin.jacob@caviumnetworks.com>\n\t<1484637244-7548-1-git-send-email-jerin.jacob@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[111.93.218.67]",
        "X-ClientProxiedBy": "PN1PR01CA0030.INDPRD01.PROD.OUTLOOK.COM (10.164.137.37) To\n\tBY1PR0701MB1724.namprd07.prod.outlook.com (10.162.111.143)",
        "X-MS-Office365-Filtering-Correlation-Id": "c4c745b2-3e10-44cf-dd83-08d43ea89843",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0; RULEID:(22001);\n\tSRVR:BY1PR0701MB1724; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BY1PR0701MB1724;\n\t3:vxTD+wbs4vhfwyzUKjtxGkQwPsmCHCEJaYN7hUlqwLtGGkHNo2BRh7FaYnU2YTsE6vlpmEda3oMM58kvibXP/M3yDFN2gN1x0AMEC4FVn3z2z4177Q+Rw75H7ycIAnAUp98noZD/K7EneWTWWFFBZTiLNF1dZ4KAc7C8R6c+xBx6+JH3xKWqqasCKMgOaJLFMp2TiXq94CIKBjI2Qn8V6Ach7px6qjIEs4shEwklXDg7gPaatAHQS6sDVoSKVgYu4zYNcyaUxodjPPXcmp8MAw==",
            "1; BY1PR0701MB1724;\n\t25:OSFUBJit0bgyCnN+w8XWY9FyisthOOGTg5Ta3jYoA6QixZVSmiBtViSKf8PlQc0fznMhfUaYz2zzGly8GAdEf2uk6BRsaK6G1uJWI0NJ7vqZ3DFaamU40rsVaKAsa5OfdhvcSn/kXYnvNAHNKSGjbQlW40xn/mUNSDELOZUBXceuaffhzy87jZlyjSaY1W1T5QOu7SiNaScfnXoUSCDXNmNRi1lcGdjYnW1UAgnim9+hY3dXkIpsBQkP2zo7/xt/VSq/Piue4Rc84w0r8GSKU/uByENAkX5ASFIaL7G0d3hd0XGu8AGDWGNBI7Hl9lYYQB6gBcfkLtqjRaqPj2Mdc0MhVDlkSlT/xaL4QSa0NHE+ZXK/+bamKenPPh7MJ+6FBNh9lQ0Rku4u75muXiUmM8F3IcelfErkX3Xbm9oBT2uKTHe8vl8a+nYLfCKDhCV6QHC9iAmEA0u3UbBYQ8fcmHluwEfF9IgmDuQyjeyDu1n86Sr5AafWEHNx610uahzB3+b0Fgpe4fZdEpmpf3DgdZHougikpCVC8TcTz3FBX2iKU9pXepUSiRtV1zkEUP5pPCZBFtgR0Q8UGscmTd6HtP/xBu0NbWuxIsN9jxyBZYHLQId0OYkI72jbLWGjkZ9Ay9o6AlZ/iwv5+lmYVMEvp2PiOUwwBLA4qtrrCh2TlkYYfkQW/vWcauIyzHyLckEI4Xjkq9DJjmsXdubrU/jGB8ThqMCLAfdOMj9VvRl6oyB6Da5lSN0rytUA+UahQeySseZWB/Zu5BFknhVvc29RWhr1qbF5uzKO+wUkpKcC3j9e21GKBXL0B4NnN0EA1arI",
            "1; BY1PR0701MB1724;\n\t31:InPj2fTSqAmoFy0qqTv+pj/8p6YgIa3EiNAfkUEQB+kdXsQZ+ZXRbqbDLo/GbdKznp42C6GM0pIL5iq/j2ZWQGvsRVGpNMQOW1OwuTVUBvQ3bc0IOEI1EaIrF3S9HfUYbdJySw8aiunA+CUSS0Wq8Xr04rjHKQz5GL2/GL8TwBoONUl4woEgJDOY4uFVxHwRFQmOKEA+vr3JlVIlCTE6enwiX39tu7pPPgQnimB/MWRuifTrYy5lnmzFLDOzUYLtWc0tmwEliHHgbOCzZU6hJw==;\n\t20:1wyrYIOLZvFgeRF48w/kqskenKK9+sRqsba4vHgssvG2KCDWJZkszU01vEBBdKD+nrw62/152uoYhRVPAUpPhx1mb2+bJpPmUiKaLwGwKJjDBp28sS2qzBFrTv6xEbdruwndGiDh3oQoW2NkbefS6mRSQKNwOc9ZGWS7O0GEduKRF2Boi1rhxKGFx7boD04+1fqLWTCJE7/pY8nIm2TuX8aAO2kPIzB+RZGSNX9bhNjaUr8uLnt9pj2nOpgvRexmTBT+vlUtvMbvbgsbNZ1c7c+y0nsanLurHZ/oT8sSRgL8jz5lPNIMmlE7e63oTH6ipaNrBsR0XQ8d1jSlrHl/dLmQXoQSmQTZti6G6v7EsPb1TGgGC+TAnLXqZ+GMQ1NVC0/NCiWt+8bydzB9Y00QE+sI3zyXpzRHVP7171FbsfrzjNEVZDNYT+PNvbrJ/PRCxiY6YCVcasIC80Jwx5atsfHTnyb9Cw1xt3Mv/22+YsT5oTPXo3YdZi/VUDnaETDtThlDerWgF81czQYRfb6OdZi0f0s2tI61t2/QSUWT3NCFfPtpkrc05/asoAuv1cbxUY+cPTdT+bxkxnFfxXEX299fR9bLgntS7FJ2qzI+6rY=",
            "1; BY1PR0701MB1724;\n\t4:ue+fthSaXASkojb4RMJRcejGgRwUiYVQJAk+aZBN79TI6UbttZjX6p00WEvWYk9G0Wvdt2n/rc2/wmas0DT2kb1BGGIS9Nzoy1g8ML6L26mRD3YsXv1cRGRAcmDpp+99YHpBKy+BGZt4rSo3ucnfC1JZ3Lgg5+WPw0klF1oV9F2nDkdQxBP37U3V7tBMcA/qbIow75lmct2oKUzvfOX8U1hrkMyBPItKp6MsmcYtmyZlE/thT0E5Ch8WcQvyZjxavJxWYZahkUy5WCQtmkrr7AenjLEYETETgFEeXB9lFkIZTWZRfTIk4ZbUhrBlu0HPzs6K64DU/c65YZb0PHSdzcfSv6CUvbXAqhIRLDf9P9Y9lnimEd+MnNs6y0KOPCGUVjCb/N/MuV/4jC1SilhGMUfN8XTlQMYb4JRtbPsdy8ogbMJD2ms1hfkC53WoK/E7LDB9g4LbA3CQA/zrqLkVAm03fcuNqYHziKdfnYfGOUSlOh8U0owgtGa4PHiQQfFKMbEbFAcW/+8wF0zI8P7kxy77VDV4x1JcIcyWFDNhgncAwEW+6sOk4TjCZ6r+UU3ldGud79LTb5Xp1qQ4aah40g==",
            "=?us-ascii?Q?1; BY1PR0701MB1724;\n\t23:RGyAcv3vL+wDzUuO4WQJ8Qef9s3AZCJVTA6jeol?=\n\tRTvHUUVy8V+mY7xyTEFjEFCT4k4p/rLgEmDYB3cY6A1LxptSo6VofQ1rQSwVkH90CMwgcADyrKbq7I+NzooL2ImKj2I0q2oO4NJeSVsC0JEKag93A6Y90fmE0mw3JZ5xzY8eK/UEbl2nOshVoMnhVysBjA763iPMoLiX/WFsSqpDNJXINC4//8uyox/2w44sXKMoTBd7BekDs6eQxGvbX4Y+OBjc5C1Cc6GVCItQgY2GpJJDJnVprjCHVWq7TyG3Cz0EIaRbuCS4iPB00D63jrcLuWi5UQiW1mlLZ74C3XHonFZImwWbBM7PSJ3HCgzh3xyFg+kSichIsM2pXEnsP5qOuov1WxFhY+F3LZGgKlOBSM7ggAE7ZOtn0J5Sa2B/TlX8ktwWyPIGfs+b4GIcKuQU/umiqGu5QAeYKvP+CpnsCPRTeQlBP18uJMdGq18aFesQtocsbw5T2m6MLFprhVxoe/GsX0nRv2BUu/9/htbAINwEO5XxvSynwaX9hCnydsB8oDJJV2mpvV5KmInVDBIGeNfM+ATk67M2Scxtd/COfAzkb6GNZgNpqpQ9L6ktYw/BQFi6Mq5IjSVFnkbxueHtuN/YM4PhBafkwnd6nvoivasHaltc1QCHcGpZkB1cSeIZzz2VnS6LopK5/0moW31FNGI4fAVDaas+L434vJdiuXfAXJwBQHZZdQXLLIuw1vR9IAEyP5SJmLjjU3k+7DHl+eLoF+8QN8BToIdY5/khMj/RbEY+k7YR+NvT06AvFRUtLoKPWhB3UFPUgwi4Oo/aeRkRA2jGBCLVi0P4Cbsqni8+MUgo/8ei5SrTMgTl6xF5MqH7bkrBTvP36xr+BnmarTg3IoeNEUGAJafxBODTdR72MfdDBRy03DBKemQe6ohkOvMVEUXtAKOp9MXMJjOd2a8YHNx2dnhMkIkZrLvn86hUoAEv/3o2N90/PrVWmtdBxG9iUEeWgMrt1FIQIoEe8ag1BV8Yo+bcqlemduhqto7Qhm01ZoQf4Ms0vkW2DrZY3sNMAHaz/5NHKndfC8tneom8X7pwFyCFiJJRVi03AZWPp+OT4MEOB2RLK/tXughdgNxHGCdmgMVIcgNc03IAP4NOIaEHxsuDxLAYxk+pfA8eODaUFJ9RIyuku0N8a4NTWCIg+ZXIhL0nICcdnIC7k1fSlF7YnjXgs6DmE77jywzSXQ2NeulC/cshPQaTqksriSMmbxEWgS0Il4l6To+HNKMRzlXg8RFHPI2uln7Zci8cktt1GlIpdF2Y0YtVTnxc=",
            "1; BY1PR0701MB1724;\n\t6:8MkHbtf9F8fmaAZNYHpFB/0CDQYuNBkcPU7ZM3CooE7L5KzQ8iqO63T3dLzlOug93juqD3dXiSzmPA9K5543oGwIFOFQMcs5ecV8Y8E8tYgcE8WuF1jUqcQ+s90DN4WJQU5uF2sDdbNwGf9NwESs1evRfVjXhczVyw42QnCH/znoK5UPuL/YQ+flxE+Q4sDk6Vm9B7X1slq7Ec+REm+g8xlOZ/+38HawmirR21YyOFfDyM1WbCBJV6ioqGisZs/7nBhZk2SKLBStbkSJrTHERGWlE7F/xV/YEaT+X5IsG5B6gaxXT+o+DQo5wSey6CeUO6E8LDyZbw+YAL6CSFdlsx3e6dMm29hSgVF2+1ENQJYC2KfEyZJb7UAUzSuQPcJr9cakfQdhZA3yld819Z5g6P3zl+EkrwIhEVNpjuKEgrk=;\n\t5:10f6iLb7UcxE6m4ur4ZNmdD1fl7DLAUElNHB+QRbPJv9dt/8jKe0h8MHSYdXC5YGYVhEtV9rtWx/gu/7ciUI8qZPPhms+NzKKTV0NetCpPTgbbbFuV0rr91MaNji5N/sgu0PE4gyXotYuab9eQpQ7g==;\n\t24:W833jgl+K5Wtm06Ke86kYJjhS8FZTPvwusE5xopIfg8aDfs8HGO3lPojJaUe4oAnZE/712D57OUFksWC+8GYqjfdPf8n4cUFhSyufqmLvr0=",
            "1; BY1PR0701MB1724;\n\t7:w0UV7ppBl1Ph+0hnFHgAzoc95lmtxjGodYKfF8kccwtvNxLt3cJPOOiBu4rQYlRceRy6QFXykCHXfHHZ5PFzXq4wY+/7towFHjDg7860aQhir+YK4IrzwK039Sc0GosbtTYf+0JbpCnpfNsz9dITMopyY7ysCrNmK990f+0yC6PmBXjzbhObNyRZMbYcQ3YgNmo83i0Dr8E7/CJEqY9bHUUM1Uj9I0RshVqpxRcsoCUNFQzI5VO2DdQUnbTnxyOAC1XnY50RCaKavutUTX4KaPkslQWYpYCWmsx0CnkyCoRqtaNCdyI8rhh3eGz50PBtsTA05HwRCgg/WIadQq+/V7kTYSqgScCOz7rWFGkD94CvrONlBod1KVCSk0LBZUD3UPJVAjHWkQdHPCrSlALT8vmJ9omX/cz3yhTMmRpFfVIoQlhfCPHuqdBk0chV0+rGMWB+5bmDSj87vReJaqTUqA=="
        ],
        "X-Microsoft-Antispam-PRVS": "<BY1PR0701MB1724EB269C5317B231C9F70F817C0@BY1PR0701MB1724.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(6072148);\n\tSRVR:BY1PR0701MB1724; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0701MB1724; ",
        "X-Forefront-PRVS": "01901B3451",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(199003)(189002)(2906002)(4326007)(76506005)(107886002)(53416004)(189998001)(92566002)(106356001)(38730400001)(47776003)(25786008)(6486002)(54906002)(66066001)(6506006)(305945005)(7736002)(6512007)(5009440100003)(81156014)(3846002)(50226002)(5003940100001)(68736007)(4001430100002)(6116002)(76176999)(50986999)(2351001)(97736004)(81166006)(5660300001)(8676002)(105586002)(69596002)(42186005)(48376002)(6666003)(36756003)(33646002)(101416001)(2950100002)(6916009)(110136003)(50466002)(42882006)(30001)(7099028);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1724;\n\tH:localhost.caveonetworks.com; \n\tFPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Jan 2017 07:15:16.6851\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BY1PR0701MB1724",
        "Subject": "[dpdk-dev] [PATCH v4 10/29] eal: introduce I/O device memory\n\tread/write operations",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This commit introduces 8-bit, 16-bit, 32bit, 64bit I/O device\nmemory read/write operations along with the relaxed versions.\n\nThe weakly-ordered machine like ARM needs additional I/O barrier for\ndevice memory read/write access over PCI bus.\nBy introducing the eal abstraction for I/O device memory read/write access,\nThe drivers can access I/O device memory in architecture agnostic manner.\n\nThe relaxed version does not have additional I/O memory barrier, useful in\naccessing the device registers of integrated controllers which\nimplicitly strongly ordered with respect to memory access.\n\nSigned-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>\n---\n doc/api/doxy-api-index.md                      |   3 +-\n lib/librte_eal/common/Makefile                 |   3 +-\n lib/librte_eal/common/include/generic/rte_io.h | 263 +++++++++++++++++++++++++\n 3 files changed, 267 insertions(+), 2 deletions(-)\n create mode 100644 lib/librte_eal/common/include/generic/rte_io.h",
    "diff": "diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md\nindex d26d984..8b3b426 100644\n--- a/doc/api/doxy-api-index.md\n+++ b/doc/api/doxy-api-index.md\n@@ -71,7 +71,8 @@ There are many libraries, so their headers may be grouped by topics:\n   [cache prefetch]     (@ref rte_prefetch.h),\n   [SIMD]               (@ref rte_vect.h),\n   [byte order]         (@ref rte_byteorder.h),\n-  [CPU flags]          (@ref rte_cpuflags.h)\n+  [CPU flags]          (@ref rte_cpuflags.h),\n+  [I/O access]         (@ref rte_io.h)\n \n - **CPU multicore**:\n   [interrupts]         (@ref rte_interrupts.h),\ndiff --git a/lib/librte_eal/common/Makefile b/lib/librte_eal/common/Makefile\nindex 09a3d3a..b34dce9 100644\n--- a/lib/librte_eal/common/Makefile\n+++ b/lib/librte_eal/common/Makefile\n@@ -44,7 +44,8 @@ INC += rte_malloc.h rte_keepalive.h rte_time.h\n \n GENERIC_INC := rte_atomic.h rte_byteorder.h rte_cycles.h rte_prefetch.h\n GENERIC_INC += rte_spinlock.h rte_memcpy.h rte_cpuflags.h rte_rwlock.h\n-GENERIC_INC += rte_vect.h\n+GENERIC_INC += rte_vect.h rte_io.h\n+\n # defined in mk/arch/$(RTE_ARCH)/rte.vars.mk\n ARCH_DIR ?= $(RTE_ARCH)\n ARCH_INC := $(notdir $(wildcard $(RTE_SDK)/lib/librte_eal/common/include/arch/$(ARCH_DIR)/*.h))\ndiff --git a/lib/librte_eal/common/include/generic/rte_io.h b/lib/librte_eal/common/include/generic/rte_io.h\nnew file mode 100644\nindex 0000000..edfebf8\n--- /dev/null\n+++ b/lib/librte_eal/common/include/generic/rte_io.h\n@@ -0,0 +1,263 @@\n+/*\n+ *   BSD LICENSE\n+ *\n+ *   Copyright(c) 2016 Cavium networks. All rights reserved.\n+ *   All rights reserved.\n+ *\n+ *   Redistribution and use in source and binary forms, with or without\n+ *   modification, are permitted provided that the following conditions\n+ *   are met:\n+ *\n+ *     * Redistributions of source code must retain the above copyright\n+ *       notice, this list of conditions and the following disclaimer.\n+ *     * Redistributions in binary form must reproduce the above copyright\n+ *       notice, this list of conditions and the following disclaimer in\n+ *       the documentation and/or other materials provided with the\n+ *       distribution.\n+ *     * Neither the name of Cavium networks nor the names of its\n+ *       contributors may be used to endorse or promote products derived\n+ *       from this software without specific prior written permission.\n+ *\n+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ *   \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+\n+#ifndef _RTE_IO_H_\n+#define _RTE_IO_H_\n+\n+/**\n+ * @file\n+ * I/O device memory operations\n+ *\n+ * This file defines the generic API for I/O device memory read/write operations\n+ */\n+\n+#include <stdint.h>\n+#include <rte_common.h>\n+#include <rte_atomic.h>\n+\n+#ifdef __DOXYGEN__\n+\n+/**\n+ * Read a 8-bit value from I/O device memory address *addr*.\n+ *\n+ * The relaxed version does not have additional I/O memory barrier, useful in\n+ * accessing the device registers of integrated controllers which implicitly\n+ * strongly ordered with respect to memory access.\n+ *\n+ * @param addr\n+ *  I/O memory address to read the value from\n+ * @return\n+ *  read value\n+ */\n+static inline uint8_t\n+rte_read8_relaxed(const volatile void *addr);\n+\n+/**\n+ * Read a 16-bit value from I/O device memory address *addr*.\n+ *\n+ * The relaxed version does not have additional I/O memory barrier, useful in\n+ * accessing the device registers of integrated controllers which implicitly\n+ * strongly ordered with respect to memory access.\n+ *\n+ * @param addr\n+ *  I/O memory address to read the value from\n+ * @return\n+ *  read value\n+ */\n+static inline uint16_t\n+rte_read16_relaxed(const volatile void *addr);\n+\n+/**\n+ * Read a 32-bit value from I/O device memory address *addr*.\n+ *\n+ * The relaxed version does not have additional I/O memory barrier, useful in\n+ * accessing the device registers of integrated controllers which implicitly\n+ * strongly ordered with respect to memory access.\n+ *\n+ * @param addr\n+ *  I/O memory address to read the value from\n+ * @return\n+ *  read value\n+ */\n+static inline uint32_t\n+rte_read32_relaxed(const volatile void *addr);\n+\n+/**\n+ * Read a 64-bit value from I/O device memory address *addr*.\n+ *\n+ * The relaxed version does not have additional I/O memory barrier, useful in\n+ * accessing the device registers of integrated controllers which implicitly\n+ * strongly ordered with respect to memory access.\n+ *\n+ * @param addr\n+ *  I/O memory address to read the value from\n+ * @return\n+ *  read value\n+ */\n+static inline uint64_t\n+rte_read64_relaxed(const volatile void *addr);\n+\n+/**\n+ * Write a 8-bit value to I/O device memory address *addr*.\n+ *\n+ * The relaxed version does not have additional I/O memory barrier, useful in\n+ * accessing the device registers of integrated controllers which implicitly\n+ * strongly ordered with respect to memory access.\n+ *\n+ * @param value\n+ *  Value to write\n+ * @param addr\n+ *  I/O memory address to write the value to\n+ */\n+\n+static inline void\n+rte_write8_relaxed(uint8_t value, volatile void *addr);\n+\n+/**\n+ * Write a 16-bit value to I/O device memory address *addr*.\n+ *\n+ * The relaxed version does not have additional I/O memory barrier, useful in\n+ * accessing the device registers of integrated controllers which implicitly\n+ * strongly ordered with respect to memory access.\n+ *\n+ * @param value\n+ *  Value to write\n+ * @param addr\n+ *  I/O memory address to write the value to\n+ */\n+static inline void\n+rte_write16_relaxed(uint16_t value, volatile void *addr);\n+\n+/**\n+ * Write a 32-bit value to I/O device memory address *addr*.\n+ *\n+ * The relaxed version does not have additional I/O memory barrier, useful in\n+ * accessing the device registers of integrated controllers which implicitly\n+ * strongly ordered with respect to memory access.\n+ *\n+ * @param value\n+ *  Value to write\n+ * @param addr\n+ *  I/O memory address to write the value to\n+ */\n+static inline void\n+rte_write32_relaxed(uint32_t value, volatile void *addr);\n+\n+/**\n+ * Write a 64-bit value to I/O device memory address *addr*.\n+ *\n+ * The relaxed version does not have additional I/O memory barrier, useful in\n+ * accessing the device registers of integrated controllers which implicitly\n+ * strongly ordered with respect to memory access.\n+ *\n+ * @param value\n+ *  Value to write\n+ * @param addr\n+ *  I/O memory address to write the value to\n+ */\n+static inline void\n+rte_write64_relaxed(uint64_t value, volatile void *addr);\n+\n+/**\n+ * Read a 8-bit value from I/O device memory address *addr*.\n+ *\n+ * @param addr\n+ *  I/O memory address to read the value from\n+ * @return\n+ *  read value\n+ */\n+static inline uint8_t\n+rte_read8(const volatile void *addr);\n+\n+/**\n+ * Read a 16-bit value from I/O device memory address *addr*.\n+ *\n+ *\n+ * @param addr\n+ *  I/O memory address to read the value from\n+ * @return\n+ *  read value\n+ */\n+static inline uint16_t\n+rte_read16(const volatile void *addr);\n+\n+/**\n+ * Read a 32-bit value from I/O device memory address *addr*.\n+ *\n+ * @param addr\n+ *  I/O memory address to read the value from\n+ * @return\n+ *  read value\n+ */\n+static inline uint32_t\n+rte_read32(const volatile void *addr);\n+\n+/**\n+ * Read a 64-bit value from I/O device memory address *addr*.\n+ *\n+ * @param addr\n+ *  I/O memory address to read the value from\n+ * @return\n+ *  read value\n+ */\n+static inline uint64_t\n+rte_read64(const volatile void *addr);\n+\n+/**\n+ * Write a 8-bit value to I/O device memory address *addr*.\n+ *\n+ * @param value\n+ *  Value to write\n+ * @param addr\n+ *  I/O memory address to write the value to\n+ */\n+\n+static inline void\n+rte_write8(uint8_t value, volatile void *addr);\n+\n+/**\n+ * Write a 16-bit value to I/O device memory address *addr*.\n+ *\n+ * @param value\n+ *  Value to write\n+ * @param addr\n+ *  I/O memory address to write the value to\n+ */\n+static inline void\n+rte_write16(uint16_t value, volatile void *addr);\n+\n+/**\n+ * Write a 32-bit value to I/O device memory address *addr*.\n+ *\n+ * @param value\n+ *  Value to write\n+ * @param addr\n+ *  I/O memory address to write the value to\n+ */\n+static inline void\n+rte_write32(uint32_t value, volatile void *addr);\n+\n+/**\n+ * Write a 64-bit value to I/O device memory address *addr*.\n+ *\n+ * @param value\n+ *  Value to write\n+ * @param addr\n+ *  I/O memory address to write the value to\n+ */\n+static inline void\n+rte_write64(uint64_t value, volatile void *addr);\n+\n+#endif /* __DOXYGEN__ */\n+\n+#endif /* _RTE_IO_H_ */\n",
    "prefixes": [
        "dpdk-dev",
        "v4",
        "10/29"
    ]
}