1<assertions>
2  <assertion id="1" tag="ref:XSH6:34497:34499">
3   The function
4
5   int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type);
6
7  Sets the mutex 'type' attribute.  This attribute is set in the 'type' parameter to
8  these functions.  The default value is PTHREAD_MUTEX_DEFAULT.
9
10  </assertion>
11  <assertion id="2" tag="ref:XSH6:34503:34506">
12  PTHREAD_MUTEX_NORMAL
13
14  This type of mutex doesn't detect deadlock.  So a thread attempting to relock this mutex
15  without unlocking it first will deadllock.  Attempting to unlock a mutex locked by a
16  different thread results in undefined behavior.  Attemping to unlock an unlocked mutex
17  results in undefined behavior.
18  </assertion>
19  <assertion id="3" tag="ref:XSH6:34507:i34511">
20  PTHREAD_MUTEX_ERRORCHECK
21
22  Provides errorchecking.  A thread attempting to relock this mutex without unlocking it
23  first will return with an error.  A thread attempting to unlock a mutex which another
24  thread has locked will return with an error.  A thread attempting to unlock an unlocked
25  mutex will return with an error.
26  </assertion>
27  <assertion id="5" tag="ref:XSH6:34520:34525">
28  PTHREAD_MUTEX_DEFAULT
29
30  Attempting to recursively lock a mutex of this type will result in undefined behavior.
31  Attempting to unlock a mutex of this type which was not locked by the calling thread
32  results in undefined behavior.  Attempting to unlock a mutex of this type which is
33  locked results in undefined behavior.  An implementation may map this mutex to one of
34  the other mutex types.
35  </assertion>
36  <assertion id="6" tag="ref:XSH6:34526:34529">
37  It returns 0 upon success.
38  </assertion>
39  <assertion id="7" tag="ref:XSH6:34532:34537">
40  It shall fail if:
41
42  [EINVAL] - The value 'type' is invalid.
43
44  It may fail if:
45
46  [EINVAL] - The value specified by 'attr' is invalid.
47
48  It shall not return an error code of [EINTR].
49  </assertion>
50</assertions>
51