[00/10] Port C11 threads to GNU/Hurd

Message ID 20200114185255.25813-1-samuel.thibault@ens-lyon.org
Headers show
Series
  • Port C11 threads to GNU/Hurd
Related show

Message

Samuel Thibault Jan. 14, 2020, 6:52 p.m.
Hello,

This patch series basiscally moves the C11 threads implementation to
sysdeps/pthread, thus making it available on GNU/Hurd as well.  There
are a few changes that are needed, I'm here proposing them for review,
so we can probably commit them early in the 2.32 development.

Samuel

Samuel Thibault (10):
  htl: Rename _pthread_mutex_init/destroy to __pthread_mutex_init/destroy
  htl: Add missing internal functions declarations
  htl: Add support for C11 threads behavior
  htl: Make __PTHREAD_ONCE_INIT more flexible
  nptl: Move nptl-specific types to separate header
  C11 threads: do not require PTHREAD_DESTRUCTOR_ITERATIONS
  C11 threads: Fix thrd_t / pthread_t compatibility assertion
  C11 threads: make thrd_join more portable
  htl: Add C11 threads types definitions
  C11 threads: Move implementation to sysdeps/pthread

 htl/Versions                                  | 18 ++++++
 htl/pt-create.c                               | 20 +++++-
 htl/pt-initialize.c                           |  4 +-
 htl/pt-internal.h                             |  3 +
 nptl/Makefile                                 | 14 +----
 sysdeps/htl/bits/thread-shared-types.h        | 13 ++++
 .../htl/bits/types/struct___pthread_once.h    |  2 +-
 sysdeps/htl/pt-key.h                          |  2 +-
 sysdeps/htl/pt-mutex-destroy.c                |  5 +-
 sysdeps/htl/pt-mutex-init.c                   |  4 +-
 sysdeps/htl/pt-mutex-timedlock.c              |  1 +
 sysdeps/htl/pthread.h                         |  2 +-
 sysdeps/htl/pthreadP.h                        | 23 ++++++-
 sysdeps/htl/thrd_current.c                    | 31 +++++++++
 sysdeps/htl/threads.h                         |  1 -
 sysdeps/hurd/stdc-predef.h                    | 63 -------------------
 sysdeps/mach/htl/thrd_yield.c                 | 26 ++++++++
 sysdeps/mach/hurd/htl/pt-mutex-destroy.c      |  5 +-
 sysdeps/mach/hurd/htl/pt-mutex-init.c         |  6 +-
 sysdeps/mach/hurd/htl/pt-mutex-timedlock.c    |  1 +
 sysdeps/mach/hurd/i386/libc.abilist           |  4 ++
 sysdeps/mach/hurd/i386/libpthread.abilist     | 23 ++++++-
 sysdeps/nptl/bits/thread-shared-types.h       | 10 +++
 sysdeps/nptl/thrd_create.c                    |  2 +
 sysdeps/pthread/Makefile                      | 18 ++++++
 {nptl => sysdeps/pthread}/call_once.c         |  2 +-
 {nptl => sysdeps/pthread}/cnd_broadcast.c     |  0
 {nptl => sysdeps/pthread}/cnd_destroy.c       |  0
 {nptl => sysdeps/pthread}/cnd_init.c          |  0
 {nptl => sysdeps/pthread}/cnd_signal.c        |  0
 {nptl => sysdeps/pthread}/cnd_timedwait.c     |  0
 {nptl => sysdeps/pthread}/cnd_wait.c          |  0
 {nptl => sysdeps/pthread}/mtx_destroy.c       |  0
 {nptl => sysdeps/pthread}/mtx_init.c          |  0
 {nptl => sysdeps/pthread}/mtx_lock.c          |  0
 {nptl => sysdeps/pthread}/mtx_timedlock.c     |  0
 {nptl => sysdeps/pthread}/mtx_trylock.c       |  0
 {nptl => sysdeps/pthread}/mtx_unlock.c        |  0
 {nptl => sysdeps/pthread}/thrd_create.c       |  8 +--
 {nptl => sysdeps/pthread}/thrd_detach.c       |  0
 {nptl => sysdeps/pthread}/thrd_equal.c        |  0
 {nptl => sysdeps/pthread}/thrd_exit.c         |  0
 {nptl => sysdeps/pthread}/thrd_join.c         |  2 +-
 {nptl => sysdeps/pthread}/thrd_priv.h         |  0
 {nptl => sysdeps/pthread}/thrd_sleep.c        |  0
 sysdeps/{nptl => pthread}/threads.h           | 13 ++--
 {nptl => sysdeps/pthread}/tss_create.c        |  2 +
 {nptl => sysdeps/pthread}/tss_delete.c        |  0
 {nptl => sysdeps/pthread}/tss_get.c           |  0
 {nptl => sysdeps/pthread}/tss_set.c           |  0
 {nptl => sysdeps/pthread}/tst-call-once.c     |  0
 {nptl => sysdeps/pthread}/tst-cnd-basic.c     |  0
 {nptl => sysdeps/pthread}/tst-cnd-broadcast.c |  0
 {nptl => sysdeps/pthread}/tst-cnd-timedwait.c |  0
 {nptl => sysdeps/pthread}/tst-mtx-basic.c     |  0
 {nptl => sysdeps/pthread}/tst-mtx-recursive.c |  0
 {nptl => sysdeps/pthread}/tst-mtx-timedlock.c |  0
 {nptl => sysdeps/pthread}/tst-mtx-trylock.c   |  0
 {nptl => sysdeps/pthread}/tst-thrd-detach.c   |  0
 {nptl => sysdeps/pthread}/tst-thrd-sleep.c    |  0
 {nptl => sysdeps/pthread}/tst-tss-basic.c     |  0
 61 files changed, 220 insertions(+), 108 deletions(-)
 create mode 100644 sysdeps/htl/thrd_current.c
 delete mode 100644 sysdeps/htl/threads.h
 delete mode 100644 sysdeps/hurd/stdc-predef.h
 create mode 100644 sysdeps/mach/htl/thrd_yield.c
 create mode 100644 sysdeps/nptl/thrd_create.c
 rename {nptl => sysdeps/pthread}/call_once.c (95%)
 rename {nptl => sysdeps/pthread}/cnd_broadcast.c (100%)
 rename {nptl => sysdeps/pthread}/cnd_destroy.c (100%)
 rename {nptl => sysdeps/pthread}/cnd_init.c (100%)
 rename {nptl => sysdeps/pthread}/cnd_signal.c (100%)
 rename {nptl => sysdeps/pthread}/cnd_timedwait.c (100%)
 rename {nptl => sysdeps/pthread}/cnd_wait.c (100%)
 rename {nptl => sysdeps/pthread}/mtx_destroy.c (100%)
 rename {nptl => sysdeps/pthread}/mtx_init.c (100%)
 rename {nptl => sysdeps/pthread}/mtx_lock.c (100%)
 rename {nptl => sysdeps/pthread}/mtx_timedlock.c (100%)
 rename {nptl => sysdeps/pthread}/mtx_trylock.c (100%)
 rename {nptl => sysdeps/pthread}/mtx_unlock.c (100%)
 rename {nptl => sysdeps/pthread}/thrd_create.c (82%)
 rename {nptl => sysdeps/pthread}/thrd_detach.c (100%)
 rename {nptl => sysdeps/pthread}/thrd_equal.c (100%)
 rename {nptl => sysdeps/pthread}/thrd_exit.c (100%)
 rename {nptl => sysdeps/pthread}/thrd_join.c (92%)
 rename {nptl => sysdeps/pthread}/thrd_priv.h (100%)
 rename {nptl => sysdeps/pthread}/thrd_sleep.c (100%)
 rename sysdeps/{nptl => pthread}/threads.h (97%)
 rename {nptl => sysdeps/pthread}/tss_create.c (96%)
 rename {nptl => sysdeps/pthread}/tss_delete.c (100%)
 rename {nptl => sysdeps/pthread}/tss_get.c (100%)
 rename {nptl => sysdeps/pthread}/tss_set.c (100%)
 rename {nptl => sysdeps/pthread}/tst-call-once.c (100%)
 rename {nptl => sysdeps/pthread}/tst-cnd-basic.c (100%)
 rename {nptl => sysdeps/pthread}/tst-cnd-broadcast.c (100%)
 rename {nptl => sysdeps/pthread}/tst-cnd-timedwait.c (100%)
 rename {nptl => sysdeps/pthread}/tst-mtx-basic.c (100%)
 rename {nptl => sysdeps/pthread}/tst-mtx-recursive.c (100%)
 rename {nptl => sysdeps/pthread}/tst-mtx-timedlock.c (100%)
 rename {nptl => sysdeps/pthread}/tst-mtx-trylock.c (100%)
 rename {nptl => sysdeps/pthread}/tst-thrd-detach.c (100%)
 rename {nptl => sysdeps/pthread}/tst-thrd-sleep.c (100%)
 rename {nptl => sysdeps/pthread}/tst-tss-basic.c (100%)

-- 
2.24.1