summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2016-02-09 09:13:45 +0000
committerMatt Caswell <matt@openssl.org>2016-02-09 15:11:38 +0000
commit71567a6f418ed1dc42d4c5ec57f72d3119b75966 (patch)
tree711f27361058f6547b849988dacdcf85d5bc2d69 /crypto
parent8793f012f11416abd300aa524057c863e8c16dd5 (diff)
Provide a thread stop API
Add the OPENSSL_INIT_thread_stop() function. Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/cryptlib.c3
-rw-r--r--crypto/include/internal/cryptlib_int.h1
-rw-r--r--crypto/init.c10
3 files changed, 10 insertions, 4 deletions
diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c
index 138708b867..b53081830f 100644
--- a/crypto/cryptlib.c
+++ b/crypto/cryptlib.c
@@ -234,8 +234,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
- ossl_init_thread_stop(
- (struct thread_local_inits_st *)ossl_init_get_thread_local(0));
+ OPENSSL_INIT_thread_stop();
break;
case DLL_PROCESS_DETACH:
break;
diff --git a/crypto/include/internal/cryptlib_int.h b/crypto/include/internal/cryptlib_int.h
index 2906921a09..36c0a10e03 100644
--- a/crypto/include/internal/cryptlib_int.h
+++ b/crypto/include/internal/cryptlib_int.h
@@ -65,7 +65,6 @@ struct thread_local_inits_st {
};
void *ossl_init_get_thread_local(int alloc);
int ossl_init_thread_start(uint64_t opts);
-void ossl_init_thread_stop(struct thread_local_inits_st *locals);
/*
* OPENSSL_INIT flags. The primary list of these is in crypto.h. Flags below
* are those ommitted from crypto.h because they are "reserverd for internal
diff --git a/crypto/init.c b/crypto/init.c
index 53ed235699..856b06afdd 100644
--- a/crypto/init.c
+++ b/crypto/init.c
@@ -77,6 +77,8 @@
#include <internal/err.h>
#include <stdlib.h>
+static void ossl_init_thread_stop(struct thread_local_inits_st *locals);
+
/* Implement "once" functionality */
#if !defined(OPENSSL_THREADS)
typedef int OPENSSL_INIT_ONCE;
@@ -466,7 +468,7 @@ static void ossl_init_zlib(void)
zlib_inited = 1;
}
-void ossl_init_thread_stop(struct thread_local_inits_st *locals)
+static void ossl_init_thread_stop(struct thread_local_inits_st *locals)
{
/* Can't do much about this */
if (locals == NULL)
@@ -492,6 +494,12 @@ void ossl_init_thread_stop(struct thread_local_inits_st *locals)
ossl_init_thread_stop_cleanup();
}
+void OPENSSL_INIT_thread_stop(void)
+{
+ ossl_init_thread_stop(
+ (struct thread_local_inits_st *)ossl_init_get_thread_local(0));
+}
+
int ossl_init_thread_start(uint64_t opts)
{
struct thread_local_inits_st *locals = ossl_init_get_thread_local(1);