Implement pthread spin.

In order to run tsan unit tests, we need to support pthread spin APIs.

Bug: 18623621
Bug: 25392375
Change-Id: Icbb4a74e72e467824b3715982a01600031868e29
This commit is contained in:
Yabin Cui
2015-11-17 16:03:18 -08:00
parent b804b9d67b
commit fe3a83a934
12 changed files with 149 additions and 0 deletions

View File

@@ -1779,3 +1779,14 @@ TEST(pthread, pthread_barrier_check_ordering) {
ASSERT_EQ(0, pthread_join(threads[i], nullptr));
}
}
TEST(pthread, pthread_spinlock_smoke) {
pthread_spinlock_t lock;
ASSERT_EQ(0, pthread_spin_init(&lock, 0));
ASSERT_EQ(0, pthread_spin_trylock(&lock));
ASSERT_EQ(0, pthread_spin_unlock(&lock));
ASSERT_EQ(0, pthread_spin_lock(&lock));
ASSERT_EQ(EBUSY, pthread_spin_trylock(&lock));
ASSERT_EQ(0, pthread_spin_unlock(&lock));
ASSERT_EQ(0, pthread_spin_destroy(&lock));
}