get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 30190,
    "url": "https://patches.dpdk.org/api/patches/30190/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/91106540c460d22dd23a30dc2903d7e238ff9a3b.1507796085.git.gaetan.rivet@6wind.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<91106540c460d22dd23a30dc2903d7e238ff9a3b.1507796085.git.gaetan.rivet@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/91106540c460d22dd23a30dc2903d7e238ff9a3b.1507796085.git.gaetan.rivet@6wind.com",
    "date": "2017-10-12T08:18:24",
    "name": "[dpdk-dev,v1,2/8] bus: introduce opaque control framework",
    "commit_ref": null,
    "pull_url": null,
    "state": "rejected",
    "archived": true,
    "hash": "5d8a083839d21e9f8e0171bd36c7c9490b8538ad",
    "submitter": {
        "id": 269,
        "url": "https://patches.dpdk.org/api/people/269/?format=api",
        "name": "Gaëtan Rivet",
        "email": "gaetan.rivet@6wind.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/91106540c460d22dd23a30dc2903d7e238ff9a3b.1507796085.git.gaetan.rivet@6wind.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/30190/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/30190/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 55A9F1B232;\n\tThu, 12 Oct 2017 10:18:54 +0200 (CEST)",
            "from mail-wm0-f50.google.com (mail-wm0-f50.google.com\n\t[74.125.82.50]) by dpdk.org (Postfix) with ESMTP id 08C291D90\n\tfor <dev@dpdk.org>; Thu, 12 Oct 2017 10:18:49 +0200 (CEST)",
            "by mail-wm0-f50.google.com with SMTP id f4so11007746wme.0\n\tfor <dev@dpdk.org>; Thu, 12 Oct 2017 01:18:49 -0700 (PDT)",
            "from bidouze.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com.\n\t[62.23.145.78]) by smtp.gmail.com with ESMTPSA id\n\ti76sm39971757wmd.2.2017.10.12.01.18.47\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tThu, 12 Oct 2017 01:18:48 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=6wind-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references\n\t:in-reply-to:references;\n\tbh=/F7ibE82Afk8aQYiaNcq1adXPrlh8Zqnh2jdKmbqPtU=;\n\tb=nryfIWUq5ltH+2V8z8zWckzi5CV5hJVPEHU08jMaIGU73SVXxdOLZeayBfNTEMJyf3\n\tx1is9mo8ZGdaxfi1ZgKzWfOsaHjkNHQTCuHQ5EV5bqD0Qc1ErAZQ7ercvY5jp504YvC7\n\t+/uI5tQH8me07WtBPVc2/hBeADhaBZRzDQITm7cdkunCnpkW+a96Qe2qG6JBeyo4S6uI\n\tveLbyCeuuY8dnsdyhkiWzcwvUEuZlmPPvHZLrteWCfT/b2SDixy8bMyYrnswXOA27vPd\n\ts3hlox5yMWhnHQOExn4CLt38+ENZ4RbzOBiSuvliRJ2dcIkPf5wwTfHKIxdDdVU7O74Q\n\tzn/w==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references:in-reply-to:references;\n\tbh=/F7ibE82Afk8aQYiaNcq1adXPrlh8Zqnh2jdKmbqPtU=;\n\tb=Ys8bM8AHbO4mU9/v/9UFGItxuwWYI6qsvf/PwKv89kZEYQ439ahmNacl6OodU3+a/I\n\tDsgAaGF2eV7/CGiAukZKZF/t/NH8LwfBJcabsGD1u5CtowIgSdf59J91BSgyc3eBs3yX\n\tyACiLHIzC5rsAHSlqwbgdBToX0IuJhOp78UxWY3la1/31z/DzScw++jabyhj1U0t9Mcr\n\tuiy6oWYYF37hQ7k+pDVVp9Bln+MqU5UpVwJcdt+AJWzkVABhFoFAkZ1IFRQC3BR4EUhs\n\tzYlzPROauukWGeACZiNoo8CflZMva6ikHFyt0Fss0Jq5GMgZXFzSq+TNQPq0+YBEbkcw\n\thNGg==",
        "X-Gm-Message-State": "AMCzsaX1PTfpEgIjEnUnZdPX0fOqTViCMnIPbsHdUdsu+lmJ2MUSHNx3\n\t53PaTsupTVQO2VHcjUuO6hwBXcGT",
        "X-Google-Smtp-Source": "AOwi7QDD5gVqvJJOv7lXsCSYGKnbWsuCSM2WtPd7/S9VfjHuksAJ9LyPZFRIDjEZFAcRK3lnhLfqrg==",
        "X-Received": "by 10.28.149.204 with SMTP id x195mr1217694wmd.78.1507796329177; \n\tThu, 12 Oct 2017 01:18:49 -0700 (PDT)",
        "From": "Gaetan Rivet <gaetan.rivet@6wind.com>",
        "To": "dev@dpdk.org",
        "Cc": "Gaetan Rivet <gaetan.rivet@6wind.com>",
        "Date": "Thu, 12 Oct 2017 10:18:24 +0200",
        "Message-Id": "<91106540c460d22dd23a30dc2903d7e238ff9a3b.1507796085.git.gaetan.rivet@6wind.com>",
        "X-Mailer": "git-send-email 2.1.4",
        "In-Reply-To": [
            "<cover.1507796085.git.gaetan.rivet@6wind.com>",
            "<cover.1507796085.git.gaetan.rivet@6wind.com>"
        ],
        "References": [
            "<cover.1507796085.git.gaetan.rivet@6wind.com>",
            "<cover.1507796085.git.gaetan.rivet@6wind.com>"
        ],
        "Subject": "[dpdk-dev] [PATCH v1 2/8] bus: introduce opaque control framework",
        "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": "New configuration elements are added to the buses. They make the ABI\nunstable and will continue to do so.\n\nThis new control scheme allows to add new bus operators without\nbreaking the ABI and by only expanding the API.\n\nThis helps having more stability in core EAL subsystems, while allowing\nflexibility for future evolutions.\n\nSigned-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>\n---\n lib/librte_eal/common/eal_common_bus.c  |  9 +++++++\n lib/librte_eal/common/include/rte_bus.h | 46 +++++++++++++++++++++++++++++++++\n 2 files changed, 55 insertions(+)",
    "diff": "diff --git a/lib/librte_eal/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c\nindex 3c66a02..65d7229 100644\n--- a/lib/librte_eal/common/eal_common_bus.c\n+++ b/lib/librte_eal/common/eal_common_bus.c\n@@ -42,6 +42,13 @@\n struct rte_bus_list rte_bus_list =\n \tTAILQ_HEAD_INITIALIZER(rte_bus_list);\n \n+static rte_bus_ctrl_t\n+rte_bus_default_ctrl(enum rte_bus_ctrl_op op __rte_unused,\n+\t\t     enum rte_bus_ctrl_item item __rte_unused)\n+{\n+\treturn NULL;\n+}\n+\n void\n rte_bus_register(struct rte_bus *bus)\n {\n@@ -53,6 +60,8 @@ rte_bus_register(struct rte_bus *bus)\n \tRTE_VERIFY(bus->find_device);\n \t/* Buses supporting driver plug also require unplug. */\n \tRTE_VERIFY(!bus->plug || bus->unplug);\n+\tif (bus->ctrl == NULL)\n+\t\tbus->ctrl = &rte_bus_default_ctrl;\n \n \tTAILQ_INSERT_TAIL(&rte_bus_list, bus, next);\n \tRTE_LOG(DEBUG, EAL, \"Registered [%s] bus.\\n\", bus->name);\ndiff --git a/lib/librte_eal/common/include/rte_bus.h b/lib/librte_eal/common/include/rte_bus.h\nindex 331d954..bd3c28e 100644\n--- a/lib/librte_eal/common/include/rte_bus.h\n+++ b/lib/librte_eal/common/include/rte_bus.h\n@@ -183,6 +183,51 @@ struct rte_bus_conf {\n \tenum rte_bus_probe_mode probe_mode; /**< Probe policy. */\n };\n \n+/**\n+ * Bus configuration items.\n+ */\n+enum rte_bus_ctrl_item {\n+\tRTE_BUS_CTRL_PROBE_MODE = 0,\n+\tRTE_BUS_CTRL_ITEM_MAX,\n+};\n+\n+/**\n+ * Bus configuration operations.\n+ */\n+enum rte_bus_ctrl_op {\n+\tRTE_BUS_CTRL_GET = 0,\n+\tRTE_BUS_CTRL_SET,\n+\tRTE_BUS_CTRL_RESET,\n+\tRTE_BUS_CTRL_OP_MAX,\n+};\n+\n+/**\n+ * Operator for a particular rte_bus configuration item.\n+ *\n+ * @param arg\n+ *    Operation parameter.\n+ *\n+ * @return\n+ *\t0 on success\n+ *\t!0 otherwise\n+ */\n+typedef int (*rte_bus_ctrl_t)(void *arg);\n+\n+/**\n+ * Accessor to bus configuration operators.\n+ *\n+ * @param op\n+ *\tOperation type.\n+ *\n+ * @param item\n+ *\tOperation element.\n+ *\n+ * @return\n+ *\tOperator function on success.\n+ *\tNULL if this item is not supported.\n+ */\n+typedef rte_bus_ctrl_t (*rte_bus_ctrl_get_t)(enum rte_bus_ctrl_op op,\n+\t\t\t\t\t     enum rte_bus_ctrl_item item);\n \n /**\n  * Get common iommu class of the all the devices on the bus. The bus may\n@@ -211,6 +256,7 @@ struct rte_bus {\n \trte_bus_parse_t parse;       /**< Parse a device name */\n \tstruct rte_bus_conf conf;    /**< Bus configuration */\n \trte_bus_get_iommu_class_t get_iommu_class; /**< Get iommu class */\n+\trte_bus_ctrl_get_t ctrl;     /**< Get control operators */\n };\n \n /**\n",
    "prefixes": [
        "dpdk-dev",
        "v1",
        "2/8"
    ]
}