aboutsummaryrefslogtreecommitdiffstats
path: root/tests/pthread_test.cpp
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2021-08-13 00:56:48 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-08-13 00:56:48 +0000
commita93cea05cf0f92a61715e9fd6c22a7e519e8cfbd (patch)
tree51db1cace0a75ac9e33aef1efb36e3f1d6832c67 /tests/pthread_test.cpp
parent4c92da431155174c6bfef91c227fe34becb340c0 (diff)
parent7da20341e91a4ece30f628fb91fbc6056c9c8a7c (diff)
downloadplatform_bionic-a93cea05cf0f92a61715e9fd6c22a7e519e8cfbd.tar.gz
platform_bionic-a93cea05cf0f92a61715e9fd6c22a7e519e8cfbd.tar.bz2
platform_bionic-a93cea05cf0f92a61715e9fd6c22a7e519e8cfbd.zip
Merge "Build bionic unit tests for musl"
Diffstat (limited to 'tests/pthread_test.cpp')
-rw-r--r--tests/pthread_test.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 1a00460bc9..3686ffb3df 100644
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -844,6 +844,8 @@ TEST(pthread, pthread_rwlockattr_smoke) {
ASSERT_EQ(pshared_value_array[i], pshared);
}
+#if !defined(MUSL)
+ // musl doesn't have pthread_rwlockattr_setkind_np
int kind_array[] = {PTHREAD_RWLOCK_PREFER_READER_NP,
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP};
for (size_t i = 0; i < sizeof(kind_array) / sizeof(kind_array[0]); ++i) {
@@ -852,6 +854,7 @@ TEST(pthread, pthread_rwlockattr_smoke) {
ASSERT_EQ(0, pthread_rwlockattr_getkind_np(&attr, &kind));
ASSERT_EQ(kind_array[i], kind);
}
+#endif
ASSERT_EQ(0, pthread_rwlockattr_destroy(&attr));
}
@@ -1235,6 +1238,8 @@ TEST(pthread, pthread_rwlock_clockwrlock_invalid) {
#endif // __BIONIC__
}
+#if !defined(MUSL)
+// musl doesn't have pthread_rwlockattr_setkind_np
class RwlockKindTestHelper {
private:
struct ThreadArg {
@@ -1302,8 +1307,10 @@ class RwlockKindTestHelper {
delete arg;
}
};
+#endif
TEST(pthread, pthread_rwlock_kind_PTHREAD_RWLOCK_PREFER_READER_NP) {
+#if !defined(MUSL)
RwlockKindTestHelper helper(PTHREAD_RWLOCK_PREFER_READER_NP);
ASSERT_EQ(0, pthread_rwlock_rdlock(&helper.lock));
@@ -1319,9 +1326,13 @@ TEST(pthread, pthread_rwlock_kind_PTHREAD_RWLOCK_PREFER_READER_NP) {
ASSERT_EQ(0, pthread_rwlock_unlock(&helper.lock));
ASSERT_EQ(0, pthread_join(writer_thread, nullptr));
+#else
+ GTEST_SKIP() << "musl doesn't have pthread_rwlockattr_setkind_np";
+#endif
}
TEST(pthread, pthread_rwlock_kind_PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) {
+#if !defined(MUSL)
RwlockKindTestHelper helper(PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
ASSERT_EQ(0, pthread_rwlock_rdlock(&helper.lock));
@@ -1338,6 +1349,9 @@ TEST(pthread, pthread_rwlock_kind_PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP)
ASSERT_EQ(0, pthread_rwlock_unlock(&helper.lock));
ASSERT_EQ(0, pthread_join(writer_thread, nullptr));
ASSERT_EQ(0, pthread_join(reader_thread, nullptr));
+#else
+ GTEST_SKIP() << "musl doesn't have pthread_rwlockattr_setkind_np";
+#endif
}
static int g_once_fn_call_count = 0;
@@ -2152,6 +2166,9 @@ TEST(pthread, pthread_mutex_init_same_as_static_initializers) {
ASSERT_EQ(0, memcmp(&lock_normal, &m1.lock, sizeof(pthread_mutex_t)));
pthread_mutex_destroy(&lock_normal);
+#if !defined(MUSL)
+ // musl doesn't support PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP or
+ // PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP.
pthread_mutex_t lock_errorcheck = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;
PthreadMutex m2(PTHREAD_MUTEX_ERRORCHECK);
ASSERT_EQ(0, memcmp(&lock_errorcheck, &m2.lock, sizeof(pthread_mutex_t)));
@@ -2161,6 +2178,7 @@ TEST(pthread, pthread_mutex_init_same_as_static_initializers) {
PthreadMutex m3(PTHREAD_MUTEX_RECURSIVE);
ASSERT_EQ(0, memcmp(&lock_recursive, &m3.lock, sizeof(pthread_mutex_t)));
ASSERT_EQ(0, pthread_mutex_destroy(&lock_recursive));
+#endif
}
class MutexWakeupHelper {