[v4,0/4] Add support for ISO C11 threads.h

Message ID 1494441656-1212-1-git-send-email-adhemerval.zanella@linaro.org
Headers show
Series
  • Add support for ISO C11 threads.h
Related show

Message

Adhemerval Zanella May 10, 2017, 6:40 p.m.
This is a new update for C11 threads support based on my previous [1]
version.  As discussed in previous thread and after several inputs
the general consensus [2] regarding current C11 DRs related to thread
support [3] (currently 405, 414, 416, 424, 449, 469, 470, 479, 480, and
493) is it should not prevent a implementation based on POSIX primitives.

So I would like to stil propose it for 2.26.  I rebased my previous
version on top os master, so the patchset is simplified and should
contain only C11 threads code.

The main changes from previous version are:

  - Rebased against master to adjust for CALL_THREAD_FCT macro, pthread
    header reorganization, and mmap adjustment.

  - Fixed some wording and typos.

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/2017-03/msg00461.html
[2] https://sourceware.org/ml/libc-alpha/2017-04/msg00096.html 
[3] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2109.htm
[4] https://sourceware.org/git/?p=glibc.git;a=commit;h=a358c805300e358e30d4788a6f19c69988623a5c
[5] https://sourceware.org/git/?p=glibc.git;a=commit;h=eab380d8ec9884e90232dceba24161e63ddd26b8

Adhemerval Zanella (3):
  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                                          | 186 +++++++++++
 NEWS                                               |   9 +
 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                             | 355 +++++++++++++++++++++
 misc/Versions                                      |   2 +
 misc/mmap.c                                        |   1 +
 misc/mmap64.c                                      |   1 +
 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                               |  31 ++
 nptl/cnd_wait.c                                    |  28 ++
 nptl/descr.h                                       |   2 +
 nptl/mtx_destroy.c                                 |  27 ++
 nptl/mtx_init.c                                    |  48 +++
 nptl/mtx_lock.c                                    |  28 ++
 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                              |  36 ++-
 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/nanosleep.c                                  |   2 +-
 sysdeps/nacl/libpthread.abilist                    |  26 ++
 sysdeps/nptl/threads.h                             | 204 ++++++++++++
 sysdeps/posix/gethostname.c                        |   2 +-
 sysdeps/unix/sysv/linux/aarch64/libpthread.abilist |  26 ++
 sysdeps/unix/sysv/linux/alpha/libpthread.abilist   |  26 ++
 sysdeps/unix/sysv/linux/arm/libpthread.abilist     |  26 ++
 sysdeps/unix/sysv/linux/hppa/libpthread.abilist    |  26 ++
 sysdeps/unix/sysv/linux/i386/Versions              |   2 +-
 sysdeps/unix/sysv/linux/i386/libpthread.abilist    |  26 ++
 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 ++
 .../unix/sysv/linux/microblaze/libpthread.abilist  |  26 ++
 .../unix/sysv/linux/mips/mips32/libpthread.abilist |  26 ++
 .../unix/sysv/linux/mips/mips64/libpthread.abilist |  26 ++
 sysdeps/unix/sysv/linux/mmap.c                     |   1 +
 sysdeps/unix/sysv/linux/mmap64.c                   |   2 +
 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 ++
 .../sysv/linux/s390/s390-64/libpthread.abilist     |  26 ++
 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 ++
 .../unix/sysv/linux/x86_64/64/libpthread.abilist   |  26 ++
 .../unix/sysv/linux/x86_64/x32/libpthread.abilist  |  26 ++
 111 files changed, 3186 insertions(+), 66 deletions(-)
 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/nptl/threads.h

-- 
2.7.4