| 757 | thread_local photon::rwlock rwl; |
| 758 | |
| 759 | void *rwlocktest(void* args) { |
| 760 | uint64_t carg = (uint64_t) args; |
| 761 | auto mode = carg & ((1ULL<<32) -1); |
| 762 | auto id = carg >> 32; |
| 763 | // LOG_DEBUG("locking ", VALUE(id), VALUE(mode)); |
| 764 | rwl.lock(mode); |
| 765 | LOG_DEBUG("locked ", VALUE(id), VALUE(mode)); |
| 766 | EXPECT_EQ(id, rw_count); |
| 767 | rw_count ++; |
| 768 | if (mode == photon::RLOCK) |
| 769 | EXPECT_FALSE(writing); |
| 770 | else |
| 771 | writing = true; |
| 772 | photon::thread_usleep(100*1000); |
| 773 | if (mode == photon::WLOCK) |
| 774 | writing = false; |
| 775 | LOG_DEBUG("unlocking ", VALUE(id), VALUE(mode)); |
| 776 | rwl.unlock(); |
| 777 | // LOG_DEBUG("unlocked ", VALUE(id), VALUE(mode)); |
| 778 | return NULL; |
| 779 | } |
| 780 | |
| 781 | TEST(RWLock, checklock) { |
| 782 | std::vector<photon::join_handle*> handles; |
nothing calls this directly
no test coverage detected