blob: 0e5ba196333831b6fd56a01863af151df8712ac1 [file] [log] [blame]
<assertions>
<assertion id="1" tag="ref:XSH6:31824:31826">
The pthread_barrier_wait( ) function shall synchronize participating threads at the barrier
referenced by barrier. The calling thread shall block until the required number of threads have
called pthread_barrier_wait( ) specifying the barrier.
</assertion>
<assertion id="2" tag="ref:XSH6:31827:31831">
When the required number of threads have called pthread_barrier_wait( ) specifying the barrier,
the constant PTHREAD_BARRIER_SERIAL_THREAD shall be returned to one unspecified
thread and zero shall be returned to each of the remaining threads. At this point, the
barrier shall be reset to the state it had as a result of the most recent
pthread_barrier_init( ) function that referenced it.
</assertion>
<assertion id="3" tag="ref:XSH6:35496:35497">
If a signal is delivered to a thread blocked on a barrier, upon return from the signal
handler the thread shall resume waiting at the barrier if the barrier wait has not completed
(that is, if the required number of threads have not arrived at the barrier during the
execution of the signal handler); otherwise, the thread shall continue as normal from the
completed barrier wait. Until the thread in the signal handler returns from it, it is
unspecified whether other threads may proceed past the barrier once they have all reached it.
</assertion>
<assertion id="4" tag="ref:XSH6:31841:31843">
A thread that has blocked on a barrier shall not prevent any unblocked thread that is eligible
to use the same processing resources from eventually making forward progress in its execution.
Eligibility for processing resources shall be determined by the scheduling policy.
</assertion>
<assertion id="5" tag="ref:XSH6:31845:31848">
Upon successful completion, the pthread_barrier_wait( ) function shall return
PTHREAD_BARRIER_SERIAL_THREAD for a single (arbitrary) thread synchronized at the
barrier and zero for each of the other threads. Otherwise, an error number shall be returned to
indicate the error.
</assertion>
<assertion id="6" tag="ref:XSH6:31850:31852">
The pthread_barrier_wait( ) function may fail if:
[EINVAL] The value specified by barrier does not refer to an initialized barrier object.
These functions shall not return an error code of EINTR.
</assertion>
</assertions>