.\" $OpenBSD: CRYPTO_lock.3,v 1.2 2024/03/04 09:30:43 tb Exp $ .\" OpenSSL doc/crypto/threads.pod fb552ac6 Sep 30 23:43:01 2009 +0000 .\" .\" Copyright (c) 2019 Ingo Schwarze .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .Dd $Mdocdate: March 4 2024 $ .Dt CRYPTO_LOCK 3 .Os .Sh NAME .Nm CRYPTO_lock , .Nm CRYPTO_w_lock , .Nm CRYPTO_w_unlock , .Nm CRYPTO_r_lock , .Nm CRYPTO_r_unlock , .Nm CRYPTO_add .Nd thread support .Sh SYNOPSIS .In openssl/crypto.h .Ft void .Fo CRYPTO_lock .Fa "int mode" .Fa "int type" .Fa "const char *file" .Fa "int line" .Fc .Ft int .Fo CRYPTO_add .Fa "int *p" .Fa "int amount" .Fa "int type" .Fc .Bd -literal #define CRYPTO_w_lock(type) \e CRYPTO_lock(CRYPTO_LOCK|CRYPTO_WRITE, type, __FILE__, __LINE__) #define CRYPTO_w_unlock(type) \e CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE, type, __FILE__, __LINE__) #define CRYPTO_r_lock(type) \e CRYPTO_lock(CRYPTO_LOCK|CRYPTO_READ, type, __FILE__, __LINE__) #define CRYPTO_r_unlock(type) \e CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_READ, type, __FILE__, __LINE__) .Ed .Sh DESCRIPTION These functions are obsolete. .Fn CRYPTO_lock locks or unlocks a mutex lock. .Pp .Fa mode is a bitfield describing what should be done with the lock. For each call, either .Dv CRYPTO_LOCK or .Dv CRYPTO_UNLOCK must be included. In the LibreSSL implementation, .Dv CRYPTO_READ and .Dv CRYPTO_WRITE are ignored. .Pp .Fa type is a number in the range 0 <= .Fa type No < Dv CRYPTO_NUM_LOCKS identifying a particular lock. Currently, the value of .Dv CRYPTO_NUM_LOCKS is 41. .Pp The .Ar file and .Ar line arguments are ignored. .Pp In the LibreSSL implementation, .Fn CRYPTO_lock is a wrapper around .Xr pthread_mutex_lock 3 and .Xr pthread_mutex_unlock 3 . .Pp .Fn CRYPTO_add locks the lock number .Fa type , adds .Fa amount to .Pf * Fa p , and unlocks the lock number .Fa type again. .Sh RETURN VALUES .Fn CRYPTO_add returns the new value of .Pf * Fa p . .Sh SEE ALSO .Xr crypto 3 .Sh HISTORY .Fn CRYPTO_lock , .Fn CRYPTO_w_lock , .Fn CRYPTO_w_unlock , .Fn CRYPTO_r_lock , and .Fn CRYPTO_r_unlock first appeared in SSLeay 0.6.0. .Fn CRYPTO_add first appeared in SSLeay 0.6.2. These functions have been available since .Ox 2.4 .