Esempio n. 1
0
DirectResult
direct_signals_initialize( void )
{
#ifndef ANDROID_NDK
     sigset_t mask;
     int i;
#endif
     D_DEBUG_AT( Direct_Signals, "Initializing...\n" );

     direct_recursive_mutex_init( &handlers_lock );
#ifdef ANDROID_NDK
     install_handlers();
#else
     if (direct_config->sighandler) {
          if (direct_config->sighandler_thread) {
               sigemptyset( &mask );
               for (i=0; i<NUM_SIGS_TO_HANDLE; i++)
                    sigaddset( &mask, sigs_to_handle[i] );

               pthread_sigmask( SIG_BLOCK, &mask, NULL );

               sighandler_thread = direct_thread_create( DTT_CRITICAL, handle_signals, NULL, "SigHandler" );
               D_ASSERT( sighandler_thread != NULL );
          }
          else
               install_handlers();
     }
#endif
     return DR_OK;
}
Esempio n. 2
0
DirectResult
direct_signals_initialize( void )
{
     D_DEBUG_AT( Direct_Signals, "Initializing...\n" );

     direct_recursive_mutex_init( &handlers_lock );

     install_handlers();

     return DR_OK;
}
Esempio n. 3
0
DirectResult
fusion_ref_init (FusionRef         *ref,
                 const char        *name,
                 const FusionWorld *world)
{
     D_ASSERT( ref != NULL );
     D_ASSERT( name != NULL );

     direct_recursive_mutex_init( &ref->single.lock );
     direct_waitqueue_init( &ref->single.cond );

     ref->single.refs      = 0;
     ref->single.destroyed = false;
     ref->single.locked    = 0;

     return DR_OK;
}
Esempio n. 4
0
void
__D_interface_init()
{
    direct_recursive_mutex_init( &implementations_mutex );
}