BOOL vjpegTryLock (void) { #ifndef ECOS if(tt_rmutex_try_lock (&g_vpJPEG.mtLock)==0) #else if(cyg_mutex_trylock (&g_vpJPEG.mtLock)==true) #endif return TRUE; else return FALSE; }
static void entry0( cyg_addrword_t data ) { cyg_mutex_lock( &m0 ); { CHECK( ! cyg_mutex_trylock( &m0 ) ); cyg_mutex_lock( &m1 ); { CHECK( ! cyg_mutex_trylock( &m0 ) ); } cyg_mutex_unlock( &m1 ); } cyg_mutex_unlock( &m0 ); cyg_mutex_lock( &m0 ); { while ( 0 == m0d ) cyg_cond_wait( &cvar0 ); CHECK( 1 == m0d++ ); cyg_cond_signal( &cvar0 ); while ( 4 != m0d ) cyg_cond_wait( &cvar1 ); CHECK( 4 == m0d ); } cyg_mutex_unlock( &m0 ); finish( (cyg_ucount8)data ); }
bool cyg_recursive_mutex_trylock( cyg_recursive_mutex_t *mx ) { bool result=false; cyg_scheduler_lock(); { if( cyg_thread_self() == mx->owner ) { mx->count++; result = true; } else { result = cyg_mutex_trylock( &mx->mutex ); if (result == true) { mx->count = 1; mx->owner = cyg_thread_self(); } } } cyg_scheduler_unlock(); return result; }
static void entry1( cyg_addrword_t data ) { cyg_mutex_lock( &m0 ); { CHECK( cyg_mutex_trylock( &m1 ) ); { } cyg_mutex_unlock( &m1 ); } cyg_mutex_unlock( &m0 ); cyg_mutex_lock( &m0 ); { CHECK( 0 == m0d++ ); cyg_cond_broadcast( &cvar0 ); } cyg_mutex_unlock( &m0 ); cyg_mutex_lock( &m0 ); { while( 1 == m0d ) cyg_cond_wait( &cvar0 ); CHECK( 2 == m0d++ ); cyg_cond_signal( &cvar0 ); while( 3 == m0d ) cyg_cond_wait( &cvar1 ); } cyg_mutex_unlock( &m0 ); finish( (cyg_ucount8)data ); }
gw_bool_t gw_mutex_trylock(gw_mutex_t *mutex) { return cyg_mutex_trylock(mutex); }