diff --git a/userspace/libraries/LibC/include/bits/types/pthread_types.h b/userspace/libraries/LibC/include/bits/types/pthread_types.h index 77619199..58fbae88 100644 --- a/userspace/libraries/LibC/include/bits/types/pthread_types.h +++ b/userspace/libraries/LibC/include/bits/types/pthread_types.h @@ -54,7 +54,6 @@ typedef struct } pthread_barrierattr_t; typedef struct { - pthread_barrierattr_t attr; pthread_mutex_t lock; pthread_cond_t cond; unsigned target; diff --git a/userspace/libraries/LibC/pthread.cpp b/userspace/libraries/LibC/pthread.cpp index cd4d66d8..afecf044 100644 --- a/userspace/libraries/LibC/pthread.cpp +++ b/userspace/libraries/LibC/pthread.cpp @@ -1242,13 +1242,22 @@ int pthread_barrier_init(pthread_barrier_t* __restrict barrier, const pthread_ba if (attr == nullptr) attr = &default_attr; *barrier = { - .attr = *attr, .lock = PTHREAD_MUTEX_INITIALIZER, .cond = PTHREAD_COND_INITIALIZER, .target = count, .waiting = 0, .generation = 0, }; + const pthread_mutexattr_t mattr { + .type = PTHREAD_MUTEX_DEFAULT, + .shared = attr->shared, + }; + pthread_mutex_init(&barrier->lock, &mattr); + const pthread_condattr_t cattr { + .clock = CLOCK_REALTIME, + .shared = attr->shared, + }; + pthread_cond_init(&barrier->cond, &cattr); return 0; }