| <assertions> |
| <assertion id="1" tag="ref:XSH6:33638:33640"> |
| The function |
| |
| int pthread_mutex_init(pthread_mutex_t *restrict mutex, |
| const pthread_mutexattr_t *restrict attr); |
| |
| pthread_mutex_t = PHTREAD_MUTEX_INITIALIZER |
| |
| initializes a mutex referenced by 'mutex' with attributes specified by |
| 'attr'. If 'attr' is NULL, the default mutex attributes are used. The |
| effect shall be the same as passing the address of a default mutex attributes |
| object. |
| </assertion> |
| <assertion id="2" tag="ref:XSH6:33640:33645"> |
| Upon successful initialization, the state of the mutex becomes initialized |
| and unlocked. Attempting to initialize an already initialized mutex |
| results in undefined behavior. |
| </assertion> |
| <assertion id="3" tag="ref:XSH6:33646:33649"> |
| In cases where default mutex attributes are appropriate, the macro |
| PTHREAD_MUTEX_INITIALIZER can be used to intiailize mutexes that are |
| statically allocated. The effect shall be equivilant to dynamic |
| initialization by a call to pthread_mutex_init() with paramter 'attr' |
| specified as NULL, except that no error checks are performed. |
| </assertion> |
| <assertion id="4" tag="ref:XSH6:33651:33651"> |
| Upon success, it returns a 0; |
| </assertion> |
| <assertion id="5" tag="ref:XSH6:33662:33671"> |
| It SHALL fail if: |
| |
| -[EAGAIN] The system lacked the neccessary resources (other than memory) |
| to initialize another mutex. |
| -[ENOMEM] Insufficient memory exists to initialize the mutex. |
| -[EPERM] The caller does not have the privilage to perform the operation. |
| |
| It MAY fail if: |
| |
| -[EBUSY] The implementation has detected an attempt to reinitialize the |
| object referenced by 'mutex', a previously initialized, but not yet |
| destroyed, mutex. |
| -[EINVAL] The value specified by 'attr' is invalid. |
| |
| It shall not return [EINTR] |
| </assertion> |
| </assertions> |