MTX(3) | Library Functions Manual | MTX(3) |
mtx
—
#include <threads.h>
void
mtx_destroy
(mtx_t
*mtx);
int
mtx_init
(mtx_t
*mtx, int
type);
int
mtx_lock
(mtx_t
*mtx);
int
mtx_timedlock
(mtx_t
*__restrict mtx, const
struct timespec *__restrict ts);
int
mtx_trylock
(mtx_t
*mtx);
int
mtx_unlock
(mtx_t
*mtx);
mtx_destroy
() function releases the resources of
mtx. It is not allowed to block the same
mtx during the mtx_destroy
()
call.
The mtx_init
() function initialized the
mtx object uniquely identificable with the
type properties. The allowed values of
type are as follows:
Type | Description |
mtx_plain |
basic mutex |
mtx_timed |
mutex with timeout support |
mtx_plain
|
mtx_recursive |
basic recursive mutex |
mtx_timed
|
mtx_recursive |
recursive mutex with timeout support |
The underlying NetBSD implementation of
mutex types does not distinguish between mtx_plain
and mtx_timed
, however portable code must keep the
distinction.
The mtx_lock
() function locks the
mtx object. It is required to never lock the same
mtx object without the
mtx_recursive
property multiple times. If the
mtx object is already locked by another thread, the
caller of mtx_lock blocks until the lock becomes
available.
The mtx_timedlock
() function tries to lock
the mtx object. In case of blocked resource by another
thread, this call blocks for the specified timeout in the
ts argument. The timeout argument is
TIME_UTC
based time of
timespec
type. It is required to never lock the same
mtx object without the
mtx_recursive
property multiple times. In portable
code, a mtx object with the
mtx_recursive
property must be used in such a
case.
The mtx_trylock
() function call attempts
to lock the mtx object. This function does not block
if another thread already locked the mtx object, but
immediately returns indicating proper status.
The mtx_unlock
() function unlocks the
mtx object. This call must be preceded with a matching
mtx_lock
() call in the same thread.
mtx_destroy
() function returns no value.
The mtx_init
() function returns
thrd_success
on success or
thrd_error
on failure.
The mtx_lock
() function returns
thrd_success
on success or
thrd_error
on failure.
The mtx_lock
() function returns
thrd_success
on success, otherwise
thrd_timedout
to indicate that system time has
reached or exceeded the time specified in ts
, or
thrd_error
on failure.
The mtx_trylock
() function returns
thrd_success
on success, otherwise
thrd_timedout
to indicate that
mtx object is already locked, or
thrd_error
on failure.
The mtx_unlock
() function returns
thrd_success
on success, otherwise
thrd_timedout
to indicate that
mtx object is already locked, or
thrd_error
on failure.
mtx
interface conforms to ISO/IEC
9899:2011 (“ISO C11”).
October 16, 2016 | NetBSD 9.2 |