Exemplo n.º 1
0
static void callback_func(cyg_uint16 flags, CYG_ADDRWORD data)
{
    if (data == ((CYG_ADDRWORD) hCAN0) && (flags & CYGNUM_CAN_EVENT_RX))
    {
        // Wake up thread
        cyg_cond_signal(&can_wait);
    }
}
Exemplo n.º 2
0
void resFree(res_t res)
{
    cyg_mutex_lock(&res_lock);
    res_pool[res_count]=res;
    res_count++;
    cyg_cond_signal(&res_wait);
    cyg_mutex_unlock(&res_lock);
}
Exemplo n.º 3
0
static int 
e_cond_signal(lua_State *L) 
{
    cyg_cond_t *cond;
    cond = (cyg_cond_t *) check_user_data(L, 1, E_COND);
    cyg_cond_signal(cond);
    return 0;
}
Exemplo n.º 4
0
Arquivo: 4.c Projeto: rednuk/Temp
res_t res_allocate()
{
    res_t res;
    cyg_mutex_lock(&res_lock);
    
    while (res_count == 0)
        cyg_cond_wait(&res_wait, &res_lock);
    res_count--;
    res = res_pool[res_count];
    printf("TID %lu using %d, free resources: %d\n", cyg_thread_self(), res, res_count);
    cyg_cond_signal(&res_wait);
    
    cyg_mutex_unlock(&res_lock);
    return res;
}
Exemplo n.º 5
0
cyg_uint16  usbTerm::cdc_rxData(cyg_uint8* buff, cyg_uint32 len)
{
	//diag_printf("RX %d\n", len);
	if(!__instance)
		return USBD_FAIL;

	if(!(len && (len < 512)))
		return USBD_FAIL;

	cyg_mutex_lock(&(__instance->mUSBmutex));
	memcpy(__instance->mUSBRXbuff, buff, len);
	__instance->mUSBRXlen = len;
	cyg_mutex_unlock(&(__instance->mUSBmutex));

	cyg_cond_signal(&(__instance->mUSBrxCond));


	return USBD_OK;
}
Exemplo n.º 6
0
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 );
}
Exemplo n.º 7
0
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 );
}