Show a cover letter.

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

{
    "id": 54740,
    "url": "http://patches.dpdk.org/api/covers/54740/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20190612203903.16565-1-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": "<20190612203903.16565-1-nhorman@tuxdriver.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190612203903.16565-1-nhorman@tuxdriver.com",
    "date": "2019-06-12T20:38:54",
    "name": "[v1,0/9] dpdk: introduce __rte_internal tag",
    "submitter": {
        "id": 32,
        "url": "http://patches.dpdk.org/api/people/32/?format=api",
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20190612203903.16565-1-nhorman@tuxdriver.com/mbox/",
    "series": [
        {
            "id": 4993,
            "url": "http://patches.dpdk.org/api/series/4993/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=4993",
            "date": "2019-06-12T20:38:54",
            "name": "dpdk: introduce __rte_internal tag",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/4993/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/54740/comments/",
    "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 83EE01C499;\n\tWed, 12 Jun 2019 22:39:22 +0200 (CEST)",
            "from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58])\n\tby dpdk.org (Postfix) with ESMTP id 159ED1B9C0\n\tfor <dev@dpdk.org>; Wed, 12 Jun 2019 22:39:20 +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 1hbA1a-0004PR-26; Wed, 12 Jun 2019 16:39:16 -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\tx5CKd7Dd016700; Wed, 12 Jun 2019 16:39:07 -0400",
            "(from nhorman@localhost)\n\tby hmswarspite.think-freely.org (8.15.2/8.15.2/Submit) id\n\tx5CKd5NG016693; Wed, 12 Jun 2019 16:39:05 -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": "Wed, 12 Jun 2019 16:38:54 -0400",
        "Message-Id": "<20190612203903.16565-1-nhorman@tuxdriver.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "In-Reply-To": "<20190525184346.27932-1-nhorman@tuxdriver.com>",
        "References": "<20190525184346.27932-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 v1 0/9] dpdk: introduce __rte_internal tag",
        "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": "Hey-\n        Based on our recent conversations regarding the use of symbols only\nmeant for internal dpdk consumption (between dpdk libraries), this is an idea\nthat I've come up with that I'd like to get some feedback on\n\nSummary:\n1) We have symbols in the DPDK that are meant to be used between DPDK libraries,\nbut not by applications linking to them\n2) We would like to document those symbols in the code, so as to note them\nclearly as for being meant for internal use only\n3) Linker symbol visibility is a very coarse grained tool, and so there is no\ngood way in a single library to mark items as being meant for use only by other\nDPDK libraries, at least not without some extensive runtime checking\n\n\nProposal:\nI'm proposing that we introduce the __rte_internal tag.  From a coding\nstandpoint it works a great deal like the __rte_experimental tag in that it\nexpempts the tagged symbol from ABI constraints (as the only users should be\nrepresented in the DPDK build environment).  Additionally, the __rte_internal\nmacro resolves differently based on the definition of the BUILDING_RTE_SDK flag\n(working under the assumption that said flag should only ever be set if we are\nactually building DPDK libraries which will make use of internal calls).  If the\nBUILDING_RTE_SDK flag is set __rte_internal resolves to __attribute__((section\n\"text.internal)), placing it in a special text section which is then used to\nvalidate that the the symbol appears in the INTERNAL section of the\ncorresponding library version map).  If BUILDING_RTE_SDK is not set, then\n__rte_internal resolves to __attribute__((error(\"...\"))), which causes any\ncaller of the tagged function to throw an error at compile time, indicating that\nthe symbol is not available for external use.\n\nThis isn't a perfect solution, as applications can still hack around it of\ncourse, but I think it hits some of the high points, restricting symbol access\nfor any library that prototypes its public and private symbols in the same\nheader file, excluding the internal symbols from ABI constraints, and clearly\ndocumenting those symbols which we wish to limit to internal usage.\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>"
}