get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 808311,
    "url": "http://patchwork.ozlabs.org/api/patches/808311/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/glibc/patch/20170831165634.C6D9143994318@oldenburg.str.redhat.com/",
    "project": {
        "id": 41,
        "url": "http://patchwork.ozlabs.org/api/projects/41/?format=api",
        "name": "GNU C Library",
        "link_name": "glibc",
        "list_id": "libc-alpha.sourceware.org",
        "list_email": "libc-alpha@sourceware.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20170831165634.C6D9143994318@oldenburg.str.redhat.com>",
    "list_archive_url": null,
    "date": "2017-08-31T16:56:34",
    "name": "[COMMITTED] nptl: Remove internal_function attribute",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "ea32f6304a61bbffe2faec96d227ccdcefa005b3",
    "submitter": {
        "id": 14312,
        "url": "http://patchwork.ozlabs.org/api/people/14312/?format=api",
        "name": "Florian Weimer",
        "email": "fweimer@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/glibc/patch/20170831165634.C6D9143994318@oldenburg.str.redhat.com/mbox/",
    "series": [
        {
            "id": 876,
            "url": "http://patchwork.ozlabs.org/api/series/876/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/glibc/list/?series=876",
            "date": "2017-08-31T16:56:34",
            "name": "[COMMITTED] nptl: Remove internal_function attribute",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/876/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/808311/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/808311/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<libc-alpha-return-83956-incoming=patchwork.ozlabs.org@sourceware.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "mailing list libc-alpha@sourceware.org"
        ],
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=sourceware.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=libc-alpha-return-83956-incoming=patchwork.ozlabs.org@sourceware.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org; dkim=pass (1024-bit key;\n\tsecure) header.d=sourceware.org header.i=@sourceware.org\n\theader.b=\"xZ634siS\"; dkim-atps=neutral",
            "sourceware.org; auth=none",
            "ext-mx07.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com",
            "ext-mx07.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=fweimer@redhat.com"
        ],
        "Received": [
            "from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjpSY2pzTz9s81\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  1 Sep 2017 02:57:01 +1000 (AEST)",
            "(qmail 36248 invoked by alias); 31 Aug 2017 16:56:47 -0000",
            "(qmail 36212 invoked by uid 89); 31 Aug 2017 16:56:47 -0000"
        ],
        "DomainKey-Signature": "a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:date:to:subject:mime-version:content-type\n\t:content-transfer-encoding:message-id:from; q=dns; s=default; b=\n\tGu048Oyc3nwb8bOV4H7tWUmgDwoHHMgjXr0z7h8TMNdodG18SjkA4BVwO/uJAvff\n\tlFFvrUDkFOhi0O6tO20ZjXCCXRo5BhBzdkr8kPdVqzZhK7y4El/JZxhzrFMOC+CD\n\tOwACrteIKrbifUHi0O+llLXNRJ4Ud8gFoee2wq6RKko=",
        "DKIM-Signature": "v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:date:to:subject:mime-version:content-type\n\t:content-transfer-encoding:message-id:from; s=default; bh=NmNrJZ\n\tPwlmSjbFABtxa/bvkPOyw=; b=xZ634siSlCkbIn7BD+vvfub2Nc3xqSS8jieDVu\n\tIqUFwpYKLXYo4gFE0n/VMri8wiu6dp6XwO8R4cgGuQxFnVWUqMOVo1y18unxq1ow\n\tugSqHwyBvBLNY1CNg+g15dJV24mxXSg9GcO5oLVfzGCeARqVAsa/faPiyxruTAAo\n\t8x9S4=",
        "Mailing-List": "contact libc-alpha-help@sourceware.org; run by ezmlm",
        "Precedence": "bulk",
        "List-Id": "<libc-alpha.sourceware.org>",
        "List-Unsubscribe": "<mailto:libc-alpha-unsubscribe-incoming=patchwork.ozlabs.org@sourceware.org>",
        "List-Subscribe": "<mailto:libc-alpha-subscribe@sourceware.org>",
        "List-Archive": "<http://sourceware.org/ml/libc-alpha/>",
        "List-Post": "<mailto:libc-alpha@sourceware.org>",
        "List-Help": "<mailto:libc-alpha-help@sourceware.org>,\n\t<http://sourceware.org/ml/#faqs>",
        "Sender": "libc-alpha-owner@sourceware.org",
        "X-Virus-Found": "No",
        "X-Spam-SWARE-Status": "No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n\tGIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RP_MATCHES_RCVD,\n\tSPF_HELO_PASS autolearn=ham version=3.3.2 spammy=asynchronous",
        "X-HELO": "mx1.redhat.com",
        "DMARC-Filter": "OpenDMARC Filter v1.3.2 mx1.redhat.com A8ACEC027394",
        "Date": "Thu, 31 Aug 2017 18:56:34 +0200",
        "To": "libc-alpha@sourceware.org",
        "Subject": "[PATCH COMMITTED] nptl: Remove internal_function attribute",
        "User-Agent": "Heirloom mailx 12.5 7/5/10",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=us-ascii",
        "Content-Transfer-Encoding": "7bit",
        "Message-Id": "<20170831165634.C6D9143994318@oldenburg.str.redhat.com>",
        "From": "fweimer@redhat.com (Florian Weimer)"
    },
    "content": "2017-08-31  Florian Weimer  <fweimer@redhat.com>\n\n\t* nptl/allocatestack.c (change_stack_perm, __deallocate_stack)\n\t(setxid_mark_thread, setxid_unmark_thread, setxid_signal_thread):\n\tRemove internal_function.\n\t* nptl/cancellation.c (__pthread_disable_asynccancel): Likewise.\n\t* nptl/libc_pthread_init.c (__libc_pthread_init): Likewise.\n\t* nptl/pthreadP.h (__find_in_stack_list, __free_tcb)\n\t(__deallocate_stack, __libc_pthread_init)\n\t(__pthread_mutex_cond_lock, __pthread_mutex_cond_lock_adjust)\n\t(__pthread_mutex_unlock_usercnt, __pthread_disable_asynccancel)\n\t(__libc_disable_asynccancel, __librt_disable_asynccancel):\n\tLikewise.\n\t* nptl/pthread_create.c (__find_in_stack_list, __free_tcb): Likewise.\n\t* nptl/pthread_mutex_cond_lock.c (__pthread_mutex_lock): Likewise.\n\t* nptl/pthread_mutex_lock.c (__pthread_mutex_cond_lock_adjust):\n\tLikewise.\n\t* nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_full)\n\t(__pthread_mutex_unlock_usercnt): Likewise.",
    "diff": "diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c\nindex 8766debde5..196371a88f 100644\n--- a/nptl/allocatestack.c\n+++ b/nptl/allocatestack.c\n@@ -307,7 +307,6 @@ queue_stack (struct pthread *stack)\n \n \n static int\n-internal_function\n change_stack_perm (struct pthread *pd\n #ifdef NEED_SEPARATE_REGISTER_STACK\n \t\t   , size_t pagemask\n@@ -787,7 +786,6 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,\n \n \n void\n-internal_function\n __deallocate_stack (struct pthread *pd)\n {\n   lll_lock (stack_cache_lock, LLL_PRIVATE);\n@@ -1016,7 +1014,6 @@ __find_thread_by_id (pid_t tid)\n \n #ifdef SIGSETXID\n static void\n-internal_function\n setxid_mark_thread (struct xid_command *cmdp, struct pthread *t)\n {\n   int ch;\n@@ -1054,7 +1051,6 @@ setxid_mark_thread (struct xid_command *cmdp, struct pthread *t)\n \n \n static void\n-internal_function\n setxid_unmark_thread (struct xid_command *cmdp, struct pthread *t)\n {\n   int ch;\n@@ -1075,7 +1071,6 @@ setxid_unmark_thread (struct xid_command *cmdp, struct pthread *t)\n \n \n static int\n-internal_function\n setxid_signal_thread (struct xid_command *cmdp, struct pthread *t)\n {\n   if ((t->cancelhandling & SETXID_BITMASK) == 0)\ndiff --git a/nptl/cancellation.c b/nptl/cancellation.c\nindex e3f0b619d6..f3a38059d5 100644\n--- a/nptl/cancellation.c\n+++ b/nptl/cancellation.c\n@@ -61,7 +61,7 @@ __pthread_enable_asynccancel (void)\n \n \n void\n-internal_function attribute_hidden\n+attribute_hidden\n __pthread_disable_asynccancel (int oldtype)\n {\n   /* If asynchronous cancellation was enabled before we do not have\ndiff --git a/nptl/libc_pthread_init.c b/nptl/libc_pthread_init.c\nindex 0db7a10893..875b27e74c 100644\n--- a/nptl/libc_pthread_init.c\n+++ b/nptl/libc_pthread_init.c\n@@ -38,7 +38,6 @@ extern int __libc_multiple_threads attribute_hidden;\n \n int *\n #endif\n-internal_function\n __libc_pthread_init (unsigned long int *ptr, void (*reclaim) (void),\n \t\t     const struct pthread_functions *functions)\n {\ndiff --git a/nptl/pthreadP.h b/nptl/pthreadP.h\nindex 5f0c18299d..dbf46b0973 100644\n--- a/nptl/pthreadP.h\n+++ b/nptl/pthreadP.h\n@@ -341,15 +341,14 @@ __do_cancel (void)\n \n /* Thread list handling.  */\n extern struct pthread *__find_in_stack_list (struct pthread *pd)\n-     attribute_hidden internal_function;\n+     attribute_hidden;\n \n /* Deallocate a thread's stack after optionally making sure the thread\n    descriptor is still valid.  */\n-extern void __free_tcb (struct pthread *pd) attribute_hidden internal_function;\n+extern void __free_tcb (struct pthread *pd) attribute_hidden;\n \n /* Free allocated stack.  */\n-extern void __deallocate_stack (struct pthread *pd)\n-     attribute_hidden internal_function;\n+extern void __deallocate_stack (struct pthread *pd) attribute_hidden;\n \n /* Mark all the stacks except for the current one as available.  This\n    function also re-initializes the lock for the stack cache.  */\n@@ -386,13 +385,11 @@ hidden_proto (__nptl_death_event)\n #ifdef TLS_MULTIPLE_THREADS_IN_TCB\n extern void __libc_pthread_init (unsigned long int *ptr,\n \t\t\t\t void (*reclaim) (void),\n-\t\t\t\t const struct pthread_functions *functions)\n-     internal_function;\n+\t\t\t\t const struct pthread_functions *functions);\n #else\n extern int *__libc_pthread_init (unsigned long int *ptr,\n \t\t\t\t void (*reclaim) (void),\n-\t\t\t\t const struct pthread_functions *functions)\n-     internal_function;\n+\t\t\t\t const struct pthread_functions *functions);\n \n /* Variable set to a nonzero value either if more than one thread runs or ran,\n    or if a single-threaded process is trying to cancel itself.  See\n@@ -430,13 +427,12 @@ extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);\n extern int __pthread_mutex_timedlock (pthread_mutex_t *__mutex,\n      const struct timespec *__abstime);\n extern int __pthread_mutex_cond_lock (pthread_mutex_t *__mutex)\n-     attribute_hidden internal_function;\n+     attribute_hidden;\n extern void __pthread_mutex_cond_lock_adjust (pthread_mutex_t *__mutex)\n-     attribute_hidden internal_function;\n+     attribute_hidden;\n extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex);\n extern int __pthread_mutex_unlock_usercnt (pthread_mutex_t *__mutex,\n-\t\t\t\t\t   int __decr)\n-     attribute_hidden internal_function;\n+\t\t\t\t\t   int __decr) attribute_hidden;\n extern int __pthread_mutexattr_init (pthread_mutexattr_t *attr);\n extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *attr);\n extern int __pthread_mutexattr_settype (pthread_mutexattr_t *attr, int kind);\n@@ -508,8 +504,7 @@ extern void __pthread_exit (void *value) __attribute__ ((__noreturn__));\n extern int __pthread_join (pthread_t threadid, void **thread_return);\n extern int __pthread_setcanceltype (int type, int *oldtype);\n extern int __pthread_enable_asynccancel (void) attribute_hidden;\n-extern void __pthread_disable_asynccancel (int oldtype)\n-     internal_function attribute_hidden;\n+extern void __pthread_disable_asynccancel (int oldtype) attribute_hidden;\n extern void __pthread_testcancel (void);\n \n #if IS_IN (libpthread)\n@@ -547,14 +542,12 @@ extern int __pthread_getaffinity_np (pthread_t th, size_t cpusetsize,\n \n /* The two functions are in libc.so and not exported.  */\n extern int __libc_enable_asynccancel (void) attribute_hidden;\n-extern void __libc_disable_asynccancel (int oldtype)\n-     internal_function attribute_hidden;\n+extern void __libc_disable_asynccancel (int oldtype) attribute_hidden;\n \n \n /* The two functions are in librt.so and not exported.  */\n extern int __librt_enable_asynccancel (void) attribute_hidden;\n-extern void __librt_disable_asynccancel (int oldtype)\n-     internal_function attribute_hidden;\n+extern void __librt_disable_asynccancel (int oldtype) attribute_hidden;\n \n #if IS_IN (libpthread)\n /* Special versions which use non-exported functions.  */\ndiff --git a/nptl/pthread_create.c b/nptl/pthread_create.c\nindex 83b88bfb38..992331e280 100644\n--- a/nptl/pthread_create.c\n+++ b/nptl/pthread_create.c\n@@ -205,7 +205,6 @@ static int create_thread (struct pthread *pd, const struct pthread_attr *attr,\n \n \n struct pthread *\n-internal_function\n __find_in_stack_list (struct pthread *pd)\n {\n   list_t *entry;\n@@ -341,7 +340,6 @@ __nptl_deallocate_tsd (void)\n /* Deallocate a thread's stack after optionally making sure the thread\n    descriptor is still valid.  */\n void\n-internal_function\n __free_tcb (struct pthread *pd)\n {\n   /* The thread is exiting now.  */\ndiff --git a/nptl/pthread_mutex_cond_lock.c b/nptl/pthread_mutex_cond_lock.c\nindex bd7149ef1d..2f0771302f 100644\n--- a/nptl/pthread_mutex_cond_lock.c\n+++ b/nptl/pthread_mutex_cond_lock.c\n@@ -14,7 +14,7 @@\n /* We need to assume that there are other threads blocked on the futex.\n    See __pthread_mutex_lock_full for further details.  */\n #define LLL_ROBUST_MUTEX_LOCK_MODIFIER FUTEX_WAITERS\n-#define __pthread_mutex_lock internal_function __pthread_mutex_cond_lock\n+#define __pthread_mutex_lock  __pthread_mutex_cond_lock\n #define __pthread_mutex_lock_full __pthread_mutex_cond_lock_full\n #define NO_INCR\n \ndiff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c\nindex b1586079ad..7f8254ba33 100644\n--- a/nptl/pthread_mutex_lock.c\n+++ b/nptl/pthread_mutex_lock.c\n@@ -607,7 +607,6 @@ hidden_def (__pthread_mutex_lock)\n \n #ifdef NO_INCR\n void\n-internal_function\n __pthread_mutex_cond_lock_adjust (pthread_mutex_t *mutex)\n {\n   assert ((mutex->__data.__kind & PTHREAD_MUTEX_PRIO_INHERIT_NP) != 0);\ndiff --git a/nptl/pthread_mutex_unlock.c b/nptl/pthread_mutex_unlock.c\nindex e1a8a5c617..c7e67959b7 100644\n--- a/nptl/pthread_mutex_unlock.c\n+++ b/nptl/pthread_mutex_unlock.c\n@@ -28,12 +28,11 @@\n #endif\n \n static int\n-internal_function\n __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr)\n      __attribute_noinline__;\n \n int\n-internal_function attribute_hidden\n+attribute_hidden\n __pthread_mutex_unlock_usercnt (pthread_mutex_t *mutex, int decr)\n {\n   int type = PTHREAD_MUTEX_TYPE_ELISION (mutex);\n@@ -92,7 +91,6 @@ __pthread_mutex_unlock_usercnt (pthread_mutex_t *mutex, int decr)\n \n \n static int\n-internal_function\n __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr)\n {\n   int newowner = 0;\n",
    "prefixes": [
        "COMMITTED"
    ]
}