/openssl/crypto/thread/ |
H A D | arch.c | 51 if (thread == NULL) in ossl_crypto_thread_native_join() 54 ossl_crypto_mutex_lock(thread->statelock); in ossl_crypto_thread_native_join() 57 ossl_crypto_condvar_wait(thread->condvar, thread->statelock); in ossl_crypto_thread_native_join() 65 ossl_crypto_condvar_wait(thread->condvar, thread->statelock); in ossl_crypto_thread_native_join() 70 ossl_crypto_mutex_unlock(thread->statelock); in ossl_crypto_thread_native_join() 75 ossl_crypto_mutex_lock(thread->statelock); in ossl_crypto_thread_native_join() 86 ossl_crypto_condvar_signal(thread->condvar); in ossl_crypto_thread_native_join() 87 ossl_crypto_mutex_unlock(thread->statelock); in ossl_crypto_thread_native_join() 90 *retval = thread->retval; in ossl_crypto_thread_native_join() 94 ossl_crypto_mutex_lock(thread->statelock); in ossl_crypto_thread_native_join() [all …]
|
H A D | internal.c | 43 CRYPTO_THREAD *thread; in ossl_crypto_thread_start() local 60 thread = ossl_crypto_thread_native_start(start, data, 1); in ossl_crypto_thread_start() 61 if (thread == NULL) { in ossl_crypto_thread_start() 67 thread->ctx = ctx; in ossl_crypto_thread_start() 70 return (void *) thread; in ossl_crypto_thread_start()
|
H A D | build.info | 7 IF[{- !$disabled{'thread-pool'} -}]
|
/openssl/crypto/thread/arch/ |
H A D | thread_posix.c | 20 CRYPTO_THREAD *thread; in thread_start_thunk() local 23 thread = (CRYPTO_THREAD *)vthread; in thread_start_thunk() 25 ret = thread->routine(thread->data); in thread_start_thunk() 26 ossl_crypto_mutex_lock(thread->statelock); in thread_start_thunk() 28 thread->retval = ret; in thread_start_thunk() 30 ossl_crypto_mutex_unlock(thread->statelock); in thread_start_thunk() 46 if (!thread->joinable) in ossl_crypto_thread_native_spawn() 54 thread->handle = handle; in ossl_crypto_thread_native_spawn() 58 thread->handle = NULL; in ossl_crypto_thread_native_spawn() 68 if (thread == NULL || thread->handle == NULL) in ossl_crypto_thread_native_perform_join() [all …]
|
H A D | thread_win.c | 18 CRYPTO_THREAD *thread; in thread_start_thunk() local 21 thread = (CRYPTO_THREAD *)vthread; in thread_start_thunk() 23 thread->thread_id = GetCurrentThreadId(); in thread_start_thunk() 25 ret = thread->routine(thread->data); in thread_start_thunk() 26 ossl_crypto_mutex_lock(thread->statelock); in thread_start_thunk() 28 thread->retval = ret; in thread_start_thunk() 29 ossl_crypto_condvar_signal(thread->condvar); in thread_start_thunk() 47 thread->handle = handle; in ossl_crypto_thread_native_spawn() 51 thread->handle = NULL; in ossl_crypto_thread_native_spawn() 61 if (thread == NULL || thread->handle == NULL) in ossl_crypto_thread_native_perform_join() [all …]
|
H A D | thread_none.c | 14 int ossl_crypto_thread_native_spawn(CRYPTO_THREAD *thread) in ossl_crypto_thread_native_spawn() argument 19 int ossl_crypto_thread_native_perform_join(CRYPTO_THREAD *thread, CRYPTO_THREAD_RETVAL *retval) in ossl_crypto_thread_native_perform_join() argument 29 int ossl_crypto_thread_native_is_self(CRYPTO_THREAD *thread) in ossl_crypto_thread_native_is_self() argument
|
/openssl/doc/designs/ |
H A D | thread-api.md | 13 scheduled on the internal thread pool. 19 A thread pool is managed on a per-`OSSL_LIB_CTX` basis. 32 * Set the maximum number of threads to be used by the thread pool. 35 * threads and existing threads in the thread pool will be torn down. 46 * thread pool. If thread pooling is disabled or not available, returns 0. 67 /* Is thread pool functionality supported at all? */ 85 A build option `thread-pool`/`no-thread-pool` will be introduced which allows 86 thread pool functionality to be compiled out. `no-thread-pool` implies 87 `no-default-thread-pool`. 89 A build option `default-thread-pool`/`no-default-thread-pool` will be introduced [all …]
|
/openssl/test/ |
H A D | threadstest.h | 27 static int wait_for_thread(thread_t thread) in wait_for_thread() argument 52 static int wait_for_thread(thread_t thread) in wait_for_thread() argument 54 return WaitForSingleObject(thread, INFINITE) == 0; in wait_for_thread() 77 static int wait_for_thread(thread_t thread) in wait_for_thread() argument 79 return pthread_join(thread, NULL) == 0; in wait_for_thread()
|
H A D | threadstest_fips.c | 30 thread_t thread; in test_fips_rand_leak() local 34 if (!TEST_true(run_thread(&thread, thread_fips_rand_fetch))) in test_fips_rand_leak() 36 if (!TEST_true(wait_for_thread(thread))) in test_fips_rand_leak()
|
/openssl/doc/man3/ |
H A D | OSSL_ERR_STATE_save.pod | 20 These functions save and restore the error state from the thread 24 be used when saving and restoring thread error state. 26 OSSL_ERR_STATE_save() saves the thread error state to I<es>. It 27 subsequently clears the thread error state. Any previously saved 32 to I<es> and removed from the thread error state. However, the most recent 38 effect.) If there is no marked ERR in the thread local error state, all ERR 43 saved state I<es> to the thread error state. Existing entries in 44 the thread error state are not affected if there is enough space 46 entries is duplicated on adding to the thread state. 62 over any allocated data from the thread error state. [all …]
|
H A D | CRYPTO_THREAD_run_once.pod | 12 OSSL_THREAD_SUPPORT_FLAG_DEFAULT_SPAWN - OpenSSL thread support 66 In particular, this can be used to allocate locks in a thread-safe manner, 152 thread pool. If the argument is 0, thread pooling is disabled. OpenSSL will 153 not create any threads and existing threads in the thread pool will be torn 161 OSSL_get_thread_support_flags() determines what thread pool functionality 164 thread pool functionality is available, and 167 available, therefore both of these flags must be set for thread pool 186 to be used by the thread pool. If thread pooling is disabled or not available, 207 You can find out if OpenSSL was configured with thread support: 211 /* thread support enabled */ [all …]
|
H A D | RAND_get0_primary.pod | 27 The I<public> and I<private> DRBG are thread-local instances, which are used 53 It is not thread-safe to access the I<primary> DRBG instance. 55 they are thread-local. Note however, that changes to these two instances 56 apply only to the current thread. 71 The two set functions, operate on the current thread. If you want to 72 use the same random number generator across all threads, each thread
|
H A D | OPENSSL_init_crypto.pod | 34 Additionally some resources are allocated on a per thread basis (if the 36 thread closing. 212 called after deinitialisation of resources local to a thread, but before other 217 with the current thread for the given OSSL_LIB_CTX B<ctx>. The B<ctx> parameter 221 the thread exits as long as the OSSL_LIB_CTX has not been freed before the thread 223 automatically for the current thread (but not any other threads that may have 229 resources are cleaned up on library exit) except if thread local resources 256 Resources local to a thread are deallocated automatically when the thread exits 262 directly via a call to OPENSSL_thread_stop() on each thread. Similarly this 265 thread. Additionally if OpenSSL is loaded dynamically via LoadLibrary() and the [all …]
|
H A D | EVP_set_default_properties.pod | 47 thread safe. They are intended to be called only during the initialisation 50 EVP_get1_default_properties() is not thread safe. The application must ensure 52 being modified by a different thread.
|
H A D | ASYNC_start_job.pod | 49 each thread that will initiate asynchronous jobs. Before 50 user code exits per-thread resources need to be cleaned up. This will normally 53 outstanding for the thread when ASYNC_cleanup_thread() is called. Failing to 94 When restarting a job ASYNC_start_job() B<must> be called from the same thread 105 At any one time there can be a maximum of one job actively running per thread 163 stack memory such as mmap, or using stack memory from the current thread. 244 * Create a way to inform the calling thread when this job is ready 275 * method. The main thread will wait until pipefds[0] is ready 276 * for reading before returning control to this thread.
|
H A D | BN_BLINDING_new.pod | 65 structure is owned by the current thread. This is to help users 68 BN_BLINDING_set_current_thread() sets the current thread as the 98 BN_BLINDING_is_current_thread() returns 1 if the current thread owns
|
H A D | ERR_get_error.pod | 54 ERR_get_error() returns the earliest error code from the thread's error 58 ERR_peek_error() returns the earliest error code from the thread's 61 ERR_peek_last_error() returns the latest error code from the thread's
|
/openssl/doc/internal/man3/ |
H A D | ossl_init_thread_deregister.pod | 8 - internal thread routines 23 Thread aware code may be informed about when a thread is stopping, typically to 29 Thread aware code registers a "stop handler" for each new thread that it uses. 30 Typically, when a new thread is being used, code will add a new value to some 31 thread local variable and then register a stop handler. When the thread is 32 stopping the stop handler is called (while on that thread) and the code can 33 clean up the value stored in the thread local variable. 45 This will deregister all stop handlers (no matter which thread they were
|
H A D | ossl_rcu_lock_new.pod | 93 ossl_synchronize_rcu() blocks the calling thread until all read side 95 the write side thread is safe to free. 101 thread which enqueued the callback will be the thread which executes the 131 You can find out if OpenSSL was configured with thread support: 135 /* thread support enabled */ 137 /* no thread support */
|
/openssl/include/internal/ |
H A D | thread_arch.h | 118 int ossl_crypto_thread_native_spawn(CRYPTO_THREAD *thread); 119 int ossl_crypto_thread_native_join(CRYPTO_THREAD *thread, 121 int ossl_crypto_thread_native_perform_join(CRYPTO_THREAD *thread, 124 int ossl_crypto_thread_native_is_self(CRYPTO_THREAD *thread); 125 int ossl_crypto_thread_native_clean(CRYPTO_THREAD *thread);
|
/openssl/doc/designs/quic-design/ |
H A D | quic-thread-assist.md | 4 In thread assisted mode, we create a background thread to ensure that periodic 26 set calls, but the combination of the two would not be safe if the assist thread 38 assist thread creation). 43 It would also only be required for applications which want to use thread 50 - **2. Handshake layer always belongs to the application thread.** 52 In this model, the handshake layer “belongs” to the application thread 53 and the assist thread is never allowed to touch it: 58 - The assist thread performs a reduced tick operation which does everything 85 - **3. Handshake layer belongs to the assist thread after connection begins.** 89 thread and may not be touched further. We would need to block all API calls [all …]
|
H A D | error-handling.md | 14 The error stacks are thread-local. Libssl API calls from separate threads 18 immediately after the API call on the same thread. There is no such thing as 29 The error stack access is not under a lock (because it is thread-local). 42 We can assume the internal assistance thread is well-behaving in regards 54 they are left on the error stack of the thread that called SSL_write() 66 Permanent errors happening within the assist thread, within SSL_tick() 74 for errors happening in the internal assistance thread. When a permanent error 80 are copied to the thread local error stack. They are always kept on 94 Multi-stream-multi-thread mode 98 multi-stream-multi-thread mode as the error stack entries are always
|
/openssl/doc/man7/ |
H A D | openssl-threads.pod | 5 openssl-threads - Overview of thread safety in OpenSSL 9 In this man page, we use the term B<thread-safe> to indicate that an 18 all OpenSSL objects are thread-safe. 23 One major use of the OpenSSL thread API is to implement reference counting. 45 Get methods are often thread-safe as long as the ownership requirements are 47 Set methods, or modifying shared objects, are generally not thread-safe 50 Objects are thread-safe 59 Another instance of thread-safety is when updates to an object's 63 In all cases, however, it is generally not safe for one thread to 65 while another thread is using that object, such as verifying a signature. [all …]
|
H A D | EVP_RAND.pod | 42 Multiple DRBG instances which are accessed only by a single thread provide 80 DRBG are created per thread and accessed through thread-local storage. 83 the thread-local <public> and <private> DRBG instance, respectively. 105 It is I<not> thread-safe to access the <primary> DRBG directly via the 107 The <public> and <private> DRBG are thread-local, i.e. there is an 108 instance of each per thread. So they can safely be accessed without 113 Note that it is not allowed to store a pointer to one of the thread-local 118 because they are intended to be used by a single thread. 121 thread. Using the <primary> DRBG as entropy source for multiple DRBG 122 instances on different threads is thread-safe, because the DRBG instance [all …]
|
/openssl/.github/workflows/ |
H A D | run-checker-ci.yml | 36 no-thread-pool, 37 no-default-thread-pool,
|