#ifndef OPENSSL_HEADER_THREAD_H
#define OPENSSL_HEADER_THREAD_H
#include <sys/types.h>
#include <openssl/base.h>
#if defined(__cplusplus)
extern "C" {
#endif
#if !defined(OPENSSL_THREADS)
typedef struct crypto_mutex_st {
char padding; } CRYPTO_MUTEX;
#elif defined(OPENSSL_WINDOWS)
typedef union crypto_mutex_st {
void *handle;
} CRYPTO_MUTEX;
#elif !defined(__GLIBC__)
#if defined(OPENSSL_OPENBSD)
#include <pthread.h>
#endif
typedef pthread_rwlock_t CRYPTO_MUTEX;
#else
typedef union crypto_mutex_st {
double alignment;
uint8_t padding[3 * sizeof(int) + 5 * sizeof(unsigned) + 16 + 8];
} CRYPTO_MUTEX;
#endif
typedef uint32_t CRYPTO_refcount_t;
OPENSSL_EXPORT int AWSLC_thread_local_clear(void);
OPENSSL_EXPORT int AWSLC_thread_local_shutdown(void);
#define CRYPTO_LOCK 1
#define CRYPTO_UNLOCK 2
#define CRYPTO_READ 4
#define CRYPTO_WRITE 8
OPENSSL_EXPORT OPENSSL_DEPRECATED int CRYPTO_num_locks(void);
OPENSSL_EXPORT OPENSSL_DEPRECATED void CRYPTO_set_locking_callback(
void (*func)(int mode, int lock_num, const char *file, int line));
OPENSSL_EXPORT OPENSSL_DEPRECATED void CRYPTO_set_add_lock_callback(int (*func)(
int *num, int amount, int lock_num, const char *file, int line));
OPENSSL_EXPORT OPENSSL_DEPRECATED void (*CRYPTO_get_locking_callback(void))(
int mode, int lock_num, const char *file, int line);
OPENSSL_EXPORT OPENSSL_DEPRECATED const char *CRYPTO_get_lock_name(
int lock_num);
OPENSSL_EXPORT OPENSSL_DEPRECATED int CRYPTO_THREADID_set_callback(
void (*threadid_func)(CRYPTO_THREADID *threadid));
OPENSSL_EXPORT OPENSSL_DEPRECATED void CRYPTO_THREADID_set_numeric(
CRYPTO_THREADID *id, unsigned long val);
OPENSSL_EXPORT OPENSSL_DEPRECATED void CRYPTO_THREADID_set_pointer(
CRYPTO_THREADID *id, void *ptr);
OPENSSL_EXPORT OPENSSL_DEPRECATED void CRYPTO_THREADID_current(
CRYPTO_THREADID *id);
OPENSSL_EXPORT OPENSSL_DEPRECATED void CRYPTO_set_id_callback(
unsigned long (*func)(void));
typedef struct {
int references;
struct CRYPTO_dynlock_value *data;
} CRYPTO_dynlock;
OPENSSL_EXPORT OPENSSL_DEPRECATED void CRYPTO_set_dynlock_create_callback(
struct CRYPTO_dynlock_value *(*dyn_create_function)(const char *file,
int line));
OPENSSL_EXPORT OPENSSL_DEPRECATED void CRYPTO_set_dynlock_lock_callback(
void (*dyn_lock_function)(int mode, struct CRYPTO_dynlock_value *l,
const char *file, int line));
OPENSSL_EXPORT OPENSSL_DEPRECATED void CRYPTO_set_dynlock_destroy_callback(
void (*dyn_destroy_function)(struct CRYPTO_dynlock_value *l,
const char *file, int line));
OPENSSL_EXPORT OPENSSL_DEPRECATED struct CRYPTO_dynlock_value *(
*CRYPTO_get_dynlock_create_callback(void))(const char *file, int line);
OPENSSL_EXPORT OPENSSL_DEPRECATED void (*CRYPTO_get_dynlock_lock_callback(
void))(int mode, struct CRYPTO_dynlock_value *l, const char *file,
int line);
OPENSSL_EXPORT OPENSSL_DEPRECATED void (*CRYPTO_get_dynlock_destroy_callback(
void))(struct CRYPTO_dynlock_value *l, const char *file, int line);
#if defined(__cplusplus)
} #endif
#endif