Skip to content
This repository has been archived by the owner on Nov 8, 2023. It is now read-only.

Commit

Permalink
pthread barrier and spinlock types should only appear at API level 24.
Browse files Browse the repository at this point in the history
Bug: android/ndk#336
Test: builds
Change-Id: I938d9d7ea879d1dbc355f14e100f1ea31a51a1f0
  • Loading branch information
enh-google committed Mar 21, 2017
1 parent 9cb82a2 commit 468a5d2
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
6 changes: 6 additions & 0 deletions libc/include/bits/pthread_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,19 @@ typedef struct {
#endif
} pthread_attr_t;

#if __ANDROID_API__ >= __ANDROID_API_N__
typedef struct {
#if defined(__LP64__)
int64_t __private[4];
#else
int32_t __private[8];
#endif
} pthread_barrier_t;
#endif

#if __ANDROID_API__ >= __ANDROID_API_N__
typedef int pthread_barrierattr_t;
#endif

typedef struct {
#if defined(__LP64__)
Expand Down Expand Up @@ -88,13 +92,15 @@ typedef struct {

typedef long pthread_rwlockattr_t;

#if __ANDROID_API__ >= __ANDROID_API_N__
typedef struct {
#if defined(__LP64__)
int64_t __private;
#else
int32_t __private[2];
#endif
} pthread_spinlock_t;
#endif

typedef long pthread_t;

Expand Down
8 changes: 8 additions & 0 deletions libc/include/pthread.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ enum {

#define PTHREAD_ONCE_INIT 0

#if __ANDROID_API__ >= __ANDROID_API_N__
#define PTHREAD_BARRIER_SERIAL_THREAD -1
#endif

#if defined(__LP64__)
#define PTHREAD_STACK_MIN (4 * PAGE_SIZE)
Expand Down Expand Up @@ -178,23 +180,29 @@ int pthread_rwlock_trywrlock(pthread_rwlock_t* _Nonnull);
int pthread_rwlock_unlock(pthread_rwlock_t* _Nonnull);
int pthread_rwlock_wrlock(pthread_rwlock_t* _Nonnull);

#if __ANDROID_API__ >= __ANDROID_API_N__
int pthread_barrierattr_init(pthread_barrierattr_t* _Nonnull attr) __INTRODUCED_IN(24);
int pthread_barrierattr_destroy(pthread_barrierattr_t* _Nonnull attr) __INTRODUCED_IN(24);
int pthread_barrierattr_getpshared(const pthread_barrierattr_t* _Nonnull attr,
int* _Nonnull pshared) __INTRODUCED_IN(24);
int pthread_barrierattr_setpshared(pthread_barrierattr_t* _Nonnull attr, int pshared)
__INTRODUCED_IN(24);
#endif

#if __ANDROID_API__ >= __ANDROID_API_N__
int pthread_barrier_init(pthread_barrier_t* _Nonnull, const pthread_barrierattr_t*, unsigned)
__INTRODUCED_IN(24);
int pthread_barrier_destroy(pthread_barrier_t* _Nonnull) __INTRODUCED_IN(24);
int pthread_barrier_wait(pthread_barrier_t* _Nonnull) __INTRODUCED_IN(24);
#endif

#if __ANDROID_API__ >= __ANDROID_API_N__
int pthread_spin_destroy(pthread_spinlock_t* _Nonnull) __INTRODUCED_IN(24);
int pthread_spin_init(pthread_spinlock_t* _Nonnull, int) __INTRODUCED_IN(24);
int pthread_spin_lock(pthread_spinlock_t* _Nonnull) __INTRODUCED_IN(24);
int pthread_spin_trylock(pthread_spinlock_t* _Nonnull) __INTRODUCED_IN(24);
int pthread_spin_unlock(pthread_spinlock_t* _Nonnull) __INTRODUCED_IN(24);
#endif

pthread_t pthread_self(void) __attribute_const__;

Expand Down

0 comments on commit 468a5d2

Please sign in to comment.