PTHREAD_RWLOCK_TIMEDWRLOCK(3P)OSIX Programmer's ManuPaTlHREAD_RWLOCK_TIMEDWRLOCK(3)



PPRROOLLOOGG
       This manual page is part of the POSIX Programmer's Manual.  The OS
       implementation of this interface may differ (consult the corresponding
       OS manual page for details of OS behavior), or the interface may not be
       implemented on OS.

NNAAMMEE
       pthread_rwlock_timedwrlock -- lock a read-write lock for writing

SSYYNNOOPPSSIISS
       #include <pthread.h>
       #include <time.h>

       int pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict _r_w_l_o_c_k,
           const struct timespec *restrict _a_b_s_t_i_m_e);

DDEESSCCRRIIPPTTIIOONN
       The _p_t_h_r_e_a_d___r_w_l_o_c_k___t_i_m_e_d_w_r_l_o_c_k() function shall apply a write lock to
       the read-write lock referenced by _r_w_l_o_c_k as in the
       _p_t_h_r_e_a_d___r_w_l_o_c_k___w_r_l_o_c_k() function. However, if the lock cannot be
       acquired without waiting for other threads to unlock the lock, this
       wait shall be terminated when the specified timeout expires. The
       timeout shall expire when the absolute time specified by _a_b_s_t_i_m_e
       passes, as measured by the clock on which timeouts are based (that is,
       when the value of that clock equals or exceeds _a_b_s_t_i_m_e), or if the
       absolute time specified by _a_b_s_t_i_m_e has already been passed at the time
       of the call.

       The timeout shall be based on the CLOCK_REALTIME clock.  The resolution
       of the timeout shall be the resolution of the CLOCK_REALTIME clock. The
       ttiimmeessppeecc data type is defined in the _<_t_i_m_e_._h_> header. Under no
       circumstances shall the function fail with a timeout if the lock can be
       acquired immediately. The validity of the _a_b_s_t_i_m_e parameter need not be
       checked if the lock can be immediately acquired.

       If a signal that causes a signal handler to be executed is delivered to
       a thread blocked on a read-write lock via a call to
       _p_t_h_r_e_a_d___r_w_l_o_c_k___t_i_m_e_d_w_r_l_o_c_k(), upon return from the signal handler the
       thread shall resume waiting for the lock as if it was not interrupted.

       The calling thread may deadlock if at the time the call is made it
       holds the read-write lock. The results are undefined if this function
       is called with an uninitialized read-write lock.

RREETTUURRNN VVAALLUUEE
       The _p_t_h_r_e_a_d___r_w_l_o_c_k___t_i_m_e_d_w_r_l_o_c_k() function shall return zero if the lock
       for writing on the read-write lock object referenced by _r_w_l_o_c_k is
       acquired. Otherwise, an error number shall be returned to indicate the
       error.

EERRRROORRSS
       The _p_t_h_r_e_a_d___r_w_l_o_c_k___t_i_m_e_d_w_r_l_o_c_k() function shall fail if:

       EETTIIMMEEDDOOUUTT
              The lock could not be acquired before the specified timeout
              expired.

       The _p_t_h_r_e_a_d___r_w_l_o_c_k___t_i_m_e_d_w_r_l_o_c_k() function may fail if:

       EEDDEEAADDLLKK
              A deadlock condition was detected or the calling thread already
              holds the _r_w_l_o_c_k.

       EEIINNVVAALL The _a_b_s_t_i_m_e nanosecond value is less than zero or greater than
              or equal to 1000 million.

       This function shall not return an error code of [[EEIINNTTRR]].

       _T_h_e _f_o_l_l_o_w_i_n_g _s_e_c_t_i_o_n_s _a_r_e _i_n_f_o_r_m_a_t_i_v_e_.

EEXXAAMMPPLLEESS
       None.

AAPPPPLLIICCAATTIIOONN UUSSAAGGEE
       Applications using this function may be subject to priority inversion,
       as discussed in the Base Definitions volume of POSIX.1-2017, _S_e_c_t_i_o_n
       _3_._2_9_1, _P_r_i_o_r_i_t_y _I_n_v_e_r_s_i_o_n.

RRAATTIIOONNAALLEE
       If an implementation detects that the value specified by the _r_w_l_o_c_k
       argument to _p_t_h_r_e_a_d___r_w_l_o_c_k___t_i_m_e_d_w_r_l_o_c_k() does not refer to an
       initialized read-write lock object, it is recommended that the function
       should fail and report an [[EEIINNVVAALL]] error.

FFUUTTUURREE DDIIRREECCTTIIOONNSS
       None.

SSEEEE AALLSSOO
       _p_t_h_r_e_a_d___r_w_l_o_c_k___d_e_s_t_r_o_y(), _p_t_h_r_e_a_d___r_w_l_o_c_k___r_d_l_o_c_k(),
       _p_t_h_r_e_a_d___r_w_l_o_c_k___t_i_m_e_d_r_d_l_o_c_k(), _p_t_h_r_e_a_d___r_w_l_o_c_k___t_r_y_w_r_l_o_c_k(),
       _p_t_h_r_e_a_d___r_w_l_o_c_k___u_n_l_o_c_k()

       The Base Definitions volume of POSIX.1-2017, _S_e_c_t_i_o_n _3_._2_9_1, _P_r_i_o_r_i_t_y
       _I_n_v_e_r_s_i_o_n, _S_e_c_t_i_o_n _4_._1_2, _M_e_m_o_r_y _S_y_n_c_h_r_o_n_i_z_a_t_i_o_n, <<pptthhrreeaadd..hh>>, <<ttiimmee..hh>>

CCOOPPYYRRIIGGHHTT
       Portions of this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1-2017, Standard for Information Technology --
       Portable Operating System Interface (POSIX), The Open Group Base
       Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by the
       Institute of Electrical and Electronics Engineers, Inc and The Open
       Group.  In the event of any discrepancy between this version and the
       original IEEE and The Open Group Standard, the original IEEE and The
       Open Group Standard is the referee document. The original Standard can
       be obtained online at http://www.opengroup.org/unix/online.html .

       Any typographical or formatting errors that appear in this page are
       most likely to have been introduced during the conversion of the source
       files to man page format. To report such errors, see
       https://www.kernel.org/doc/man-pages/reporting_bugs.html .



IEEE/The Open Group                  2017        PTHREAD_RWLOCK_TIMEDWRLOCK(3)
