Example #1
0
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);
}