From: Ulf Möller Date: Wed, 23 Feb 2000 18:10:42 +0000 (+0000) Subject: threads mapage. X-Git-Tag: OpenSSL_0_9_5beta1~14 X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=be7ae175602e55859494b6a79cc380b95a989fd1 threads mapage. --- diff --git a/FAQ b/FAQ index 181e39af2e..b17ed26d9f 100644 --- a/FAQ +++ b/FAQ @@ -68,9 +68,7 @@ multi-threaded versions of the standard libraries. If your platform is not one of these, consult the INSTALL file. Multi-threaded applications must provide two callback functions to -OpenSSL. This will be described in the threads(3) manpage. [That -page has not been written yet. Please read the "threads.doc" section -of doc/ssleay.txt instead.] +OpenSSL. This is described in the threads(3) manpage. * Why do I get a "PRNG not seeded" error message? diff --git a/doc/crypto/threads.pod b/doc/crypto/threads.pod new file mode 100644 index 0000000000..7e9866c12b --- /dev/null +++ b/doc/crypto/threads.pod @@ -0,0 +1,62 @@ +=pod + +=head1 NAME + +CRYPTO_set_locking_callback, CRYPTO_set_id_callback - OpenSSL thread support + +=head1 SYNOPSIS + + #include + + void CRYPTO_set_locking_callback(void (*locking_function)(int mode, + int n, const char *file, int line)); + + void CRYPTO_set_id_callback(unsigned long (*id_function)(void)); + +=head1 DESCRIPTION + +OpenSSL can safely be used in multi-threaded applications provided +that two callback functions are set. + +locking_function(int mode, int type, const char *file, int line) is +needed to perform locking on shared data stuctures. Multi-threaded +applications will crash at random if it is not set. + +locking_function() must be able to handle up to B +different mutex locks. It sets the Bth lock if B & +B, and releases it otherwise. + +B and B are the file number of the function setting the +lock. They can be useful for debugging. + +id_function(void) is a function that returns a thread ID. It is not +needed on Windows nor on platforms where getpid() returns a different +ID for each thread. + +=NOTE + +You can find out if OpenSSL was configured with thread support: + + #define OPENSSL_THREAD_DEFINES + #include + #if defined(THREADS) + // thread support enabled + #else + // no thread support + #endif + +=head1 EXAMPLES + +B shows examples of the callback functions on +Solaris, Irix and Win32. + +=head1 HISTORY + +CRYPTO_set_locking_callback() and CRYPTO_set_id_callback() are +available in all versions of SSLeay and OpenSSL. + +=head1 SEE ALSO + +L + +=cut