177 lines
3.9 KiB
Groff
177 lines
3.9 KiB
Groff
|
.\" $OpenBSD: CRYPTO_lock.3,v 1.1 2019/03/10 15:00:34 schwarze Exp $
|
||
|
.\" OpenSSL doc/crypto/threads.pod fb552ac6 Sep 30 23:43:01 2009 +0000
|
||
|
.\"
|
||
|
.\" Copyright (c) 2019 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
.\"
|
||
|
.\" 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 10 2019 $
|
||
|
.Dt CRYPTO_LOCK 3
|
||
|
.Os
|
||
|
.Sh NAME
|
||
|
.Nm CRYPTO_THREADID_current ,
|
||
|
.Nm CRYPTO_THREADID_cmp ,
|
||
|
.Nm CRYPTO_THREADID_cpy ,
|
||
|
.Nm CRYPTO_THREADID_hash ,
|
||
|
.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_THREADID_current
|
||
|
.Fa "CRYPTO_THREADID *id"
|
||
|
.Fc
|
||
|
.Ft int
|
||
|
.Fo CRYPTO_THREADID_cmp
|
||
|
.Fa "const CRYPTO_THREADID *a"
|
||
|
.Fa "const CRYPTO_THREADID *b"
|
||
|
.Fc
|
||
|
.Ft void
|
||
|
.Fo CRYPTO_THREADID_cpy
|
||
|
.Fa "CRYPTO_THREADID *dest"
|
||
|
.Fa "const CRYPTO_THREADID *src"
|
||
|
.Fc
|
||
|
.Ft unsigned long
|
||
|
.Fo CRYPTO_THREADID_hash
|
||
|
.Fa "const CRYPTO_THREADID *id"
|
||
|
.Fc
|
||
|
.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.
|
||
|
.Pp
|
||
|
.Fn CRYPTO_THREADID_current
|
||
|
stores a unique identifier of the currently executing thread
|
||
|
into the opaque object
|
||
|
.Fa id .
|
||
|
.Pp
|
||
|
.Fn CRYPTO_THREADID_cpy
|
||
|
copies the contents of
|
||
|
.Fa src
|
||
|
to
|
||
|
.Fa dest .
|
||
|
.Pp
|
||
|
.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_THREADID_cmp
|
||
|
returns 0 if
|
||
|
.Fa a
|
||
|
and
|
||
|
.Fa b
|
||
|
refer to the same thread or a non-zero value otherwise.
|
||
|
.Pp
|
||
|
.Fn CRYPTO_THREADID_hash
|
||
|
returns a numeric value usable as a hash-table key.
|
||
|
In the LibreSSL implementation, it is the value returned from
|
||
|
.Xr pthread_self 3
|
||
|
for the thread
|
||
|
.Fa id .
|
||
|
.Pp
|
||
|
.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 .
|
||
|
.Pp
|
||
|
.Fn CRYPTO_THREADID_current ,
|
||
|
.Fn CRYPTO_THREADID_cmp ,
|
||
|
.Fn CRYPTO_THREADID_cpy ,
|
||
|
and
|
||
|
.Fn CRYPTO_THREADID_hash
|
||
|
first appeared in OpenSSL 1.0.0 and have been available since
|
||
|
.Ox 4.9 .
|