static void init_locks(void) { int i; lockarray = dlsym_CRYPTO_malloc(dlsym_CRYPTO_num_locks() * sizeof(pthread_mutex_t), __FILE__, __LINE__); for (i=0; i<dlsym_CRYPTO_num_locks(); i++) { pthread_mutex_init(&(lockarray[i]), NULL); } dlsym_CRYPTO_set_id_callback((unsigned long (*)())thread_id); dlsym_CRYPTO_set_locking_callback((void (*)())lock_callback); }
static void locks_setup(JNIEnv *env) { int i; static int (*dlsym_CRYPTO_num_locks) (void); dlsym_CRYPTO_num_locks = do_dlsym(env, openssl, "CRYPTO_num_locks"); lock_cs = dlsym_CRYPTO_malloc(dlsym_CRYPTO_num_locks() * \ sizeof(pthread_mutex_t), __FILE__, __LINE__); for (i = 0; i < dlsym_CRYPTO_num_locks(); i++) { pthread_mutex_init(&(lock_cs[i]), NULL); } static void (*dlsym_CRYPTO_set_id_callback) (unsigned long (*)()); dlsym_CRYPTO_set_id_callback = do_dlsym(env, openssl, "CRYPTO_set_id_callback"); static void (*dlsym_CRYPTO_set_locking_callback) (void (*)()); dlsym_CRYPTO_set_locking_callback = do_dlsym(env, openssl, "CRYPTO_set_locking_callback"); dlsym_CRYPTO_set_id_callback((unsigned long (*)())pthreads_thread_id); dlsym_CRYPTO_set_locking_callback((void (*)())pthreads_locking_callback); }