#elif defined(HAVE_WEAK_ATTRIBUTE) int MPI_Init_thread(int *argc, char ***argv, int required, int *provided) __attribute__ ((weak, alias("PMPI_Init_thread"))); #endif /* -- End Profiling Symbol Block */ /* Define MPICH_MPI_FROM_PMPI if weak symbols are not supported to build the MPI routines */ #ifndef MPICH_MPI_FROM_PMPI #undef MPI_Init_thread #define MPI_Init_thread PMPI_Init_thread /* Any internal routines can go here. Make them static if possible */ /* Global variables can be initialized here */ MPIR_Process_t MPIR_Process = { OPA_INT_T_INITIALIZER(MPICH_MPI_STATE__PRE_INIT) }; /* all other fields in MPIR_Process are irrelevant */ MPIR_Thread_info_t MPIR_ThreadInfo = { 0 }; #if defined(MPICH_IS_THREADED) && defined(MPL_TLS) MPL_TLS MPIR_Per_thread_t MPIR_Per_thread = { 0 }; #else MPIR_Per_thread_t MPIR_Per_thread = { 0 }; #endif MPID_Thread_tls_t MPIR_Per_thread_key; #ifdef MPICH_THREAD_USE_MDTA /* This counts how many threads allowed to stay in the progress engine. */ OPA_int_t num_server_thread = { 0 };
#ifndef MPIDI_POSTED_RECV_ENQUEUE_HOOK #define MPIDI_POSTED_RECV_ENQUEUE_HOOK(x) do{}while(0) #endif #ifndef MPIDI_POSTED_RECV_DEQUEUE_HOOK #define MPIDI_POSTED_RECV_DEQUEUE_HOOK(x) 0 #endif #ifdef BY_PASS_PROGRESS extern MPID_Request ** const MPID_Recvq_posted_head_ptr; extern MPID_Request ** const MPID_Recvq_unexpected_head_ptr; extern MPID_Request ** const MPID_Recvq_posted_tail_ptr; extern MPID_Request ** const MPID_Recvq_unexpected_tail_ptr; #endif OPA_int_t MPIDI_CH3I_progress_completion_count = OPA_INT_T_INITIALIZER(0); /* NEMESIS MULTITHREADING: Extra Data Structures Added */ #ifdef MPICH_IS_THREADED volatile int MPIDI_CH3I_progress_blocked = FALSE; volatile int MPIDI_CH3I_progress_wakeup_signalled = FALSE; static MPID_Thread_cond_t MPIDI_CH3I_progress_completion_cond; static int MPIDI_CH3I_Progress_delay(unsigned int completion_count); static int MPIDI_CH3I_Progress_continue(unsigned int completion_count); #endif /* MPICH_IS_THREADED */ /* NEMESIS MULTITHREADING - End block*/ #ifdef HAVE_SIGNAL static void (*prev_sighandler) (int); #endif static volatile int sigusr1_count = 0;