/** * Validate that we can enter/exit a RWMutex for write */ TEST(RWMutex, RWWriteEnterExitTest) { intptr_t result; omrthread_rwmutex_t handle; uintptr_t flags = 0; const char *mutexName = "test_mutex"; result = omrthread_rwmutex_init(&handle, flags, mutexName); ASSERT_TRUE(0 == result); result = omrthread_rwmutex_enter_write(handle); ASSERT_TRUE(0 == result); result = omrthread_rwmutex_exit_write(handle); ASSERT_TRUE(0 == result); result = omrthread_rwmutex_try_enter_write(handle); ASSERT_TRUE(0 == result); result = omrthread_rwmutex_exit_write(handle); ASSERT_TRUE(0 == result); /* clean up */ result = omrthread_rwmutex_destroy(handle); ASSERT_TRUE(0 == result); }
/** * This method free the internal structures and memory for a SupportThreadInfo * @param info the SupportThreadInfo instance to be freed */ void freeSupportThreadInfo(SupportThreadInfo *info) { OMRPORT_ACCESS_FROM_OMRPORT(omrTestEnv->getPortLibrary()); if (info->synchronization != NULL) { omrthread_monitor_destroy(info->synchronization); } if (info->handle != NULL) { omrthread_rwmutex_destroy(info->handle); } omrmem_free_memory(info); }
/** * validate that we can create a reate/write mutex successfully */ TEST(RWMutex, CreateTest) { intptr_t result; omrthread_rwmutex_t handle; uintptr_t flags = 0; const char *mutexName = "test_mutex"; result = omrthread_rwmutex_init(&handle, flags, mutexName); ASSERT_TRUE(0 == result); /* clean up */ result = omrthread_rwmutex_destroy(handle); ASSERT_TRUE(0 == result); }
/** * Validate that is_writelocked return true in writing state */ TEST(RWMutex, IsWriteLockedTest) { intptr_t result; omrthread_rwmutex_t handle; uintptr_t flags = 0; BOOLEAN ret; const char *mutexName = "test_mutex"; result = omrthread_rwmutex_init(&handle, flags, mutexName); ASSERT_TRUE(0 == result); ret = omrthread_rwmutex_is_writelocked(handle); ASSERT_TRUE(FALSE == ret); result = omrthread_rwmutex_enter_read(handle); ASSERT_TRUE(0 == result); ret = omrthread_rwmutex_is_writelocked(handle); ASSERT_TRUE(FALSE == ret); result = omrthread_rwmutex_exit_read(handle); ASSERT_TRUE(0 == result); result = omrthread_rwmutex_enter_write(handle); ASSERT_TRUE(0 == result); ret = omrthread_rwmutex_is_writelocked(handle); ASSERT_TRUE(TRUE == ret); result = omrthread_rwmutex_exit_write(handle); ASSERT_TRUE(0 == result); /* clean up */ result = omrthread_rwmutex_destroy(handle); ASSERT_TRUE(0 == result); }
CRWMutex::~CRWMutex(void) { omrthread_rwmutex_destroy(m_monitor); }