Move engine library over to using the new thread API
[openssl.git] / crypto / engine / eng_int.h
index 0eee211..f6a54d8 100644 (file)
 # define HEADER_ENGINE_INT_H
 
 # include "internal/cryptlib.h"
+# include "internal/threads.h"
 # include <internal/engine.h>
 
 #ifdef  __cplusplus
 extern "C" {
 #endif
 
+extern CRYPTO_RWLOCK *global_engine_lock;
+
 /*
  * If we compile with this symbol defined, then both reference counts in the
  * ENGINE structure will be monitored with a line of output on stderr for
@@ -97,7 +100,7 @@ extern "C" {
 /*
  * Any code that will need cleanup operations should use these functions to
  * register callbacks. ENGINE_cleanup() will call all registered callbacks in
- * order. NB: both the "add" functions assume CRYPTO_LOCK_ENGINE to already be
+ * order. NB: both the "add" functions assume the engine lock to already be
  * held (in "write" mode).
  */
 typedef void (ENGINE_CLEANUP_CB) (void);
@@ -144,7 +147,7 @@ void engine_table_doall(ENGINE_TABLE *table, engine_table_doall_cb *cb,
 /*
  * Internal versions of API functions that have control over locking. These
  * are used between C files when functionality needs to be shared but the
- * caller may already be controlling of the CRYPTO_LOCK_ENGINE lock.
+ * caller may already be controlling of the engine lock.
  */
 int engine_unlocked_init(ENGINE *e);
 int engine_unlocked_finish(ENGINE *e, int unlock_for_handlers);
@@ -167,6 +170,10 @@ void engine_set_all_null(ENGINE *e);
 void engine_pkey_meths_free(ENGINE *e);
 void engine_pkey_asn1_meths_free(ENGINE *e);
 
+/* Once initialisation function */
+extern CRYPTO_ONCE engine_lock_init;
+void do_engine_lock_init(void);
+
 /*
  * This is a structure for storing implementations of various crypto
  * algorithms and functions.