POSIX barrier implementation, take 3
The attached patch should address all of the review comments. Modifed change log: Newlib: * libc/include/sys/features.h (_POSIX_BARRIERS): Define for Cygwin. * libc/include/sys/types.h (pthread_barrier_t) (pthread_barrierattr_t): Do not define for Cygwin. Cygwin: * common.din (pthread_barrierattr_init) (pthread_barrierattr_setpshared, pthread_barrierattr_getpshared) (pthread_barrierattr_destroy, pthread_barrier_init) (pthread_barrier_destroy, pthread_barrier_wait): Export. * include/cygwin/types.h (pthread_barrierattr_t) (pthread_barrier_t): Declare. * include/pthread.h (PTHREAD_BARRIER_SERIAL_THREAD) (pthread_barrierattr_init, pthread_barrierattr_setpshared) (pthread_barrierattr_getpshared, pthread_barrierattr_destroy) (pthread_barrier_init, pthread_barrier_destroy) (pthread_barrier_wait): Declare. * thread.h (PTHREAD_BARRIER_MAGIC) (PTHREAD_BARRIERATTR_MAGIC): Define. (class pthread_barrierattr, class pthread_barrier): Declare. * thread.cc (delete_and_clear): New local helper function. (class pthread_barrierattr, class pthread_barrier): Implement. * miscfuncs.h (likely, unlikely): New macros. -- VH
This commit is contained in:
committed by
Corinna Vinschen
parent
ef64aa4940
commit
813da84442
@ -62,6 +62,7 @@ extern "C"
|
||||
/* process is the default */
|
||||
#define PTHREAD_SCOPE_PROCESS 0
|
||||
#define PTHREAD_SCOPE_SYSTEM 1
|
||||
#define PTHREAD_BARRIER_SERIAL_THREAD (-1)
|
||||
|
||||
/* Register Fork Handlers */
|
||||
int pthread_atfork (void (*)(void), void (*)(void), void (*)(void));
|
||||
@ -133,6 +134,17 @@ int pthread_condattr_init (pthread_condattr_t *);
|
||||
int pthread_condattr_setclock (pthread_condattr_t *, clockid_t);
|
||||
int pthread_condattr_setpshared (pthread_condattr_t *, int);
|
||||
|
||||
/* Barriers */
|
||||
int pthread_barrierattr_init (pthread_barrierattr_t *);
|
||||
int pthread_barrierattr_setpshared (pthread_barrierattr_t *, int);
|
||||
int pthread_barrierattr_getpshared (const pthread_barrierattr_t *, int *);
|
||||
int pthread_barrierattr_destroy (pthread_barrierattr_t *);
|
||||
int pthread_barrier_init (pthread_barrier_t *,
|
||||
const pthread_barrierattr_t *, unsigned);
|
||||
int pthread_barrier_destroy (pthread_barrier_t *);
|
||||
int pthread_barrier_wait (pthread_barrier_t *);
|
||||
|
||||
/* Threads */
|
||||
int pthread_create (pthread_t *, const pthread_attr_t *,
|
||||
void *(*)(void *), void *);
|
||||
int pthread_detach (pthread_t);
|
||||
|
Reference in New Issue
Block a user