Support process shared pthread_rwlock

Cosmo now has a non-nsync implementation of POSIX read-write locks. It's
possible to call pthread_rwlockattr_setpshared in PTHREAD_PROCESS_SHARED
mode. Furthermore, if cosmo is built with PTHREAD_USE_NSYNC set to zero,
then Cosmo shouldn't use nsync at all. That's helpful if you want to not
link any Apache 2.0 licensed code.
This commit is contained in:
Justine Tunney 2024-12-13 02:50:19 -08:00
parent c22b413ac4
commit 2d43d400c6
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
11 changed files with 179 additions and 35 deletions

View file

@ -107,8 +107,15 @@ typedef struct pthread_cond_s {
} pthread_cond_t;
typedef struct pthread_rwlock_s {
void *_nsync[2];
char _iswrite;
union {
void *_nsync[2];
struct {
uint32_t _nsync_word;
char _pshared;
char _iswrite;
_PTHREAD_ATOMIC(uint32_t) _word;
};
};
} pthread_rwlock_t;
typedef struct pthread_barrier_s {