Message ID | 20200114185255.25813-7-samuel.thibault@ens-lyon.org |
---|---|
State | New |
Headers | show |
Series | Port C11 threads to GNU/Hurd | expand |
LGTM, thanks. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> On 14/01/2020 15:52, Samuel Thibault wrote: > --- > nptl/call_once.c | 2 +- > sysdeps/nptl/bits/thread-shared-types.h | 10 ++++++++++ > sysdeps/nptl/threads.h | 13 +++++-------- > 3 files changed, 16 insertions(+), 9 deletions(-) > > diff --git a/nptl/call_once.c b/nptl/call_once.c > index 3f880a9073..25e2964c76 100644 > --- a/nptl/call_once.c > +++ b/nptl/call_once.c > @@ -27,5 +27,5 @@ call_once (once_flag *flag, void (*func)(void)) > "sizeof (once_flag) != sizeof (pthread_once_t)"); > _Static_assert (alignof (once_flag) == alignof (pthread_once_t), > "alignof (once_flag) != alignof (pthread_once_t)"); > - __pthread_once (&flag->__data, func); > + __pthread_once ((pthread_once_t *) flag, func); > } Ok. > diff --git a/sysdeps/nptl/bits/thread-shared-types.h b/sysdeps/nptl/bits/thread-shared-types.h > index fd08b6916a..fbbdd0bb36 100644 > --- a/sysdeps/nptl/bits/thread-shared-types.h > +++ b/sysdeps/nptl/bits/thread-shared-types.h > @@ -116,4 +116,14 @@ struct __pthread_cond_s > unsigned int __g_signals[2]; > }; > > +typedef unsigned int __tss_t; > +typedef unsigned long int __thrd_t; > + > +typedef struct > +{ > + int __data __ONCE_ALIGNMENT; > +} __once_flag; > + > +#define __ONCE_FLAG_INIT { 0 } > + > #endif /* _THREAD_SHARED_TYPES_H */ Ok. > diff --git a/sysdeps/nptl/threads.h b/sysdeps/nptl/threads.h > index 6d5e4bfe02..0ac489b4a1 100644 > --- a/sysdeps/nptl/threads.h > +++ b/sysdeps/nptl/threads.h > @@ -24,7 +24,7 @@ > > __BEGIN_DECLS > > -#include <bits/pthreadtypes-arch.h> > +#include <bits/thread-shared-types.h> > #include <bits/types/struct_timespec.h> > > #ifndef __cplusplus Ok, thread-shared-types.h includes pthreadtypes-arch.h. > @@ -32,10 +32,10 @@ __BEGIN_DECLS > #endif > > #define TSS_DTOR_ITERATIONS 4 > -typedef unsigned int tss_t; > +typedef __tss_t tss_t; > typedef void (*tss_dtor_t) (void*); > > -typedef unsigned long int thrd_t; > +typedef __thrd_t thrd_t; > typedef int (*thrd_start_t) (void*); > > /* Exit and error codes. */ > @@ -56,11 +56,8 @@ enum > mtx_timed = 2 > }; > > -typedef struct > -{ > - int __data __ONCE_ALIGNMENT; > -} once_flag; > -#define ONCE_FLAG_INIT { 0 } > +typedef __once_flag once_flag; > +#define ONCE_FLAG_INIT __ONCE_FLAG_INIT > > typedef union > { > Ok.
diff --git a/nptl/call_once.c b/nptl/call_once.c index 3f880a9073..25e2964c76 100644 --- a/nptl/call_once.c +++ b/nptl/call_once.c @@ -27,5 +27,5 @@ call_once (once_flag *flag, void (*func)(void)) "sizeof (once_flag) != sizeof (pthread_once_t)"); _Static_assert (alignof (once_flag) == alignof (pthread_once_t), "alignof (once_flag) != alignof (pthread_once_t)"); - __pthread_once (&flag->__data, func); + __pthread_once ((pthread_once_t *) flag, func); } diff --git a/sysdeps/nptl/bits/thread-shared-types.h b/sysdeps/nptl/bits/thread-shared-types.h index fd08b6916a..fbbdd0bb36 100644 --- a/sysdeps/nptl/bits/thread-shared-types.h +++ b/sysdeps/nptl/bits/thread-shared-types.h @@ -116,4 +116,14 @@ struct __pthread_cond_s unsigned int __g_signals[2]; }; +typedef unsigned int __tss_t; +typedef unsigned long int __thrd_t; + +typedef struct +{ + int __data __ONCE_ALIGNMENT; +} __once_flag; + +#define __ONCE_FLAG_INIT { 0 } + #endif /* _THREAD_SHARED_TYPES_H */ diff --git a/sysdeps/nptl/threads.h b/sysdeps/nptl/threads.h index 6d5e4bfe02..0ac489b4a1 100644 --- a/sysdeps/nptl/threads.h +++ b/sysdeps/nptl/threads.h @@ -24,7 +24,7 @@ __BEGIN_DECLS -#include <bits/pthreadtypes-arch.h> +#include <bits/thread-shared-types.h> #include <bits/types/struct_timespec.h> #ifndef __cplusplus @@ -32,10 +32,10 @@ __BEGIN_DECLS #endif #define TSS_DTOR_ITERATIONS 4 -typedef unsigned int tss_t; +typedef __tss_t tss_t; typedef void (*tss_dtor_t) (void*); -typedef unsigned long int thrd_t; +typedef __thrd_t thrd_t; typedef int (*thrd_start_t) (void*); /* Exit and error codes. */ @@ -56,11 +56,8 @@ enum mtx_timed = 2 }; -typedef struct -{ - int __data __ONCE_ALIGNMENT; -} once_flag; -#define ONCE_FLAG_INIT { 0 } +typedef __once_flag once_flag; +#define ONCE_FLAG_INIT __ONCE_FLAG_INIT typedef union {