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; }
DirectResult direct_signals_initialize( void ) { D_DEBUG_AT( Direct_Signals, "Initializing...\n" ); direct_recursive_mutex_init( &handlers_lock ); install_handlers(); return DR_OK; }
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; }
void __D_interface_init() { direct_recursive_mutex_init( &implementations_mutex ); }