blob: 3ed9ade2f385dbfa1d13450f5c9cc7cdba9c8a84 [file] [log] [blame]
<assertions>
<assertion id="1" tag="ref:XSH6:35477:35478">
The function
int pthread_spin_init(pthread_spinlock_t *lock, int pshared);
shall allocate any resources required to use the spin lock
referenced by lock and initialize the lock to an unlocked state.
</assertion>
<assertion id="2" tag="ref:XSH6:35479:35487 pt:TSH">
If the Thread Process-Shared Synchronization option is supported and the value of pshared is
PTHREAD_PROCESS_SHARED, the implementation shall permit the spin lock to be operated
upon by any thread that has access to the memory where the spin lock is allocated, even if it
is allocated in memory that is shared by multiple processes.
If the Thread Process-Shared Synchronization option is supported and the value of pshared is
PTHREAD_PROCESS_PRIVATE, or if the option is not supported, the spin lock shall only be
operated upon by threads created within the same process as the thread that initialized the
spinlock. If threads of differing processes attempt to operate on such a spin lock, the
behavior is undefined.
</assertion>
<assertion id="3" tag="ref:XSH6:35496:35497">
Upon successful completion, these functions shall return zero; otherwise, an error number shall
be returned to indicate the error.
</assertion>
<assertion id="4" tag="ref:XSH6:35499:35502">
This function may fail if:
-[EBUSY] The implementation has detected an attempt to initialize or destroy a spin
lock while it is in use (for example, while being used in a pthread_spin_lock( )
by another thread.
-[EINVAL] The value specified by lock is invalid.
It shall fail if:
-[EAGAIN] The system lacks the necessary resources to initialize another spin lock.
-[ENOMEM] Insufficient memory exists to initialize the lock.
These functions shall not return an error code of EINTR.
</assertion>
</assertions>