From patchwork Tue Mar 21 13:40:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 95627 Delivered-To: patch@linaro.org Received: by 10.140.89.233 with SMTP id v96csp1445304qgd; Tue, 21 Mar 2017 06:41:04 -0700 (PDT) X-Received: by 10.98.28.72 with SMTP id c69mr39843415pfc.8.1490103664854; Tue, 21 Mar 2017 06:41:04 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id b1si15159450pfc.192.2017.03.21.06.41.04 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Mar 2017 06:41:04 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-78099-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org; spf=pass (google.com: domain of libc-alpha-return-78099-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-78099-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id; q=dns; s= default; b=fdvLEXivyWOzMpwUO3gWCF8nuoZtxFcWG1S6smnyFDst6H/enUzk2 VLZNPY0kRc+nZnUrGLCEJjayLtc388PKbHynBuP7W0oRFUWrESA9cOvDuaezNHu5 x7p+uEX8w3snX99fseAHiURJfD1Oj1Us4GBJtvrQOce/uTms4/mt1I= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id; s=default; bh=ZZ8i29Z9hPMwmvp7iH1zJL7NB2o=; b=AJmm6qW+RHRmoyNRhf+qih2WEm+e Yl5/t/t3lt5moI4rWzVDVQsL5cRakFnDGdWTqpgXYC5UkrOQfFYvCn5BcLq+XSvC /sLp1zz0uhQM83T7TgXI188PQcMA0K4DFZM7yz2eQgh9ljtE16L+M7/2bn2YunCD WzJf34Cp9eFcwQ4= Received: (qmail 85063 invoked by alias); 21 Mar 2017 13:40:35 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 75978 invoked by uid 89); 21 Mar 2017 13:40:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.5 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=juan, Juan, Addresses, him X-HELO: mail-qk0-f178.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=FH1iuqNV1DjdHD5Quje45SiSI9fLA5d/8Ic26VIMBZM=; b=UzNLnO2orZQ3QbgGrxE3D1MhHilJxjL8WzRKZlzjZ5Llx9KrqxmqxBM/mLgRFKOxyA MBsqxyaZY6e6UeCCEUXUXUwswjbIlGHteDJydhBYRv1wPh4KCoWDlJVzvvRRH8OX38dq XiPLpXjZ2ig1O3vnHJ4TIm6bFbQHsLr/MPbXsjfxthLezyb1ZFFcMw+iIk40LrOxcNf8 TKpGhUGZrQd0QgpqTLjTVjNqrzGrFJ/IPLZYy1B30tK2awqjYD8TQ4edBc7/BOj8mYxu d661shwtPxwkeUj7wc+Ve/eNZTYHJzLXnfWkc45hVL2nKxnhbv61y492RVNoDGOOqQL+ 45xw== X-Gm-Message-State: AFeK/H0SdYg+sGuztBNclnikyPIWuDp+JWQhSH/n9gA0qD8x08OBeoz7J7vzYg04H811jULC X-Received: by 10.55.123.66 with SMTP id w63mr20576012qkc.301.1490103619388; Tue, 21 Mar 2017 06:40:19 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH v3 0/6] Add support for ISO C11 threads.h Date: Tue, 21 Mar 2017 10:40:06 -0300 Message-Id: <1490103612-9401-1-git-send-email-adhemerval.zanella@linaro.org> This is a new update of C11 thread support based on version 2 from Juan Manuel Torres Palma [1]. I contact him to take over his initial patches and extended to fix some issues and update to glibc 2.26. The main changes are: - Addresses Joseph's comments from [2] and ad indicated in in C11 thread patch I based this implementation from th public C11 thread document I have access [3]. I would ask for suggestion and change if it deviates from the final standard definition. - Fix remaining namespace and linkspace issues by building on basically all supported architectures (aarch64, alpha, armhf, hppa, i686, ia64, m68k, microblaze, mips64, mips64n32, mips, nios2, powerpc64le, powerpc64, powerpc, powerpc-power4, s390, s390x, sh4, sparc64, sparcv9, tilegx, tilegx32, tilepro, x86_64, and x86_64-32). Note: hppa changes still results in broken build as indicated in BZ#21016. - Adjusted abi files to 2.26, headers dates to 2017 and some others typos. - Fix a calling convention on pthread_create to call c11 start function with a well-behaved semanthics. I tested this without regression with a full make/check on x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu, powerpc-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabihf, sparc64-linux-gnu, and sparcv9-linux-gnu. [1] https://sourceware.org/ml/libc-alpha/2015-08/msg01051.html [2] https://sourceware.org/ml/libc-alpha/2016-03/msg00604.html [3] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf Adhemerval Zanella (5): Consolidate pthreadtype.h placement Move mutex and condition variable definition to common header Clean pthread functions namespaces for C11 threads Add C11 threads support Add test cases for ISO C11 threads Juan Manuel Torres Palma (1): Add manual documentation for threads.h ChangeLog | 247 ++++++++++++++ bits/thread-shared-types.h | 36 ++ conform/Makefile | 7 +- conform/data/threads.h-data | 56 ++++ include/sched.h | 2 + include/stdc-predef.h | 3 - include/sys/mman.h | 4 + include/termios.h | 2 + include/time.h | 2 +- manual/Makefile | 2 +- manual/isothreads.texi | 373 +++++++++++++++++++++ misc/Versions | 2 + nptl/Makefile | 17 +- nptl/Versions | 16 + nptl/allocatestack.c | 24 +- nptl/call_once.c | 27 ++ nptl/cnd_broadcast.c | 28 ++ nptl/cnd_destroy.c | 28 ++ nptl/cnd_init.c | 27 ++ nptl/cnd_signal.c | 28 ++ nptl/cnd_timedwait.c | 32 ++ nptl/cnd_wait.c | 28 ++ nptl/descr.h | 1 + nptl/mtx_destroy.c | 27 ++ nptl/mtx_init.c | 48 +++ nptl/mtx_lock.c | 29 ++ nptl/mtx_timedlock.c | 31 ++ nptl/mtx_trylock.c | 29 ++ nptl/mtx_unlock.c | 28 ++ nptl/pthreadP.h | 12 + nptl/pthread_cancel.c | 7 +- nptl/pthread_create.c | 39 ++- nptl/pthread_detach.c | 3 +- nptl/pthread_equal.c | 2 +- nptl/pthread_exit.c | 4 +- nptl/pthread_getspecific.c | 2 +- nptl/pthread_join.c | 3 +- nptl/pthread_key_create.c | 2 +- nptl/pthread_key_delete.c | 3 +- nptl/pthread_mutex_destroy.c | 2 +- nptl/pthread_mutex_init.c | 2 +- nptl/pthread_mutex_lock.c | 2 +- nptl/pthread_mutex_timedlock.c | 5 +- nptl/pthread_mutex_trylock.c | 3 +- nptl/pthread_mutex_unlock.c | 2 +- nptl/pthread_mutexattr_init.c | 3 +- nptl/pthread_mutexattr_settype.c | 3 +- nptl/pthread_self.c | 2 +- nptl/pthread_setspecific.c | 2 +- nptl/thrd_create.c | 30 ++ nptl/thrd_current.c | 26 ++ nptl/thrd_detach.c | 30 ++ nptl/thrd_equal.c | 26 ++ nptl/thrd_exit.c | 27 ++ nptl/thrd_join.c | 32 ++ nptl/thrd_priv.h | 46 +++ nptl/thrd_sleep.c | 41 +++ nptl/thrd_yield.c | 29 ++ nptl/tpp.c | 4 +- nptl/tss_create.c | 29 ++ nptl/tss_delete.c | 27 ++ nptl/tss_get.c | 27 ++ nptl/tss_set.c | 28 ++ nptl/tst-call-once.c | 66 ++++ nptl/tst-cnd-basic.c | 68 ++++ nptl/tst-cnd-broadcast.c | 83 +++++ nptl/tst-cnd-timedwait.c | 70 ++++ nptl/tst-mtx-basic.c | 73 ++++ nptl/tst-mtx-recursive.c | 45 +++ nptl/tst-mtx-timedlock.c | 98 ++++++ nptl/tst-mtx-trylock.c | 90 +++++ nptl/tst-thrd-detach.c | 52 +++ nptl/tst-thrd-sleep.c | 51 +++ nptl/tst-tss-basic.c | 75 +++++ posix/Makefile | 3 +- posix/nanosleep.c | 2 +- sysdeps/aarch64/nptl/bits/pthreadtypes.h | 67 +--- sysdeps/aarch64/nptl/bits/thread-shared-types.h | 97 ++++++ .../linux/alpha => alpha/nptl}/bits/pthreadtypes.h | 63 +--- sysdeps/alpha/nptl/bits/thread-shared-types.h | 93 +++++ sysdeps/arm/nptl/bits/pthreadtypes.h | 67 +--- sysdeps/arm/nptl/bits/thread-shared-types.h | 95 ++++++ sysdeps/hppa/nptl/bits/pthreadtypes.h | 83 +---- sysdeps/hppa/nptl/bits/thread-shared-types.h | 105 ++++++ sysdeps/i386/nptl/tls.h | 2 +- sysdeps/ia64/nptl/bits/pthreadtypes.h | 67 +--- sysdeps/ia64/nptl/bits/thread-shared-types.h | 95 ++++++ sysdeps/m68k/nptl/bits/pthreadtypes.h | 68 +--- sysdeps/m68k/nptl/bits/thread-shared-types.h | 100 ++++++ sysdeps/microblaze/nptl/bits/pthreadtypes.h | 61 +--- sysdeps/microblaze/nptl/bits/thread-shared-types.h | 96 ++++++ sysdeps/mips/nptl/bits/pthreadtypes.h | 83 +---- sysdeps/mips/nptl/bits/thread-shared-types.h | 117 +++++++ sysdeps/nacl/libpthread.abilist | 26 ++ sysdeps/nios2/nptl/bits/pthreadtypes.h | 67 +--- sysdeps/nios2/nptl/bits/thread-shared-types.h | 93 +++++ sysdeps/nptl/bits/pthreadtypes-common.h | 44 +++ sysdeps/nptl/threads.h | 198 +++++++++++ sysdeps/posix/gethostname.c | 2 +- .../powerpc => powerpc/nptl}/bits/pthreadtypes.h | 100 +----- sysdeps/powerpc/nptl/bits/thread-shared-types.h | 121 +++++++ sysdeps/s390/nptl/bits/pthreadtypes.h | 103 +----- sysdeps/s390/nptl/bits/thread-shared-types.h | 140 ++++++++ sysdeps/sh/nptl/bits/pthreadtypes.h | 63 +--- sysdeps/sh/nptl/bits/thread-shared-types.h | 98 ++++++ sysdeps/sparc/nptl/bits/pthreadtypes.h | 82 +---- sysdeps/sparc/nptl/bits/thread-shared-types.h | 119 +++++++ sysdeps/tile/nptl/bits/pthreadtypes.h | 95 +----- sysdeps/tile/nptl/bits/thread-shared-types.h | 118 +++++++ sysdeps/unix/sysv/linux/aarch64/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/aarch64/mmap.c | 5 +- sysdeps/unix/sysv/linux/alpha/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/arm/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c | 5 +- sysdeps/unix/sysv/linux/hppa/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/hppa/mmap.c | 1 + sysdeps/unix/sysv/linux/i386/Versions | 2 +- sysdeps/unix/sysv/linux/i386/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/i386/mmap.c | 1 + sysdeps/unix/sysv/linux/i386/smp.h | 2 +- sysdeps/unix/sysv/linux/ia64/libpthread.abilist | 26 ++ .../sysv/linux/m68k/coldfire/libpthread.abilist | 26 ++ .../unix/sysv/linux/m68k/m680x0/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/m68k/mmap.S | 1 + .../unix/sysv/linux/microblaze/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/microblaze/mmap.S | 1 + .../unix/sysv/linux/mips/mips32/libpthread.abilist | 26 ++ .../unix/sysv/linux/mips/mips64/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/mips/mips64/n32/mmap.c | 5 +- sysdeps/unix/sysv/linux/mmap64.c | 6 +- sysdeps/unix/sysv/linux/nios2/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/powerpc/ioctl.c | 6 +- .../linux/powerpc/powerpc32/libpthread.abilist | 26 ++ .../linux/powerpc/powerpc64/libpthread-le.abilist | 26 ++ .../linux/powerpc/powerpc64/libpthread.abilist | 26 ++ .../sysv/linux/s390/s390-32/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/s390/s390-32/mmap.S | 1 + sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S | 1 + .../sysv/linux/s390/s390-64/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/s390/s390-64/mmap.S | 2 + sysdeps/unix/sysv/linux/sh/libpthread.abilist | 26 ++ .../sysv/linux/sparc/sparc32/libpthread.abilist | 26 ++ .../sysv/linux/sparc/sparc64/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/tcsetattr.c | 3 +- .../linux/tile/tilegx/tilegx32/libpthread.abilist | 26 ++ .../linux/tile/tilegx/tilegx64/libpthread.abilist | 26 ++ .../sysv/linux/tile/tilepro/libpthread.abilist | 26 ++ sysdeps/unix/sysv/linux/wordsize-64/mmap.c | 6 +- sysdeps/unix/sysv/linux/x86/Implies | 1 + .../unix/sysv/linux/x86_64/64/libpthread.abilist | 26 ++ .../unix/sysv/linux/x86_64/x32/libpthread.abilist | 26 ++ sysdeps/x86/{ => nptl}/bits/pthreadtypes.h | 104 +----- sysdeps/x86/nptl/bits/thread-shared-types.h | 120 +++++++ sysdeps/x86_64/nptl/tls.h | 6 +- sysdeps/x86_64/x32/nptl/tls.h | 2 +- 155 files changed, 4998 insertions(+), 1226 deletions(-) create mode 100644 bits/thread-shared-types.h create mode 100644 conform/data/threads.h-data create mode 100644 manual/isothreads.texi create mode 100644 nptl/call_once.c create mode 100644 nptl/cnd_broadcast.c create mode 100644 nptl/cnd_destroy.c create mode 100644 nptl/cnd_init.c create mode 100644 nptl/cnd_signal.c create mode 100644 nptl/cnd_timedwait.c create mode 100644 nptl/cnd_wait.c create mode 100644 nptl/mtx_destroy.c create mode 100644 nptl/mtx_init.c create mode 100644 nptl/mtx_lock.c create mode 100644 nptl/mtx_timedlock.c create mode 100644 nptl/mtx_trylock.c create mode 100644 nptl/mtx_unlock.c create mode 100644 nptl/thrd_create.c create mode 100644 nptl/thrd_current.c create mode 100644 nptl/thrd_detach.c create mode 100644 nptl/thrd_equal.c create mode 100644 nptl/thrd_exit.c create mode 100644 nptl/thrd_join.c create mode 100644 nptl/thrd_priv.h create mode 100644 nptl/thrd_sleep.c create mode 100644 nptl/thrd_yield.c create mode 100644 nptl/tss_create.c create mode 100644 nptl/tss_delete.c create mode 100644 nptl/tss_get.c create mode 100644 nptl/tss_set.c create mode 100644 nptl/tst-call-once.c create mode 100644 nptl/tst-cnd-basic.c create mode 100644 nptl/tst-cnd-broadcast.c create mode 100644 nptl/tst-cnd-timedwait.c create mode 100644 nptl/tst-mtx-basic.c create mode 100644 nptl/tst-mtx-recursive.c create mode 100644 nptl/tst-mtx-timedlock.c create mode 100644 nptl/tst-mtx-trylock.c create mode 100644 nptl/tst-thrd-detach.c create mode 100644 nptl/tst-thrd-sleep.c create mode 100644 nptl/tst-tss-basic.c create mode 100644 sysdeps/aarch64/nptl/bits/thread-shared-types.h rename sysdeps/{unix/sysv/linux/alpha => alpha/nptl}/bits/pthreadtypes.h (70%) create mode 100644 sysdeps/alpha/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/arm/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/hppa/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/ia64/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/m68k/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/microblaze/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/mips/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/nios2/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/nptl/bits/pthreadtypes-common.h create mode 100644 sysdeps/nptl/threads.h rename sysdeps/{unix/sysv/linux/powerpc => powerpc/nptl}/bits/pthreadtypes.h (63%) create mode 100644 sysdeps/powerpc/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/s390/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/sh/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/sparc/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/tile/nptl/bits/thread-shared-types.h create mode 100644 sysdeps/unix/sysv/linux/x86/Implies rename sysdeps/x86/{ => nptl}/bits/pthreadtypes.h (64%) create mode 100644 sysdeps/x86/nptl/bits/thread-shared-types.h -- 2.7.4