get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 54773,
    "url": "http://patches.dpdk.org/api/patches/54773/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190613142344.9188-2-nhorman@tuxdriver.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": "<20190613142344.9188-2-nhorman@tuxdriver.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190613142344.9188-2-nhorman@tuxdriver.com",
    "date": "2019-06-13T14:23:35",
    "name": "[v2,01/10] Add __rte_internal tag for functions and version target",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "f3f0b569097b0c3f509484e9ca1c999e1931addb",
    "submitter": {
        "id": 32,
        "url": "http://patches.dpdk.org/api/people/32/?format=api",
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.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/20190613142344.9188-2-nhorman@tuxdriver.com/mbox/",
    "series": [
        {
            "id": 5004,
            "url": "http://patches.dpdk.org/api/series/5004/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=5004",
            "date": "2019-06-13T14:23:34",
            "name": "dpdk: introduce __rte_internal tag",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/5004/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/54773/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/54773/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 1DCB51D5FE;\n\tThu, 13 Jun 2019 16:24:10 +0200 (CEST)",
            "from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58])\n\tby dpdk.org (Postfix) with ESMTP id 2B4381D5E0\n\tfor <dev@dpdk.org>; Thu, 13 Jun 2019 16:24:06 +0200 (CEST)",
            "from [107.15.85.130] (helo=hmswarspite.think-freely.org)\n\tby smtp.tuxdriver.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.63)\n\t(envelope-from <nhorman@tuxdriver.com>)\n\tid 1hbQdu-0000fx-2k; Thu, 13 Jun 2019 10:24:00 -0400",
            "from hmswarspite.think-freely.org (localhost [127.0.0.1])\n\tby hmswarspite.think-freely.org (8.15.2/8.15.2) with ESMTP id\n\tx5DENmlG009319; Thu, 13 Jun 2019 10:23:48 -0400",
            "(from nhorman@localhost)\n\tby hmswarspite.think-freely.org (8.15.2/8.15.2/Submit) id\n\tx5DENlgv009318; Thu, 13 Jun 2019 10:23:47 -0400"
        ],
        "From": "Neil Horman <nhorman@tuxdriver.com>",
        "To": "dev@dpdk.org",
        "Cc": "Neil Horman <nhorman@tuxdriver.com>,\n\tJerin Jacob Kollanukkaran <jerinj@marvell.com>,\n\tBruce Richardson <bruce.richardson@intel.com>,\n\tThomas Monjalon <thomas@monjalon.net>",
        "Date": "Thu, 13 Jun 2019 10:23:35 -0400",
        "Message-Id": "<20190613142344.9188-2-nhorman@tuxdriver.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "In-Reply-To": "<20190613142344.9188-1-nhorman@tuxdriver.com>",
        "References": "<20190525184346.27932-1-nhorman@tuxdriver.com>\n\t<20190613142344.9188-1-nhorman@tuxdriver.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Spam-Score": "-2.9 (--)",
        "X-Spam-Status": "No",
        "Subject": "[dpdk-dev] [PATCH v2 01/10] Add __rte_internal tag for functions\n\tand version target",
        "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": "This tag is meant to be used on function prototypes to identify\nfunctions that are only meant to be used by internal DPDK libraries\n(i.e. libraries that are built while building the SDK itself, as\nidentified by the defining of the BUILDING_RTE_SDK macro).  When that\nflag is not set, it will resolve to an error function attribute, causing\nbuild breakage for any compilation unit attempting to build it\n\nValidate the use of this tag in much the same way we validate\n__rte_experimental.  By adding an INTERNAL version to library map files,\nwe can exempt internal-only functions from ABI checking, and handle them\nto ensure that symbols we wish to only be for internal use between dpdk\nlibraries are properly tagged with __rte_experimental\n\nNote this patch updates the check-experimental-syms.sh script, which\nnormally only check the EXPERIMENTAL section to also check the INTERNAL\nsection now.  As such its been renamed to the now more appropriate\ncheck-special-syms.sh\n\nSigned-off-by: Neil Horman <nhorman@tuxdriver.com>\nCC: Jerin Jacob Kollanukkaran <jerinj@marvell.com>\nCC: Bruce Richardson <bruce.richardson@intel.com>\nCC: Thomas Monjalon <thomas@monjalon.net>\n---\n ...rimental-syms.sh => check-special-syms.sh} | 24 ++++++++++++++++++-\n lib/librte_eal/common/include/rte_compat.h    | 12 ++++++++++\n mk/internal/rte.compile-pre.mk                |  6 ++---\n mk/target/generic/rte.vars.mk                 |  2 +-\n 4 files changed, 39 insertions(+), 5 deletions(-)\n rename buildtools/{check-experimental-syms.sh => check-special-syms.sh} (53%)",
    "diff": "diff --git a/buildtools/check-experimental-syms.sh b/buildtools/check-special-syms.sh\nsimilarity index 53%\nrename from buildtools/check-experimental-syms.sh\nrename to buildtools/check-special-syms.sh\nindex 7d1f3a568..63682c677 100755\n--- a/buildtools/check-experimental-syms.sh\n+++ b/buildtools/check-special-syms.sh\n@@ -31,10 +31,32 @@ do\n \t\tcat >&2 <<- END_OF_MESSAGE\n \t\t$SYM is not flagged as experimental\n \t\tbut is listed in version map\n-\t\tPlease add __rte_experimental to the definition of $SYM\n+\t\tPlease add __rte_experimental to the definition/prototype of $SYM\n \t\tEND_OF_MESSAGE\n \t\texit 1\n \tfi\n done\n+\n+for i in `awk 'BEGIN {found=0}\n+\t\t/.*INTERNAL.*/ {found=1}\n+\t\t/.*}.*;/ {found=0}\n+\t\t/.*;/ {if (found == 1) print $1}' $MAPFILE`\n+do\n+\tSYM=`echo $i | sed -e\"s/;//\"`\n+\tobjdump -t $OBJFILE | grep -q \"\\.text.*$SYM$\"\n+\tIN_TEXT=$?\n+\tobjdump -t $OBJFILE | grep -q \"\\.text\\.internal.*$SYM$\"\n+\tIN_EXP=$?\n+\tif [ $IN_TEXT -eq 0 -a $IN_EXP -ne 0 ]\n+\tthen\n+\t\tcat >&2 <<- END_OF_MESSAGE\n+\t\t$SYM is not flagged as internal \n+\t\tbut is listed in version map\n+\t\tPlease add __rte_internal to the definition/prototype of $SYM\n+\t\tEND_OF_MESSAGE\n+\t\texit 1\n+\tfi\n+done\n+\n exit 0\n \ndiff --git a/lib/librte_eal/common/include/rte_compat.h b/lib/librte_eal/common/include/rte_compat.h\nindex 92ff28faf..739e8485c 100644\n--- a/lib/librte_eal/common/include/rte_compat.h\n+++ b/lib/librte_eal/common/include/rte_compat.h\n@@ -89,4 +89,16 @@ __attribute__((section(\".text.experimental\")))\n \n #endif\n \n+/*\n+ * __rte_internal tags mark functions as internal only, If specified in public\n+ * header files, this tag will resolve to an error directive, preventing\n+ * external applications from attempting to make calls to functions not meant\n+ * for consumption outside the dpdk library\n+ */\n+#ifdef BUILDING_RTE_SDK\n+#define __rte_internal __attribute__((section(\".text.internal\")))\n+#else\n+#define __rte_internal __attribute__((error(\"This function cannot be used outside of the core DPDK library\"), \\\n+\tsection(\".text.internal\")))\n+#endif\n #endif /* _RTE_COMPAT_H_ */\ndiff --git a/mk/internal/rte.compile-pre.mk b/mk/internal/rte.compile-pre.mk\nindex 0cf3791b4..f1d97ef76 100644\n--- a/mk/internal/rte.compile-pre.mk\n+++ b/mk/internal/rte.compile-pre.mk\n@@ -56,8 +56,8 @@ C_TO_O = $(CC) -Wp,-MD,$(call obj2dep,$(@)).tmp $(CPPFLAGS) $(CFLAGS) \\\n C_TO_O_STR = $(subst ','\\'',$(C_TO_O)) #'# fix syntax highlight\n C_TO_O_DISP = $(if $(V),\"$(C_TO_O_STR)\",\"  CC $(@)\")\n endif\n-EXPERIMENTAL_CHECK = $(RTE_SDK)/buildtools/check-experimental-syms.sh\n-CHECK_EXPERIMENTAL = $(EXPERIMENTAL_CHECK) $(SRCDIR)/$(EXPORT_MAP) $@\n+SPECIAL_SYM_CHECK = $(RTE_SDK)/buildtools/check-special-syms.sh\n+CHECK_SPECIAL_SYMS = $(SPECIAL_SYM_CHECK) $(SRCDIR)/$(EXPORT_MAP) $@\n \n PMDINFO_GEN = $(RTE_SDK_BIN)/app/dpdk-pmdinfogen $@ $@.pmd.c\n PMDINFO_CC = $(CC) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@.pmd.o $@.pmd.c\n@@ -75,7 +75,7 @@ C_TO_O_DO = @set -e; \\\n \techo $(C_TO_O_DISP); \\\n \t$(C_TO_O) && \\\n \t$(PMDINFO_TO_O) && \\\n-\t$(CHECK_EXPERIMENTAL) && \\\n+\t$(CHECK_SPECIAL_SYMS) && \\\n \techo $(C_TO_O_CMD) > $(call obj2cmd,$(@)) && \\\n \tsed 's,'$@':,dep_'$@' =,' $(call obj2dep,$(@)).tmp > $(call obj2dep,$(@)) && \\\n \trm -f $(call obj2dep,$(@)).tmp\ndiff --git a/mk/target/generic/rte.vars.mk b/mk/target/generic/rte.vars.mk\nindex 25a578ad7..ed6a0c87b 100644\n--- a/mk/target/generic/rte.vars.mk\n+++ b/mk/target/generic/rte.vars.mk\n@@ -96,7 +96,7 @@ LDFLAGS += -L$(RTE_OUTPUT)/lib\n # defined.\n ifeq ($(BUILDING_RTE_SDK),1)\n # building sdk\n-CFLAGS += -include $(RTE_OUTPUT)/include/rte_config.h\n+CFLAGS += -include $(RTE_OUTPUT)/include/rte_config.h -DBUILDING_RTE_SDK\n else\n # if we are building an external application, include SDK's lib and\n # includes too\n",
    "prefixes": [
        "v2",
        "01/10"
    ]
}