get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 45019,
    "url": "http://patches.dpdk.org/api/patches/45019/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/669da6a6e84804087bdf48bd0f04cc8eb6748d84.1537443103.git.anatoly.burakov@intel.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": "<669da6a6e84804087bdf48bd0f04cc8eb6748d84.1537443103.git.anatoly.burakov@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/669da6a6e84804087bdf48bd0f04cc8eb6748d84.1537443103.git.anatoly.burakov@intel.com",
    "date": "2018-09-20T11:36:32",
    "name": "[v3,19/20] doc: add external memory feature to programmer's guide",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "39508cd1c9974438a92433c17594de1a5e509f16",
    "submitter": {
        "id": 4,
        "url": "http://patches.dpdk.org/api/people/4/?format=api",
        "name": "Anatoly Burakov",
        "email": "anatoly.burakov@intel.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/669da6a6e84804087bdf48bd0f04cc8eb6748d84.1537443103.git.anatoly.burakov@intel.com/mbox/",
    "series": [
        {
            "id": 1415,
            "url": "http://patches.dpdk.org/api/series/1415/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1415",
            "date": "2018-09-20T11:36:13",
            "name": "Support externally allocated memory in DPDK",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/1415/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/45019/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/45019/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 [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 0FD3D1B124;\n\tThu, 20 Sep 2018 13:37:16 +0200 (CEST)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby dpdk.org (Postfix) with ESMTP id 3E7A85F48\n\tfor <dev@dpdk.org>; Thu, 20 Sep 2018 13:36:46 +0200 (CEST)",
            "from fmsmga006.fm.intel.com ([10.253.24.20])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t20 Sep 2018 04:36:45 -0700",
            "from irvmail001.ir.intel.com ([163.33.26.43])\n\tby fmsmga006.fm.intel.com with ESMTP; 20 Sep 2018 04:36:41 -0700",
            "from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com\n\t[10.237.217.45])\n\tby irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id\n\tw8KBaf5P022852; Thu, 20 Sep 2018 12:36:41 +0100",
            "from sivswdev01.ir.intel.com (localhost [127.0.0.1])\n\tby sivswdev01.ir.intel.com with ESMTP id w8KBafap011602;\n\tThu, 20 Sep 2018 12:36:41 +0100",
            "(from aburakov@localhost)\n\tby sivswdev01.ir.intel.com with LOCAL id w8KBafAB011597;\n\tThu, 20 Sep 2018 12:36:41 +0100"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.53,398,1531810800\"; d=\"scan'208\";a=\"265202984\"",
        "From": "Anatoly Burakov <anatoly.burakov@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "John McNamara <john.mcnamara@intel.com>,\n\tMarko Kovacevic <marko.kovacevic@intel.com>,\n\tlaszlo.madarassy@ericsson.com, laszlo.vadkerti@ericsson.com,\n\tandras.kovacs@ericsson.com, winnie.tian@ericsson.com,\n\tdaniel.andrasi@ericsson.com, janos.kobor@ericsson.com,\n\tgeza.koblo@ericsson.com, srinath.mannam@broadcom.com,\n\tscott.branden@broadcom.com, ajit.khaparde@broadcom.com,\n\tkeith.wiles@intel.com, bruce.richardson@intel.com, thomas@monjalon.net,\n\tshreyansh.jain@nxp.com, shahafs@mellanox.com, arybchenko@solarflare.com",
        "Date": "Thu, 20 Sep 2018 12:36:32 +0100",
        "Message-Id": "<669da6a6e84804087bdf48bd0f04cc8eb6748d84.1537443103.git.anatoly.burakov@intel.com>",
        "X-Mailer": "git-send-email 1.7.0.7",
        "In-Reply-To": [
            "<cover.1537443103.git.anatoly.burakov@intel.com>",
            "<cover.1537443103.git.anatoly.burakov@intel.com>"
        ],
        "References": [
            "<cover.1537443103.git.anatoly.burakov@intel.com>",
            "<cover.1537363686.git.anatoly.burakov@intel.com>\n\t<cover.1537443103.git.anatoly.burakov@intel.com>"
        ],
        "Subject": "[dpdk-dev] [PATCH v3 19/20] doc: add external memory feature to\n\tprogrammer's guide",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Add a short chapter on usage of external memory in DPDK to the\nProgrammer's Guide.\n\nSigned-off-by: Anatoly Burakov <anatoly.burakov@intel.com>\n---\n .../prog_guide/env_abstraction_layer.rst      | 38 +++++++++++++++++++\n 1 file changed, 38 insertions(+)",
    "diff": "diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst\nindex d362c9209..37de8d63d 100644\n--- a/doc/guides/prog_guide/env_abstraction_layer.rst\n+++ b/doc/guides/prog_guide/env_abstraction_layer.rst\n@@ -213,6 +213,44 @@ Normally, these options do not need to be changed.\n     can later be mapped into that preallocated VA space (if dynamic memory mode\n     is enabled), and can optionally be mapped into it at startup.\n \n+Support for Externally Allocated Memory\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+\n+It is possible to use externally allocated memory in DPDK, using a set of malloc\n+heap API's. Support for externally allocated memory is implemented through\n+overloading the socket ID - externally allocated heaps will have socket ID's\n+that would be considered invalid under normal circumstances. Requesting an\n+allocation to take place from a specified externally allocated memory is a\n+matter of supplying the correct socket ID to DPDK allocator, either directly\n+(e.g. through a call to ``rte_malloc``) or indirectly (through data\n+structure-specific allocation API's such as ``rte_ring_create``).\n+\n+Since there is no way DPDK can verify whether memory are is available or valid,\n+this responsibility falls on the shoulders of the user. All multiprocess\n+synchronization is also user's responsibility, as well as ensuring  that all\n+calls to add/attach/detach/remove memory are done in the correct order. It is\n+not required to attach to a memory area in all processes - only attach to memory\n+areas as needed.\n+\n+The expected workflow is as follows:\n+\n+* Get a pointer to memory area\n+* Create a named heap\n+* Add memory area(s) to the heap\n+  * If IOVA table is not specified, IOVA addresses will be assumed to be\n+    unavailable\n+  * Any DMA mappings for the external area are responsibility of the user\n+  * Other processes must attach to the memory area before they can use it\n+* Get socket ID used for the heap\n+* Use normal DPDK allocation procedures, using supplied socket ID\n+* If memory area is no longer needed, it can be removed from the heap\n+  * Other processes must detach from this memory area before it can be removed\n+* If heap is no longer needed, remove it\n+  * Socket ID will become invalid and will not be reused\n+\n+For more information, please refer to ``rte_malloc`` API documentation,\n+specifically the ``rte_malloc_heap_*`` family of function calls.\n+\n PCI Access\n ~~~~~~~~~~\n \n",
    "prefixes": [
        "v3",
        "19/20"
    ]
}