Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/817688/?format=api
{ "id": 817688, "url": "http://patchwork.ozlabs.org/api/patches/817688/?format=api", "web_url": "http://patchwork.ozlabs.org/project/glibc/patch/1506112024-22601-4-git-send-email-adhemerval.zanella@linaro.org/", "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": "<1506112024-22601-4-git-send-email-adhemerval.zanella@linaro.org>", "list_archive_url": null, "date": "2017-09-22T20:26:59", "name": "[3/8] nptl: Add C11 threads call_once functions", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "f55eb6bea4957f7d00dde607e559c3adebc1a6fa", "submitter": { "id": 66065, "url": "http://patchwork.ozlabs.org/api/people/66065/?format=api", "name": "Adhemerval Zanella Netto", "email": "adhemerval.zanella@linaro.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/glibc/patch/1506112024-22601-4-git-send-email-adhemerval.zanella@linaro.org/mbox/", "series": [ { "id": 4704, "url": "http://patchwork.ozlabs.org/api/series/4704/?format=api", "web_url": "http://patchwork.ozlabs.org/project/glibc/list/?series=4704", "date": "2017-09-22T20:26:56", "name": "Add support for ISO C threads.h", "version": 7, "mbox": "http://patchwork.ozlabs.org/series/4704/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/817688/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/817688/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<libc-alpha-return-84876-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-84876-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=\"TgN8K7b9\"; dkim-atps=neutral", "sourceware.org; auth=none" ], "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 3xzQ5h73Jdz9t32\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 23 Sep 2017 06:27:52 +1000 (AEST)", "(qmail 65980 invoked by alias); 22 Sep 2017 20:27:20 -0000", "(qmail 65866 invoked by uid 89); 22 Sep 2017 20:27:20 -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:from:to:subject:date:message-id:in-reply-to\n\t:references; q=dns; s=default; b=uO6K+iw7xbfVYfgarl43UQgpYIdYpN/\n\te51AJK2wu+RN/78JQj9bWQlLqfau3+YCwL+wut+S0zdx5UTFsH3gzE17zK9Yj1cC\n\t22t6xFX73kaO9EIA3VsJayyNYu6ZixwgLVNvBfCtEEIqg9w5l3B0cshHi0qNM0BI\n\tmx/DkgB5G0/g=", "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:from:to:subject:date:message-id:in-reply-to\n\t:references; s=default; bh=ALPqL8WAYq5559kj//tddRrx2CU=; b=TgN8K\n\t7b9Xb5iZWOMRXUHJPsXv7K6qnZgoIHXGAc7tDkKaViSYoxQXFmhd/KmI3b8RvS1f\n\tmIqkRWqSYN14Vj/7ii+Si5mv4Zad2CEl2Ej8BVXFgqXLPI23qUF2Hb4uNw9PpdSp\n\tAg+u2TrYuSAhohnUbIegAktYtNk3W0uaJbCwU0=", "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=-27.1 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n\tGIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW,\n\tRCVD_IN_SORBS_SPAM,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=", "X-HELO": "mail-qt0-f179.google.com", "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:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=QCaWO0honUX9NScP+KHvFjEQV1QqP75FVi7alj8pEww=;\n\tb=A1rHfkGWZq5lEtnQEzVQt8qR3XJYGVZdHean+V7sDIEgiR/p9rCyIlk6oGYQd3YFd9\n\t8k2oYXxBcQsXBlO7YC8s1d8WETlSIutlyKeKPKiHjEuCbmJibzF6ZIdU8dFIREvnNZRB\n\trsiV7Kix3y8X8MMkeMbLq2ULkhWxwwthU2COXcwBkw8kuna61lyD+9Eq5fPAclvJmsNu\n\tPRVX14uH9HULrYuNFqmPq+4C/fJKLynUyWjipyHHk08oIWQE2cy8uEZFOXacMIMTAvtV\n\tIgQ6/lwvxrPHgODhKzPPVI/kHsoREammW08sknYLRZzF2ha5JGMPIG/eFPr7ZusdEnTY\n\t1K2g==", "X-Gm-Message-State": "AHPjjUiGDRBKvkRwjdEvrK73orYd13Xi6yzdcS/Y2jbaCsKQrIpFvm6k\n\tDGTIy2vAPOxgveE9Fa/Ef7YUV7G9tJU=", "X-Google-Smtp-Source": "AOwi7QCrycT3gb79Gdf6VumtMcx93ek8sMZCHt5gxVHKcs/XhnjfLiQiX5WY2Z4myf4mwYxiyrBnWg==", "X-Received": "by 10.237.37.14 with SMTP id v14mr605328qtc.116.1506112036460;\n\tFri, 22 Sep 2017 13:27:16 -0700 (PDT)", "From": "Adhemerval Zanella <adhemerval.zanella@linaro.org>", "To": "libc-alpha@sourceware.org", "Subject": "[PATCH 3/8] nptl: Add C11 threads call_once functions", "Date": "Fri, 22 Sep 2017 17:26:59 -0300", "Message-Id": "<1506112024-22601-4-git-send-email-adhemerval.zanella@linaro.org>", "In-Reply-To": "<1506112024-22601-1-git-send-email-adhemerval.zanella@linaro.org>", "References": "<1506112024-22601-1-git-send-email-adhemerval.zanella@linaro.org>" }, "content": "This patch adds the call_* definitions from C11 threads (ISO/IEC 9899:2011),\nmore specifically call_once and required types.\n\nMostly of the definitions are composed based on POSIX conterparts,including\nonce_flag (pthread_once_t). The idea is to make possible to share POSIX\ninternal implementations for mostly of the code (and making adjustment only\nwhen required).\n\nChecked with a build for all major ABI (aarch64-linux-gnu, alpha-linux-gnu,\narm-linux-gnueabi, i386-linux-gnu, ia64-linux-gnu, m68k-linux-gnu,\nmicroblaze-linux-gnu [1], mips{64}-linux-gnu, nios2-linux-gnu,\npowerpc{64le}-linux-gnu, s390{x}-linux-gnu, sparc{64}-linux-gnu,\ntile{pro,gx}-linux-gnu, and x86_64-linux-gnu).\n\nAlso ran a full check on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu,\narm-linux-gnueabhf, and powerpc64le-linux-gnu.\n\n\t* conform/data/threads.h-data (ONCE_FLAG_INIT): New macro.\n\t(once_flag): New type.\n\t(call_once): New function.\n\t* nptl/Makefile (libpthread-routines): Add call_once object.\n\t* nptl/Versions (libphread) [GLIBC_2.27]: Add call_once symbol.\n\t* nptl/call_once.c: New file.\n\t* sysdeps/nptl/threads.h (ONCE_FLAG_INIT): New define.\n\t(once_flag): New type.\n\t(call_once): New prototype.\n---\n ChangeLog | 10 ++++++++++\n conform/data/threads.h-data | 5 +++++\n nptl/Makefile | 2 +-\n nptl/Versions | 2 +-\n nptl/call_once.c | 33 +++++++++++++++++++++++++++++++++\n sysdeps/nptl/threads.h | 7 +++++++\n 6 files changed, 57 insertions(+), 2 deletions(-)\n create mode 100644 nptl/call_once.c", "diff": "diff --git a/conform/data/threads.h-data b/conform/data/threads.h-data\nindex bb5ca75..70b2fe0 100644\n--- a/conform/data/threads.h-data\n+++ b/conform/data/threads.h-data\n@@ -1,5 +1,7 @@\n #if defined ISO11\n \n+macro ONCE_FLAG_INIT\n+\n constant thrd_success\n constant thrd_busy\n constant thrd_error\n@@ -13,6 +15,7 @@ constant mtx_timed\n type thrd_t\n type thrd_start_t\n type mtx_t\n+type once_flag\n \n function int thrd_create (thrd_t*, thrd_start_t, void*)\n function int thrd_equal (thrd_t, thrd_t)\n@@ -30,6 +33,8 @@ function int mtx_trylock (mtx_t*)\n function int mtx_unlock (mtx_t*)\n function void mtx_destroy (mtx_t*)\n \n+function void call_once (once_flag*, void (*)(void))\n+\n #include \"time.h-data\"\n \n #endif\ndiff --git a/nptl/Makefile b/nptl/Makefile\nindex c4f6970..7d2b83f 100644\n--- a/nptl/Makefile\n+++ b/nptl/Makefile\n@@ -142,7 +142,7 @@ libpthread-routines = nptl-init vars events version pt-interp \\\n \t\t thrd_create thrd_current thrd_detach thrd_equal \\\n \t\t thrd_exit thrd_join thrd_sleep thrd_yield \\\n \t\t mtx_destroy mtx_init mtx_lock mtx_timedlock \\\n-\t\t mtx_trylock mtx_unlock\n+\t\t mtx_trylock mtx_unlock call_once\n #\t\t pthread_setuid pthread_seteuid pthread_setreuid \\\n #\t\t pthread_setresuid \\\n #\t\t pthread_setgid pthread_setegid pthread_setregid \\\ndiff --git a/nptl/Versions b/nptl/Versions\nindex 5cf581a..b055860 100644\n--- a/nptl/Versions\n+++ b/nptl/Versions\n@@ -269,7 +269,7 @@ libpthread {\n GLIBC_2.27 {\n thrd_create; thrd_current; thrd_detach; thrd_equal; thrd_exit; thrd_join;\n thrd_sleep; thrd_yield; mtx_init; mtx_lock; mtx_timedlock; mtx_trylock;\n- mtx_unlock; mtx_destroy;\n+ mtx_unlock; mtx_destroy; call_once;\n }\n \n GLIBC_PRIVATE {\ndiff --git a/nptl/call_once.c b/nptl/call_once.c\nnew file mode 100644\nindex 0000000..8a15f1f\n--- /dev/null\n+++ b/nptl/call_once.c\n@@ -0,0 +1,33 @@\n+/* C11 threads call once implementation.\n+ Copyright (C) 2017 Free Software Foundation, Inc.\n+ This file is part of the GNU C Library.\n+\n+ The GNU C Library is free software; you can redistribute it and/or\n+ modify it under the terms of the GNU Lesser General Public\n+ License as published by the Free Software Foundation; either\n+ version 2.1 of the License, or (at your option) any later version.\n+\n+ The GNU C Library is distributed in the hope that it will be useful,\n+ but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ Lesser General Public License for more details.\n+\n+ You should have received a copy of the GNU Lesser General Public\n+ License along with the GNU C Library; if not, see\n+ <http://www.gnu.org/licenses/>. */\n+\n+#include <stdalign.h>\n+\n+#include \"thrd_priv.h\"\n+\n+/* Call function func exactly once, even if invoked from several threads.\n+ All calls must be made with the same flag object. */\n+void\n+call_once (once_flag *flag, void (*func)(void))\n+{\n+ _Static_assert (sizeof (once_flag) == sizeof (pthread_once_t),\n+\t\t \"once_flag size\");\n+ _Static_assert (alignof (once_flag) == alignof (pthread_once_t),\n+\t\t \"once_flag alignment\");\n+ __pthread_once (flag, func);\n+}\ndiff --git a/sysdeps/nptl/threads.h b/sysdeps/nptl/threads.h\nindex cd811f4..53fe731 100644\n--- a/sysdeps/nptl/threads.h\n+++ b/sysdeps/nptl/threads.h\n@@ -27,8 +27,11 @@ __BEGIN_DECLS\n #include <bits/pthreadtypes-arch.h>\n #include <bits/types/struct_timespec.h>\n \n+#define ONCE_FLAG_INIT 0\n+\n typedef unsigned long int thrd_t;\n typedef int (*thrd_start_t) (void*);\n+typedef int __ONCE_ALIGNMENT once_flag;\n \n /* Exit and error codes. */\n enum\n@@ -129,6 +132,10 @@ extern int mtx_unlock (mtx_t *__mutex);\n /* Destroy the mutex object pointed by __mutex. */\n extern void mtx_destroy (mtx_t *__mutex);\n \n+/* Call function func exactly once, even if invoked from several threads.\n+ All calls must be made with the same __flag object. */\n+extern void call_once (once_flag *__flag, void (*__func)(void));\n+\n __END_DECLS\n \n #endif /* _THREADS_H */\n", "prefixes": [ "3/8" ] }